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()); }