public async Task PublishAsync(string channel, Item item) { var uri = baseUri + "/publish/"; string auth = null; if (authBasicUser != null) { auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(authBasicUser + ":" + authBasicPass)); } else if (authJwtClaim != null) { Dictionary <string, object> claim; if (!authJwtClaim.ContainsKey("exp")) { claim = JsonConvert.DeserializeObject <Dictionary <string, object> >(JsonConvert.SerializeObject(authJwtClaim)); claim["exp"] = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; } else { claim = authJwtClaim; } auth = "Bearer " + JWT.JsonWebToken.Encode(claim, authJwtKey, JWT.JwtHashAlgorithm.HS256); } var i = item.ToDictionary(); i["channel"] = channel; var content = new Dictionary <string, object>(); content["items"] = new List <Dictionary <string, object> >() { i }; HttpContent hc = new ByteArrayContent(Encoding.Default.GetBytes(JsonConvert.SerializeObject(content))); hc.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var httpClient = new HttpClient(); if (auth != null) { httpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(auth); } var response = await httpClient.PostAsync(uri, hc); }
public async Task PublishAsync(string channel, Item item) { var uri = baseUri + "/publish/"; string auth = null; if (authBasicUser != null) { auth = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(authBasicUser + ":" + authBasicPass)); } else if (authJwtClaim != null) { Dictionary<string, object> claim; if (!authJwtClaim.ContainsKey("exp")) { claim = JsonConvert.DeserializeObject<Dictionary<string, object>>(JsonConvert.SerializeObject(authJwtClaim)); claim["exp"] = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; } else { claim = authJwtClaim; } auth = "Bearer " + JWT.JsonWebToken.Encode(claim, authJwtKey, JWT.JwtHashAlgorithm.HS256); } var i = item.ToDictionary(); i["channel"] = channel; var content = new Dictionary<string, object>(); content["items"] = new List<Dictionary<string, object>>() { i }; HttpContent hc = new ByteArrayContent(Encoding.Default.GetBytes(JsonConvert.SerializeObject(content))); hc.Headers.ContentType = new MediaTypeHeaderValue("application/json"); var httpClient = new HttpClient(); if (auth != null) { httpClient.DefaultRequestHeaders.Authorization = AuthenticationHeaderValue.Parse(auth); } var response = await httpClient.PostAsync(uri, hc); }