Ejemplo n.º 1
0
        public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] StoragePermissionRequest input,
                                              [Blob("menu-photos", FileAccess.Read)] CloudBlobDirectory blobDirectory, TraceWriter log)
        {
            var permissions = SharedAccessBlobPermissions.Read; // default to read permissions

            // if permission was supplied, check if it is a possible value
            if (!string.IsNullOrWhiteSpace(input.Permission))
            {
                if (!Enum.TryParse(input.Permission, out permissions))
                {
                    return(new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent("Invalid value for 'permissions'")
                    });
                }
            }

            log.Info($"**** INFO: Requesting {input.Permission} permissions");

            var container = blobDirectory.Container;

            var sasToken = string.IsNullOrWhiteSpace(input.BlobName) ? GetContainerSasToken(container, permissions) : GetBlobSasToken(container, input.BlobName, permissions);

            return(new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(sasToken)
            });
        }
        public async Task <string> GetContainerWriteSasToken()
        {
            var spr = new StoragePermissionRequest {
                Permission = "Write"
            };

            var request = new HttpRequestMessage(HttpMethod.Post, APIKeys.SASRetrievalUrl);

            var bearerToken = await GetAccessBearerToken();

            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", bearerToken);

            var content = new StringContent(JsonConvert.SerializeObject(spr), Encoding.UTF8, "application/json");

            request.Content = content;

            var response = await webClient.SendAsync(request);

            return(await response.Content.ReadAsStringAsync());
        }