Create ApiHttpClient
Use Useragent from Assembly.
This commit is contained in:
@ -1,5 +1,4 @@
|
||||
using System.Net.Http.Headers;
|
||||
using CShocker.Devices.Additional;
|
||||
using CShocker.Devices.Additional;
|
||||
using CShocker.Ranges;
|
||||
using CShocker.Shockers;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@ -9,7 +8,6 @@ namespace CShocker.Devices.Abstract;
|
||||
|
||||
public abstract class OpenShockApi : Api
|
||||
{
|
||||
protected readonly HttpClient HttpClient = new();
|
||||
public string Endpoint { get; init; }
|
||||
public string ApiKey { get; init; }
|
||||
private const string DefaultEndpoint = "https://api.shocklink.net";
|
||||
@ -43,21 +41,8 @@ public abstract class OpenShockApi : Api
|
||||
public static List<OpenShockShocker> GetShockers(string apiKey, OpenShockApi api, string apiEndpoint = DefaultEndpoint, ILogger? logger = null)
|
||||
{
|
||||
List<OpenShockShocker> shockers = new();
|
||||
|
||||
HttpClient httpClient = new();
|
||||
HttpRequestMessage requestOwnShockers = new (HttpMethod.Get, $"{apiEndpoint}/1/shockers/own")
|
||||
{
|
||||
Headers =
|
||||
{
|
||||
UserAgent = { new ProductInfoHeaderValue("CShocker", "1") },
|
||||
Accept = { new MediaTypeWithQualityHeaderValue("application/json") }
|
||||
}
|
||||
};
|
||||
requestOwnShockers.Headers.Add("OpenShockToken", apiKey);
|
||||
logger?.Log(LogLevel.Debug, $"Requesting {requestOwnShockers.RequestUri}");
|
||||
HttpResponseMessage ownResponse = httpClient.Send(requestOwnShockers);
|
||||
logger?.Log(!ownResponse.IsSuccessStatusCode ? LogLevel.Error : LogLevel.Debug,
|
||||
$"{requestOwnShockers.RequestUri} response: {ownResponse.StatusCode}");
|
||||
|
||||
HttpResponseMessage ownResponse = ApiHttpClient.MakeAPICall(HttpMethod.Get, $"{apiEndpoint}/1/shockers/own", null, logger, new ValueTuple<string, string>("OpenShockToken", apiKey));
|
||||
if (!ownResponse.IsSuccessStatusCode)
|
||||
return shockers;
|
||||
|
||||
@ -66,23 +51,13 @@ public abstract class OpenShockApi : Api
|
||||
logger?.Log(LogLevel.Debug,ownShockerJson);
|
||||
JObject ownShockerListJObj = JObject.Parse(ownShockerJson);
|
||||
shockers.AddRange(ownShockerListJObj.SelectTokens("$.data..shockers[*]").Select(t =>
|
||||
{
|
||||
return new OpenShockShocker(api, t["name"]!.Value<string>()!, t["id"]!.Value<string>()!, t["rfId"]!.Value<short>(), Enum.Parse<OpenShockShocker.OpenShockModel>(t["model"]!.Value<string>()!), t["createdOn"]!.ToObject<DateTime>(), t["isPaused"]!.Value<bool>());
|
||||
}));
|
||||
new OpenShockShocker(
|
||||
api,
|
||||
t["name"]!.Value<string>()!, t["id"]!.Value<string>()!, t["rfId"]!.Value<short>(),
|
||||
Enum.Parse<OpenShockShocker.OpenShockModel>(t["model"]!.Value<string>()!),
|
||||
t["createdOn"]!.ToObject<DateTime>(), t["isPaused"]!.Value<bool>())));
|
||||
|
||||
HttpRequestMessage requestSharedShockers = new (HttpMethod.Get, $"{apiEndpoint}/1/shockers/shared")
|
||||
{
|
||||
Headers =
|
||||
{
|
||||
UserAgent = { new ProductInfoHeaderValue("CShocker", "1") },
|
||||
Accept = { new MediaTypeWithQualityHeaderValue("application/json") }
|
||||
}
|
||||
};
|
||||
requestSharedShockers.Headers.Add("OpenShockToken", apiKey);
|
||||
logger?.Log(LogLevel.Debug, $"Requesting {requestSharedShockers.RequestUri}");
|
||||
HttpResponseMessage sharedResponse = httpClient.Send(requestSharedShockers);
|
||||
logger?.Log(!sharedResponse.IsSuccessStatusCode ? LogLevel.Error : LogLevel.Debug,
|
||||
$"{requestSharedShockers.RequestUri} response: {sharedResponse.StatusCode}");
|
||||
HttpResponseMessage sharedResponse = ApiHttpClient.MakeAPICall(HttpMethod.Get, $"{apiEndpoint}/1/shockers/shared", null, logger, new ValueTuple<string, string>("OpenShockToken", apiKey));
|
||||
if (!sharedResponse.IsSuccessStatusCode)
|
||||
return shockers;
|
||||
|
||||
@ -90,10 +65,12 @@ public abstract class OpenShockApi : Api
|
||||
string sharedShockerJson = sharedShockerStreamReader.ReadToEnd();
|
||||
logger?.Log(LogLevel.Debug, sharedShockerJson);
|
||||
JObject sharedShockerListJObj = JObject.Parse(sharedShockerJson);
|
||||
shockers.AddRange(sharedShockerListJObj.SelectTokens("$.data..shockers[*]").Select(t =>
|
||||
{
|
||||
return new OpenShockShocker(api, t["name"]!.Value<string>()!, t["id"]!.Value<string>()!, t["rfId"]!.Value<short>(),Enum.Parse<OpenShockShocker.OpenShockModel>(t["model"]!.Value<string>()!), t["createdOn"]!.ToObject<DateTime>(), t["isPaused"]!.Value<bool>());
|
||||
}));
|
||||
shockers.AddRange(sharedShockerListJObj.SelectTokens("$.data..shockers[*]").Select(t =>
|
||||
new OpenShockShocker(
|
||||
api,
|
||||
t["name"]!.Value<string>()!, t["id"]!.Value<string>()!, t["rfId"]!.Value<short>(),
|
||||
Enum.Parse<OpenShockShocker.OpenShockModel>(t["model"]!.Value<string>()!),
|
||||
t["createdOn"]!.ToObject<DateTime>(), t["isPaused"]!.Value<bool>())));
|
||||
return shockers;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user