Friday, June 15, 2018

Workplace API authentication - Azure function app






#r "Newtonsoft.Json"
using System.Net;
using System.Net.Http;
using Newtonsoft.Json;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
var myObj = new {hub_challenge="hub.challenge" };
var errObj = new {response="noresponse" };

// parse query parameter
string HUB_MODE = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "hub.mode",true) == 0)
.Value;

string VERIFY_TOKEN = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "hub.verify_token", true) == 0)
.Value;

string ACCESS_TOKEN = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "ACCESS_TOKEN", true) == 0)
.Value;

// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();

var jsontoreturn = (HUB_MODE == "subscribe" && VERIFY_TOKEN == "12345")
? JsonConvert.SerializeObject(myObj)
: JsonConvert.SerializeObject(errObj);

return req.CreateResponse(HttpStatusCode.OK, jsontoreturn, "application/json");


}