rename

Alphons van der Heijden <alphons@heijden.com> 6 Nov 2023, 08:38
bb5c2a9b9747c220b8246416fc86a2a7e1e8785e
11 files changed
  • src/Vimexx_API.Api/AuthToken.cs
  • src/Vimexx_API.Api/DNSRecord.cs
  • src/Vimexx_API.Api/GetDnsResponse.cs
  • src/Vimexx_API.Api/Response.cs
  • src/Vimexx_API.Api/SaveDNSResponse.cs
  • src/Vimexx_API.Api/VimexxApi.cs
  • src/Vimexx_API.Api/Vimexx_API.Api.csproj
  • src/Vimexx_API.Api/Vimexx_API.csproj
  • src/Vimexx_API.ConsoleApp.sln
  • src/Vimexx_API.ConsoleApp/Program.cs
  • src/Vimexx_API.ConsoleApp/Vimexx_API.ConsoleApp.csproj
diff --git a/src/Vimexx_API.Api/AuthToken.cs b/src/Vimexx_API.Api/AuthToken.cs
index 6967c18..65c989f 100644
--- a/src/Vimexx_API.Api/AuthToken.cs
+++ b/src/Vimexx_API.Api/AuthToken.cs
@@ -1,12 +1,11 @@

-namespace Vimexx_API.Api
+namespace Vimexx_API;
+
+internal class AuthToken
{
- internal class AuthToken
- {
- public string token_type { get; set; }
- public int expires_in { get; set; }
- public string access_token { get; set; }
- public string refresh_token { get; set; }
- }
+ public string token_type { get; set; }
+ public int expires_in { get; set; }
+ public string access_token { get; set; }
+ public string refresh_token { get; set; }
}
diff --git a/src/Vimexx_API.Api/DNSRecord.cs b/src/Vimexx_API.Api/DNSRecord.cs
index d2e0e85..04516eb 100644
--- a/src/Vimexx_API.Api/DNSRecord.cs
+++ b/src/Vimexx_API.Api/DNSRecord.cs
@@ -1,12 +1,11 @@

-namespace Vimexx_API.Api
+namespace Vimexx_API;
+
+public class DnsRecord
{
- public class DnsRecord
- {
- public string name { get; set; }
- public string type { get; set; }
- public string content { get; set; }
- public object prio { get; set; }
- public object ttl { get; set; }
- }
+ public string name { get; set; }
+ public string type { get; set; }
+ public string content { get; set; }
+ public object prio { get; set; }
+ public object ttl { get; set; }
}
diff --git a/src/Vimexx_API.Api/GetDnsResponse.cs b/src/Vimexx_API.Api/GetDnsResponse.cs
index d8c8a8d..a6e32b1 100644
--- a/src/Vimexx_API.Api/GetDnsResponse.cs
+++ b/src/Vimexx_API.Api/GetDnsResponse.cs
@@ -1,12 +1,11 @@

-namespace Vimexx_API.Api
+namespace Vimexx_API;
+
+public class DnsRecords
{
- public class DnsRecords
- {
- public List<DnsRecord> dns_records { get; set; }
- }
+ public List<DnsRecord> dns_records { get; set; }
+}
- public class GetDNSResponse : Response<DnsRecords>
- {
- }
+public class GetDNSResponse : Response<DnsRecords>
+{
}
diff --git a/src/Vimexx_API.Api/Response.cs b/src/Vimexx_API.Api/Response.cs
index 5517e04..685fc82 100644
--- a/src/Vimexx_API.Api/Response.cs
+++ b/src/Vimexx_API.Api/Response.cs
@@ -1,12 +1,11 @@

-namespace Vimexx_API.Api
+namespace Vimexx_API;
+
+public class Response<T>
{
- public class Response<T>
- {
- public string message { get; set; }
- public bool result { get; set; }
- public T data { get; set; }
+ public string message { get; set; }
+ public bool result { get; set; }
+ public T data { get; set; }
- }
}
diff --git a/src/Vimexx_API.Api/SaveDNSResponse.cs b/src/Vimexx_API.Api/SaveDNSResponse.cs
index 821bbac..e028261 100644
--- a/src/Vimexx_API.Api/SaveDNSResponse.cs
+++ b/src/Vimexx_API.Api/SaveDNSResponse.cs
@@ -1,7 +1,6 @@

