using System.Collections.Generic;
using System.Security.Cryptography;
using Newtonsoft.Json.Converters;
using System.Threading.Tasks;
using System.Net.Http.Headers;
namespace HelloWorldMvcApp
public class HomeController : Controller
public ActionResult Index()
return View(new SampleViewModel());
public JsonResult GetAnswer(string question)
var authCode = string.Empty;
var accessKey = "W+3SqwgA2gwSxlk/0PAz";
var secretKey = "z1+DK1IEdNycYT6wBuBAaav51lCdnCFzUQJce4bt";
var endpoint = "https://api-delivery-connect.tunedglobal.com/api/v3/play/logplay";
string nonce = Guid.NewGuid().ToString("N");
DateTime epochStart = new DateTime(1970, 01, 01, 0, 0, 0, 0, DateTimeKind.Utc);
TimeSpan timeSpan = DateTime.UtcNow - epochStart;
string requestTimeStamp = Convert.ToUInt64(timeSpan.TotalSeconds).ToString();
var uri = System.Web.HttpUtility.UrlEncode(endpoint, Encoding.UTF8);
var data = new SampleRequestPayload {TrackId=12345,Country="US",LogPlayType="Start",Seconds=0,PlayType="Preview",SourceId=0,Guid="47fb4874-6311-45df-91e3-6faa552b3331"};
string serializedData = JsonConvert.SerializeObject(data);
byte[] content = Encoding.UTF8.GetBytes(serializedData);
byte[] requestContentHash = md5.ComputeHash(content);
string requestContentBase64String = Convert.ToBase64String(requestContentHash);
string signatureRawData = String.Format("{0}{1}{2}{3}{4}{5}", accessKey, "POST", uri, requestContentBase64String, nonce, requestTimeStamp);
byte[] signature = Encoding.UTF8.GetBytes(signatureRawData);
var secretKeyByteArray = Convert.FromBase64String(secretKey);
using (HMACSHA256 sha = new HMACSHA256(secretKeyByteArray))
byte[] signatureBytes = sha.ComputeHash(signature);
string requestSignatureBase64String = Convert.ToBase64String(signatureBytes);
authCode = string.Format("{0}:{1}:{2}:{3}", accessKey, requestSignatureBase64String, nonce, requestTimeStamp);
public class SampleRequestPayload
public int TrackId { get; set; }
public string Country { get; set; }
public string LogPlayType { get; set; }
public int? Seconds { get; set; }
public string PlayType { get; set; }
public int SourceId { get; set; }
public string Guid { get; set; }