-
Notifications
You must be signed in to change notification settings - Fork 1
/
FamarkCloud.cs
47 lines (38 loc) · 1.46 KB
/
FamarkCloud.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
public class FamarkCloud
{
private HttpClient _client;
public string ErrorMessage { get; private set; }
public FamarkCloud()
{
_client = new HttpClient();
_client.BaseAddress = new Uri("https://www.famark.com/Host/api.svc/api/");
}
public async Task<string> PostData(string path, string data, string sessionId)
{
const string contentType = "application/json";
_client.DefaultRequestHeaders.Accept.Clear();
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
if (!string.IsNullOrEmpty(sessionId))
{
_client.DefaultRequestHeaders.Clear();
_client.DefaultRequestHeaders.Add("SessionId", sessionId);
}
StringContent requestData = new StringContent(data, Encoding.UTF8, contentType);
HttpResponseMessage response = await _client.PostAsync(path, requestData);
if (response.IsSuccessStatusCode)
{
return await response.Content.ReadAsStringAsync();
}
IEnumerable<string> headerValues;
ErrorMessage = response.Headers.TryGetValues("errormessage", out headerValues) ? headerValues.FirstOrDefault() : response.ReasonPhrase;
Console.Error.WriteLine(ErrorMessage);
return null;
}
}