-namespace Vimexx_API.Api
+namespace Vimexx_API;
+
+public class SaveDNSResponse : Response<object>
{
- public class SaveDNSResponse : Response<object>
- {
- }
}
diff --git a/src/Vimexx_API.Api/VimexxApi.cs b/src/Vimexx_API.Api/VimexxApi.cs
index 85a7383..afa5c76 100644
--- a/src/Vimexx_API.Api/VimexxApi.cs
+++ b/src/Vimexx_API.Api/VimexxApi.cs
@@ -6,147 +6,146 @@ using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
-namespace Vimexx_API.Api
+namespace Vimexx_API;
+
+public class VimexxApi
{
- public class VimexxApi
- {
- private const string USER_AGENT = "Vimexx-WHMCS api agent .NET core 1.0";
- private const string API_URL = "https://api.vimexx.nl";
- private const string API_VERSION = "8.6.1-release.1";
+ private const string USER_AGENT = "Vimexx-WHMCS api agent .NET core 1.0";
+ private const string API_URL = "https://api.vimexx.nl";
+ private const string API_VERSION = "8.6.1-release.1";
- private string endpoint;
+ private string endpoint;
- private AuthToken token;
+ private AuthToken token;
- private bool DEBUG = false;
+ private bool DEBUG = false;
- async private Task<T> RequestAsync<T>(HttpMethod method, string apiMethod, object data)
- {
- var httpClient = new HttpClient();
+ async private Task<T> RequestAsync<T>(HttpMethod method, string apiMethod, object data)
+ {
+ var httpClient = new HttpClient();
- httpClient.DefaultRequestHeaders.Add("User-Agent", USER_AGENT);
+ httpClient.DefaultRequestHeaders.Add("User-Agent", USER_AGENT);
- httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.token.access_token);
+ httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", this.token.access_token);
- var json = JsonSerializer.Serialize(new { body = data, version = API_VERSION });
+ var json = JsonSerializer.Serialize(new { body = data, version = API_VERSION });
- var request = new HttpRequestMessage(method, this.endpoint + apiMethod)
- {
- Content = new StringContent(json, Encoding.UTF8, "application/json")
- };
-
- var httpResponseMessage = await httpClient.SendAsync(request);
+ var request = new HttpRequestMessage(method, this.endpoint + apiMethod)
+ {
+ Content = new StringContent(json, Encoding.UTF8, "application/json")
+ };
- httpResponseMessage.EnsureSuccessStatusCode();
+ var httpResponseMessage = await httpClient.SendAsync(request);
- if (httpResponseMessage.IsSuccessStatusCode)
- {
- var stream = await httpResponseMessage.Content.ReadAsStreamAsync();
+ httpResponseMessage.EnsureSuccessStatusCode();
- if (DEBUG)
- {
- var sr = new StreamReader(stream);
+ if (httpResponseMessage.IsSuccessStatusCode)
+ {
+ var stream = await httpResponseMessage.Content.ReadAsStreamAsync();
- var jsonResult = await sr.ReadToEndAsync();
+ if (DEBUG)
+ {
+ var sr = new StreamReader(stream);
- Debug.WriteLine(jsonResult);
+ var jsonResult = await sr.ReadToEndAsync();
- return JsonSerializer.Deserialize<T>(jsonResult);
- }
+ Debug.WriteLine(jsonResult);
- return await JsonSerializer.DeserializeAsync<T>(stream);
+ return JsonSerializer.Deserialize<T>(jsonResult);
}
- return default;
+ return await JsonSerializer.DeserializeAsync<T>(stream);
}
- async public Task LoginAsync(string clientId, string clientKey, string username, string password, bool testmodus = false)
- {
- List<KeyValuePair<string, string>> data = new Dictionary<string, string>
- {
- { "grant_type", "password" },
- { "client_id", clientId },
- { "client_secret", clientKey },
- { "username", username },
- { "password", password },
- { "scope", "whmcs-access" }
- }.ToList();
-
- var httpClient = new HttpClient();
+ return default;
+ }
- httpClient.DefaultRequestHeaders.Add("User-Agent", USER_AGENT);
+ async public Task LoginAsync(string clientId, string clientKey, string username, string password, bool testmodus = false)
+ {
+ List<KeyValuePair<string, string>> data = new Dictionary<string, string>
+ {
+ { "grant_type", "password" },
+ { "client_id", clientId },
+ { "client_secret", clientKey },
+ { "username", username },
+ { "password", password },
+ { "scope", "whmcs-access" }
+ }.ToList();
- var req = new HttpRequestMessage(HttpMethod.Post, API_URL + "/auth/token") { Content = new FormUrlEncodedContent(data) };
+ var httpClient = new HttpClient();
- var httpResponseMessage = await httpClient.SendAsync(req);
+ httpClient.DefaultRequestHeaders.Add("User-Agent", USER_AGENT);
- httpResponseMessage.EnsureSuccessStatusCode();
+ var req = new HttpRequestMessage(HttpMethod.Post, API_URL + "/auth/token") { Content = new FormUrlEncodedContent(data) };
- if (httpResponseMessage.IsSuccessStatusCode)
- {
- var stream = await httpResponseMessage.Content.ReadAsStreamAsync();
+ var httpResponseMessage = await httpClient.SendAsync(req);
- this.token = await JsonSerializer.DeserializeAsync<AuthToken>(stream);
- }
+ httpResponseMessage.EnsureSuccessStatusCode();
- if (testmodus)
- this.endpoint = API_URL + "/apitest/v1";
- else
- this.endpoint = API_URL + "/api/v1";
+ if (httpResponseMessage.IsSuccessStatusCode)
+ {
+ var stream = await httpResponseMessage.Content.ReadAsStreamAsync();
+ this.token = await JsonSerializer.DeserializeAsync<AuthToken>(stream);
}
- async public Task<GetDNSResponse> GetDNSAsync(string domainname)
- {
- var args = domainname.Split('.');
+ if (testmodus)
+ this.endpoint = API_URL + "/apitest/v1";
+ else
+ this.endpoint = API_URL + "/api/v1";
- return await RequestAsync<GetDNSResponse>(HttpMethod.Post, "/whmcs/domain/dns", new { sld = args[0], tld = args[1] });
- }
+ }
- async public Task<SaveDNSResponse> SaveDNSAsync(string domainname, List<DnsRecord> dns_records)
- {
- var args = domainname.Split('.');
+ async public Task<GetDNSResponse> GetDNSAsync(string domainname)
+ {
+ var args = domainname.Split('.');
- dns_records.Where(x => x.ttl == null).ToList().ForEach(x => x.ttl = 3600);
- dns_records.Where(x => x.type == "CAA").ToList().ForEach(x => x.ttl = 300);
+ return await RequestAsync<GetDNSResponse>(HttpMethod.Post, "/whmcs/domain/dns", new { sld = args[0], tld = args[1] });
+ }
- return await RequestAsync<SaveDNSResponse>(HttpMethod.Put, "/whmcs/domain/dns", new { sld = args[0], tld = args[1], dns_records });
- }
+ async public Task<SaveDNSResponse> SaveDNSAsync(string domainname, List<DnsRecord> dns_records)
+ {
+ var args = domainname.Split('.');
- async public Task<Response<object>> LetsEncryptAsync(string domainname, List<string> challenges)
- {
- var getdnsresponse = await GetDNSAsync(domainname);
+ dns_records.Where(x => x.ttl == null).ToList().ForEach(x => x.ttl = 3600);
+ dns_records.Where(x => x.type == "CAA").ToList().ForEach(x => x.ttl = 300);
- if (getdnsresponse.result == false)
- return new Response<object>() { result = getdnsresponse.result, message = getdnsresponse.message };
+ return await RequestAsync<SaveDNSResponse>(HttpMethod.Put, "/whmcs/domain/dns", new { sld = args[0], tld = args[1], dns_records });
+ }
- var records = getdnsresponse.data.dns_records.Where(x => !x.name.StartsWith("_acme-challenge.")).ToList();
+ async public Task<Response<object>> LetsEncryptAsync(string domainname, List<string> challenges)
+ {
+ var getdnsresponse = await GetDNSAsync(domainname);
- foreach(var challenge in challenges)
- records.Add(new DnsRecord() { name = "_acme-challenge", content = challenge, type = "TXT", ttl = 300 });
+ if (getdnsresponse.result == false)
+ return new Response<object>() { result = getdnsresponse.result, message = getdnsresponse.message };
- return await SaveDNSAsync(domainname, records);
- }
+ var records = getdnsresponse.data.dns_records.Where(x => !x.name.StartsWith("_acme-challenge.")).ToList();
- async public Task<Response<object>> LetsEncryptAsync(string domainname, string challenge)
- {
- var getdnsresponse = await GetDNSAsync(domainname);
+ foreach(var challenge in challenges)
+ records.Add(new DnsRecord() { name = "_acme-challenge", content = challenge, type = "TXT", ttl = 300 });
- if (getdnsresponse.result == false)
- return new Response<object>() { result = getdnsresponse.result, message = getdnsresponse.message };
+ return await SaveDNSAsync(domainname, records);
+ }
- var records = getdnsresponse.data.dns_records;
+ async public Task<Response<object>> LetsEncryptAsync(string domainname, string challenge)
+ {
+ var getdnsresponse = await GetDNSAsync(domainname);
- // clear all _acme-challenge records
- if (string.IsNullOrWhiteSpace(challenge))
- records = records.Where(x => !x.name.StartsWith("_acme-challenge.")).ToList();
+ if (getdnsresponse.result == false)
+ return new Response<object>() { result = getdnsresponse.result, message = getdnsresponse.message };
- if(!string.IsNullOrWhiteSpace(challenge))
- records.Add(new DnsRecord() { name = "_acme-challenge", content = challenge, type = "TXT", ttl = 300 });
+ var records = getdnsresponse.data.dns_records;
- return await SaveDNSAsync(domainname, records);
- }
+ // clear all _acme-challenge records
+ if (string.IsNullOrWhiteSpace(challenge))
+ records = records.Where(x => !x.name.StartsWith("_acme-challenge.")).ToList();
+ if(!string.IsNullOrWhiteSpace(challenge))
+ records.Add(new DnsRecord() { name = "_acme-challenge", content = challenge, type = "TXT", ttl = 300 });
+ return await SaveDNSAsync(domainname, records);
}
+
+
}
\ No newline at end of file
diff --git a/src/Vimexx_API.Api/Vimexx_API.Api.csproj b/src/Vimexx_API.Api/Vimexx_API.csproj
similarity index 100%
rename from src/Vimexx_API.Api/Vimexx_API.Api.csproj
rename to src/Vimexx_API.Api/Vimexx_API.csproj
diff --git a/src/Vimexx_API.ConsoleApp.sln b/src/Vimexx_API.ConsoleApp.sln
index b178ea2..5cf0c64 100644
--- a/src/Vimexx_API.ConsoleApp.sln
+++ b/src/Vimexx_API.ConsoleApp.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.7.34024.191
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vimexx_API.ConsoleApp", "Vimexx_API.ConsoleApp\Vimexx_API.ConsoleApp.csproj", "{FDE3B72E-BB5C-4746-B1AF-333A2605F69C}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vimexx_API.ConsoleApp", "Vimexx_API.ConsoleApp\Vimexx_API.ConsoleApp.csproj", "{FDE3B72E-BB5C-4746-B1AF-333A2605F69C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Vimexx_API.Api", "Vimexx_API.Api\Vimexx_API.Api.csproj", "{25984D85-DE61-4628-ABF4-70C69ABEE2CF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vimexx_API", "Vimexx_API.Api\Vimexx_API.csproj", "{25984D85-DE61-4628-ABF4-70C69ABEE2CF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/Vimexx_API.ConsoleApp/Program.cs b/src/Vimexx_API.ConsoleApp/Program.cs
index 1bc54d5..2f821d9 100644
--- a/src/Vimexx_API.ConsoleApp/Program.cs
+++ b/src/Vimexx_API.ConsoleApp/Program.cs
@@ -1,5 +1,5 @@

-using Vimexx_API.Api;
+using Vimexx_API;
var api = new VimexxApi();
diff --git a/src/Vimexx_API.ConsoleApp/Vimexx_API.ConsoleApp.csproj b/src/Vimexx_API.ConsoleApp/Vimexx_API.ConsoleApp.csproj
index 011ac43..52e0f2c 100644
--- a/src/Vimexx_API.ConsoleApp/Vimexx_API.ConsoleApp.csproj
+++ b/src/Vimexx_API.ConsoleApp/Vimexx_API.ConsoleApp.csproj
@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
- <ProjectReference Include="..\Vimexx_API.Api\Vimexx_API.Api.csproj" />
+ <ProjectReference Include="..\Vimexx_API.Api\Vimexx_API.csproj" />
</ItemGroup>
</Project>