public async Task <string> GetFiles(string docId)
        {
            var request = new ListObjectsV2Request
            {
                BucketName = s3.GetBucketName(),
                MaxKeys    = 20,
                Prefix     = docId
            };

            var readAreas = securityContext.GetReadAreas().Select(i => i.ToLower());
            var files     = new List <S3FileDTO>();
            var client    = s3.GetClient();
            ListObjectsV2Response response;

            do
            {
                response = await client.ListObjectsV2Async(request);

                foreach (var i in response.S3Objects)
                {
                    foreach (var j in readAreas)
                    {
                        if (i.Key.ToLower().StartsWith(docId + "/" + j))
                        {
                            var metadataRequest = new GetObjectMetadataRequest
                            {
                                BucketName = s3.GetBucketName(),
                                Key        = i.Key
                            };
                            files.Add(new S3FileDTO
                            {
                                Path         = i.Key,
                                LastModified = i.LastModified.ToTimestamp(),
                                Size         = i.Size,
                                // Now saved to metadata, would be better to save these to database, but so it is
                                UserId = (await client.GetObjectMetadataAsync(metadataRequest)).Metadata["x-amz-meta-userid"]
                            });
                            break;
                        }
                    }
                }
                request.ContinuationToken = response.NextContinuationToken;
            } while (response.IsTruncated);
            return(Jsoner.Convert(files));
        }