Wiki
Clone wikiNumera.LibrisAPI / sample_csharp
Home > API Overview > JSON API > C# Sample
C# Sample
This is a simplified console sample of how to execute the realm.view
action against the staging environment. This sample uses the Newtonsoft JSON libraries.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Security.Cryptography;
using Newtonsoft.Json.Linq;
using System.Net;
public class ApiTester
{
private static DateTime _utc = new DateTime(1970,1,1,0,0,0, DateTimeKind.Utc);
private static string _application_id = "contoso-api";
private static byte[] _key = Encoding.ASCII.GetBytes("472cccd50bfdfbdf87ad8f632e5fadf5");
public static void Main(string[] args)
{
JObject partnerToken = new JObject();
partnerToken.Add("id", _application_id);
partnerToken.Add("r", "dev");
TimeSpan nonceSpan = DateTime.UtcNow.Subtract(_utc);
long nonce = Convert.ToInt64(nonceSpan.TotalSeconds);
partnerToken.Add("n", nonce);
string toSign = _application_id + nonce.ToString() + "view";
string signature = Base64UrlEncode(new HMACSHA256(_key).ComputeHash(Encoding.ASCII.GetBytes(toSign)));
partnerToken.Add("p", signature);
JObject request = new JObject();
request.Add("action", "realm.view");
JObject data = new JObject();
data.Add("partner_token", partnerToken);
data.Add("realm", "dev");
request.Add("data", data);
Console.WriteLine(request.ToString());
using (WebClient client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.Accept, "application/json");
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
client.Encoding = Encoding.UTF8;
string response = client.UploadString("https://stage.bluelibris.com/sdk/v1/realm/view", "POST", request.ToString());
Console.WriteLine(response);
}
}
private static string Base64UrlEncode(byte[] args)
{
string s = Convert.ToBase64String(args);
s = s.Replace('+', '-'); //62nd char
s = s.Replace('/', '_'); //63rd
return s;
}
}
Updated