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 accessKey = "eiGuuO5adbR5QTK95a7U";
var secretKey = "SKZV8lics/A5/ZgoZPhH6dhDEFjHjbr0qQV8DwKl";
var endpoint = "https://api-services-connect.tunedglobal.com/api/v3/users/authenticateexternaluser";
var authCode = string.Empty;
var uri = System.Web.HttpUtility.UrlEncode(endpoint, Encoding.UTF8);
var data = new UserProfile
string serializedData = JsonConvert.SerializeObject(data);
byte[] content = Encoding.UTF8.GetBytes("{\"UserId\":32263556,\"Country\":\"TH\"}");
byte[] requestContentHash = md5.ComputeHash(content);
string requestContentBase64String = Convert.ToBase64String(requestContentHash);
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();
string nonce = Guid.NewGuid().ToString("N");
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 int UserId {get;set;}
public string Country {get;set;}