diff --git a/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/.gitignore b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/.gitignore
new file mode 100644
index 0000000..de9e7ea
--- /dev/null
+++ b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/projectSettingsUpdater.xml
+/modules.xml
+/contentModel.xml
+/.idea.edenic-exporter.iml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/.name b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/.name
new file mode 100644
index 0000000..1be5655
--- /dev/null
+++ b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/.name
@@ -0,0 +1 @@
+edenic-exporter
\ No newline at end of file
diff --git a/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/encodings.xml b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/indexLayout.xml b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/vcs.xml b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/EdenicExporter/.idea/.idea.edenic-exporter.dir/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EdenicExporter/DotNet.Docker.csproj b/EdenicExporter/DotNet.Docker.csproj
index 8b5214f..713601c 100644
--- a/EdenicExporter/DotNet.Docker.csproj
+++ b/EdenicExporter/DotNet.Docker.csproj
@@ -5,6 +5,8 @@
net8.0
enable
enable
+ EdenicExporter
+ EdenicExporter
diff --git a/EdenicExporter/Program.cs b/EdenicExporter/Program.cs
index 3a84a6d..43d423b 100644
--- a/EdenicExporter/Program.cs
+++ b/EdenicExporter/Program.cs
@@ -13,49 +13,39 @@ using System.Linq;
namespace PrometheusExporterEdenic
{
+ public class Device
+ {
+ public string id { get; set; }
+ public string name { get; set; }
+ public string label { get; set; }
+ // Add other properties as needed
+ }
public class ApiClient
{
private readonly HttpClient _client;
private readonly string _authToken;
+ private readonly string _orgid;
+ private readonly string _apimainurl = "https://api.edenic.io/api/v1/device";
- public ApiClient(string authToken)
+ public ApiClient(string authToken, string orgID)
{
_client = new HttpClient();
_authToken = authToken;
+ _orgid = orgID;
_client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue(_authToken);
}
- public async Task MakeApiRequest(string url, string jsonPath)
+ public async Task MakeApiRequest(string path)
{
try
{
- HttpResponseMessage response = await _client.GetAsync(url);
+ HttpResponseMessage response = await _client.GetAsync($"{_apimainurl}/{_orgid}{path}");
if (response.IsSuccessStatusCode)
{
string content = await response.Content.ReadAsStringAsync();
- using JsonDocument doc = JsonDocument.Parse(content);
- JsonElement root = doc.RootElement;
-
- // Navigate the JSON path
- string[] pathSegments = jsonPath.Split('.');
- JsonElement current = root;
- foreach (var segment in pathSegments)
- {
- if (current.TryGetProperty(segment, out JsonElement next))
- {
- current = next;
- }
- else
- {
- throw new JsonException($"JSON path '{jsonPath}' not found in the response.");
- }
- }
-
- // Convert the JsonElement to the desired type
- return JsonSerializer.Deserialize(current.GetRawText());
- }
+ return JsonSerializer.Deserialize(content); }
else
{
throw new HttpRequestException($"Error: {response.StatusCode}");
@@ -72,12 +62,25 @@ namespace PrometheusExporterEdenic
throw;
}
}
+
+ public async Task GetDeviceIdByName(string name)
+ {
+ dynamic result = await MakeApiRequest