Skip to content

Commit

Permalink
feat: add logging level
Browse files Browse the repository at this point in the history
  • Loading branch information
nattb8 committed Aug 13, 2024
1 parent 8a25d5f commit f57b19e
Show file tree
Hide file tree
Showing 23 changed files with 347 additions and 110 deletions.
5 changes: 5 additions & 0 deletions sample/Assets/Scripts/SelectAuthMethodScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using Immutable.Passport;
using Immutable.Passport.Core.Logging;

public class SelectAuthMethodScript : MonoBehaviour
{
Expand Down Expand Up @@ -68,6 +69,9 @@ private async void InitialisePassport(string redirectUri = null, string logoutRe

try
{
// Set the log level for the SDK
Passport.LogLevel = LogLevel.Info;

// Initialise Passport
string clientId = "ZJL7JvetcDFBNDlgRs5oJoxuAUUl6uQj";
string environment = Immutable.Passport.Model.Environment.SANDBOX;
Expand All @@ -79,6 +83,7 @@ private async void InitialisePassport(string redirectUri = null, string logoutRe
}
catch (Exception ex)
{
Debug.LogException(ex, this);
ShowOutput($"Initialise Passport error: {ex.Message}");
}
}
Expand Down
5 changes: 3 additions & 2 deletions sample/ProjectSettings/ProjectSettings.asset
Original file line number Diff line number Diff line change
Expand Up @@ -769,7 +769,8 @@ PlayerSettings:
webGLDecompressionFallback: 0
webGLPowerPreference: 2
scriptingDefineSymbols:
Standalone:
Android: VUPLEX_STANDALONE
Standalone: VUPLEX_STANDALONE
additionalCompilerArguments:
Standalone:
- -nullable+
Expand Down Expand Up @@ -797,7 +798,7 @@ PlayerSettings:
allowUnsafeCode: 0
useDeterministicCompilation: 1
enableRoslynAnalyzers: 1
selectedPlatform: 0
selectedPlatform: 2
additionalIl2CppArgs:
scriptingRuntimeVersion: 1
gcIncremental: 1
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
using System.Net;
using System;
using Cysharp.Threading.Tasks;
using System.Collections.Generic;
Expand All @@ -7,6 +6,8 @@
using UnityEngine;
using UnityEngine.Scripting;
using Immutable.Passport.Helpers;
using Immutable.Passport.Core.Logging;
using Immutable.Passport.Event;

namespace Immutable.Passport.Core
{
Expand Down Expand Up @@ -95,13 +96,23 @@ private void CallFunction(string requestId, string fxName, string data = null)

// Call the function on the JS side
string js = $"callFunction(\"{requestJson}\")";
Debug.Log($"{TAG} Call {fxName} (request ID: {requestId}, js: {js})");

if (fxName != PassportAnalytics.TRACK)
{
string dataString = data != null ? $": {data}" : "";
PassportLogger.Info($"{TAG} Call {fxName} (request ID: {requestId}){dataString}");
}
else
{
PassportLogger.Debug($"{TAG} Call {fxName} (request ID: {requestId}): {js}");
}

webBrowserClient.ExecuteJs(js);
}

public void LaunchAuthURL(string url, string redirectUri)
{
Debug.Log($"{TAG} LaunchAuthURL : {url}");
PassportLogger.Info($"{TAG} LaunchAuthURL : {url}");
webBrowserClient.LaunchAuthURL(url, redirectUri);
}

Expand All @@ -123,13 +134,12 @@ public void ClearStorage()

private void InvokeOnUnityPostMessage(string message)
{
Debug.Log($"{TAG} InvokeOnUnityPostMessage: {message}");
HandleResponse(message);
}

private void InvokeOnAuthPostMessage(string message)
{
Debug.Log($"{TAG} InvokeOnAuthPostMessage: {message}");
PassportLogger.Info($"{TAG} Auth message received: {message}");
if (OnAuthPostMessage != null)
{
OnAuthPostMessage.Invoke(message);
Expand All @@ -138,7 +148,7 @@ private void InvokeOnAuthPostMessage(string message)

private void InvokeOnPostMessageError(string id, string message)
{
Debug.Log($"{TAG} InvokeOnPostMessageError id: {id} message: {message}");
PassportLogger.Info($"{TAG} Error message received ({id}): {message}");
if (OnPostMessageError != null)
{
OnPostMessageError.Invoke(id, message);
Expand All @@ -147,34 +157,50 @@ private void InvokeOnPostMessageError(string id, string message)

private void HandleResponse(string message)
{
Debug.Log($"{TAG} HandleResponse message: " + message);
PassportLogger.Debug($"{TAG} Handle response message: " + message);
BrowserResponse response = message.OptDeserializeObject<BrowserResponse>();

// Check if the reponse returned is valid and the task to return the reponse exists
if (response == null || String.IsNullOrEmpty(response.responseFor) || String.IsNullOrEmpty(response.requestId))
// Validate the deserialised response object
if (response == null || string.IsNullOrEmpty(response.responseFor) || string.IsNullOrEmpty(response.requestId))
{
string responseError = "Response from browser is incorrect. Check game bridge file.";
PassportLogger.Error(responseError);
throw new PassportException(responseError);
}

string logMessage = $"{TAG} Response for: {response.responseFor} (request ID: {response.requestId}) : {message}";
if (response.responseFor != PassportAnalytics.TRACK)
{
// Log info messages for valid responses not related to tracking
PassportLogger.Info(logMessage);
}
else
{
throw new PassportException($"Response from browser is incorrect. Check HTML/JS files.");
PassportLogger.Debug(logMessage);
}

// Special case to detect if index.js is loaded
// Handle special case where the response indicates that the browser is ready
if (response.responseFor == INIT && response.requestId == INIT_REQUEST_ID)
{
Debug.Log($"{TAG} Browser is ready");
PassportLogger.Info($"{TAG} Browser is ready");
if (OnReady != null)
{
OnReady.Invoke();
}
return;
}

// Handle the response if a matching task exists for the request ID
string requestId = response.requestId;
if (requestTaskMap.ContainsKey(requestId))
{
NotifyRequestResult(requestId, message);
}
else
{
throw new PassportException($"No TaskCompletionSource for request id {requestId} found.");
string errorMsg = $"No TaskCompletionSource for request id {requestId} found.";
PassportLogger.Error(errorMsg);
throw new PassportException(errorMsg);
}
}

Expand All @@ -199,7 +225,7 @@ private PassportException ParseError(BrowserResponse response)
}
catch (Exception ex)
{
Debug.LogError($"{TAG} Parse passport type error: {ex.Message}");
PassportLogger.Error($"{TAG} Parse passport type error: {ex.Message}");
}
return new PassportException(response.error ?? "Failed to parse error");
}
Expand Down

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"name": "Immutable.Passport.Core.Logging",
"rootNamespace": "",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
namespace Immutable.Passport.Core.Logging
{
/// <summary>
/// Defines the logging levels used within the SDK to categorise the severity of log messages.
/// </summary>
public enum LogLevel
{
/// <summary>
/// Logs detailed information for debugging the SDK
/// </summary>
Debug,

/// <summary>
/// Logs general information about SDK operations
/// </summary>
Info,

/// <summary>
/// Logs warnings about potential issues or unexpected behaviour
/// </summary>
Warn,

/// <summary>
/// Logs errors indicating failures in SDK operations
/// </summary>
Error
}
}

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

Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
using UnityEngine;

namespace Immutable.Passport.Core.Logging
{
public static class PassportLogger
{
private const string TAG = "[Immutable]";

public static LogLevel CurrentLogLevel { get; set; } = LogLevel.Info;

public static void Log(LogLevel level, string message)
{
if (level < CurrentLogLevel)
{
return; // Don't log messages below the current log level
}

switch (level)
{
case LogLevel.Debug:
UnityEngine.Debug.Log($"{TAG} {message}");
break;
case LogLevel.Info:
UnityEngine.Debug.Log($"{TAG} {message}");
break;
case LogLevel.Warn:
UnityEngine.Debug.LogWarning($"{TAG} {message}");
break;
case LogLevel.Error:
UnityEngine.Debug.LogError($"{TAG} {message}");
break;
default:
break;
}
}

public static void Debug(string message)
{
Log(LogLevel.Debug, message);
}

public static void Info(string message)
{
Log(LogLevel.Info, message);
}

public static void Warn(string message)
{
Log(LogLevel.Warn, message);
}

public static void Error(string message)
{
Log(LogLevel.Error, message);
}
}

}

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

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using UnityEngine;
using Immutable.Passport.Core.Logging;

namespace Immutable.Passport.Helpers
{
Expand All @@ -19,7 +20,7 @@ public static T OptDeserializeObject<T>(this string json) where T : class
}
catch (Exception e)
{
Debug.Log($"Failed to deserialise {json}: {e.Message}");
PassportLogger.Debug($"Failed to deserialise {json}: {e.Message}");
return null;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using System;
using UnityEngine;
using Immutable.Passport.Core.Logging;

namespace Immutable.Passport.Helpers
{
Expand All @@ -25,7 +25,7 @@ public static string GetQueryParameter(this Uri uri, string key)
}
catch (Exception e)
{
Debug.Log($"Failed to get query parameter {key}: {e.Message}");
PassportLogger.Debug($"Failed to get query parameter {key}: {e.Message}");
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"VoltstroStudios.UnityWebBrowser",
"UniTask",
"Immutable.Browser.Core",
"unity-webview"
"unity-webview",
"Immutable.Passport.Core.Logging"
],
"includePlatforms": [
"Android",
Expand Down
Loading

0 comments on commit f57b19e

Please sign in to comment.