Pulse7
8/11/2017 - 12:59 AM

New blob trigger, emotion api function

New blob trigger, emotion api function

#r "Microsoft.WindowsAzure.Storage" 
#r "Newtonsoft.Json" 

using Microsoft.WindowsAzure.Storage.Blob;
using Newtonsoft.Json;
using System.Text;

public static async void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{
    log.Info($"C# Blob trigger function Processed blob\n Name:{name} \n ");

    var uri = GetUri(myBlob);
    var analysis = await GetAnalysis(uri);

    log.Info($"results:{analysis}");
}

public static Uri GetUri(CloudBlockBlob blob)
{
    SharedAccessBlobPolicy sasPolicy = new SharedAccessBlobPolicy
    {
        Permissions = SharedAccessBlobPermissions.Read | SharedAccessBlobPermissions.Write,
        SharedAccessStartTime = DateTime.Now.AddMinutes(-15),
        SharedAccessExpiryTime = DateTime.Now.AddMinutes(30)
    };
    var sas=blob.GetSharedAccessSignature(sasPolicy);
    Uri uri = new Uri($"{blob.Uri.ToString()}{sas}");
    return uri;
}

public static async Task<string> GetAnalysis(Uri uri){
    var client = new HttpClient();
    var data = JsonConvert.SerializeObject( new{url=uri.ToString()} );
    var request = new HttpRequestMessage{
        RequestUri = new Uri("https://westus.api.cognitive.microsoft.com/emotion/v1.0/recognize?"),
        Method = HttpMethod.Post
    };
    request.Headers.Add("Ocp-Apim-Subscription-Key","10162aaedfa84fb88401d5ba2e41384c");
    request.Content = new StringContent(data,Encoding.UTF8,"application/json");

    var response = await client.SendAsync(request);
    var result = await response.Content.ReadAsStringAsync();
    return result; 
}
{
  "bindings": [
    {
      "name": "myBlob",
      "type": "blobTrigger",
      "direction": "in",
      "path": "images/{name}",
      "connection": "kmstorage7_STORAGE"
    }
  ],
  "disabled": false
}