Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 80 additions & 0 deletions Editor/Api/AnalyticsApi.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
using UnityEngine;

namespace Edgegap.Editor.Api
{
public class AnalyticsApi
{
private readonly HttpClient _httpClient = new HttpClient();
private string _url = "https://r.edgegap.net/";
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
private string _url = "https://r.edgegap.net/";
private string _url = "https://r.edgegap.net/i/v0/e/";

private string _Key = "phc_sjDOXB5OakYZu0h70u4GLcFR7hZ55XfnnDef5xaeDws";
private string _Event = "Plugin Button Click";

private class AnalyticsPayload
{
[JsonProperty("api_key")]
public string ApiKey { get; set; }

[JsonProperty("event")]
public string Event { get; set; }

[JsonProperty("distinct_id")]
public string DistinctId { get; set; }

[JsonProperty("properties")]
public Dictionary<string, string> Properties { get; set; }

public AnalyticsPayload(
string apiKey,
string ev,
string disctinctId,
Dictionary<string, string> properties
)
{
this.ApiKey = apiKey;
this.Event = ev;
this.DistinctId = disctinctId;
this.Properties = properties;
}

public override string ToString() => JsonConvert.SerializeObject(this);
}

public AnalyticsApi()
{
this._httpClient.BaseAddress = new Uri(_url);
this._httpClient.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json")
);
}

public async Task<HttpResponseMessage> PostAsync(
string distinctId,
Dictionary<string, string> properties
)
{
AnalyticsPayload payload = new AnalyticsPayload(_Key, _Event, distinctId, properties);
StringContent stringContent = new StringContent(
payload.ToString(),
Encoding.UTF8,
"application/json"
);

try
{
return await _httpClient.PostAsync(_httpClient.BaseAddress, stringContent);
}
catch (Exception e)
{
Debug.LogError($"Error: {e}");
throw;
}
}
}
}
2 changes: 2 additions & 0 deletions Editor/Api/AnalyticsApi.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 24 additions & 9 deletions Editor/Api/EdgegapWizardApi.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,11 @@ public class EdgegapWizardApi : EdgegapApiBase
{
/// <summary>Extended path after the base uri</summary>
public EdgegapWizardApi(
ApiEnvironment apiEnvironment,
string apiToken,
EdgegapWindowMetadata.LogLevel logLevel = EdgegapWindowMetadata.LogLevel.Error)
: base(apiEnvironment, apiToken, logLevel)
{
}

ApiEnvironment apiEnvironment,
string apiToken,
EdgegapWindowMetadata.LogLevel logLevel = EdgegapWindowMetadata.LogLevel.Error
)
: base(apiEnvironment, apiToken, logLevel) { }

#region API Methods
/// <summary>POST to v1/wizard/init-quick-start</summary>
Expand All @@ -32,7 +30,7 @@ public async Task<EdgegapHttpResult> InitQuickStart()

return result;
}

/// <summary>GET to v1/wizard/registry-credentials</summary>
/// <returns>
/// - Http info with GetRegistryCredentialsResult data model
Expand All @@ -43,7 +41,24 @@ public async Task<EdgegapHttpResult> InitQuickStart()
public async Task<EdgegapHttpResult<GetRegistryCredentialsResult>> GetRegistryCredentials()
{
HttpResponseMessage response = await GetAsync("v1/wizard/registry-credentials");
EdgegapHttpResult<GetRegistryCredentialsResult> result = new EdgegapHttpResult<GetRegistryCredentialsResult>(response); // MIRROR CHANGE: 'new()' not supported in Unity 2020
EdgegapHttpResult<GetRegistryCredentialsResult> result =
new EdgegapHttpResult<GetRegistryCredentialsResult>(response); // MIRROR CHANGE: 'new()' not supported in Unity 2020

return result;
}

/// <summary>GET to /v1/wizard/organization-information</summary>
/// <returns>
/// - Http info with GetOrganizationInformationResult data model
/// - Success: 200
/// </returns>
public async Task<
EdgegapHttpResult<GetOrganizationInformationResult>
> GetOrganizationInformation()
{
HttpResponseMessage response = await GetAsync("/v1/wizard/organization-information");
EdgegapHttpResult<GetOrganizationInformationResult> result =
new EdgegapHttpResult<GetOrganizationInformationResult>(response); // MIRROR CHANGE: 'new()' not supported in Unity 2020

return result;
}
Expand Down
19 changes: 19 additions & 0 deletions Editor/Api/Models/Results/GetOrganizationInformationResult.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
using Newtonsoft.Json;

namespace Edgegap.Editor.Api.Models.Results
{
/// <summary>
/// Result model for `GET /v1/wizard/organization-information`.
/// </summary>
public class GetOrganizationInformationResult
{
[JsonProperty("distinct_id")]
public string DistinctId { get; set; }

[JsonProperty("identifier")]
public string Identifier { get; set; }

[JsonProperty("provider")]
public string Provider { get; set; }
}
}
2 changes: 1 addition & 1 deletion Editor/EdgegapWindowMetadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ public enum LogLevel
public const string EDGEGAP_DOC_MATCHMAKER_PATH = "learn/matchmaking/getting-started";
public const string SCALING_LIFECYCLE_INFO_URL = "learn/advanced-features/deployments";

private const string DEFAULT_UTM_SOURCE_TAG = "plugin_unity";
public const string DEFAULT_UTM_SOURCE_TAG = "plugin_unity";
private const string DEFAULT_UTM_MEDIUM_TAG = "servers_quickstart_plugin";
private const string DEFAULT_UTM_CONTENT_TAG = "plugin_button";
public const string DEFAULT_UTM_TAGS =
Expand Down
Loading