Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of new PubnubLogger #238

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
2 changes: 1 addition & 1 deletion src/Api/PubnubApi/Builder/ResponseBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public T JsonToObject<T>(List<object> result, bool internalObject)
}
else
{
NewtonsoftJsonDotNet jsonNewtonLib = new NewtonsoftJsonDotNet(config, pubnubLog);
NewtonsoftJsonDotNet jsonNewtonLib = new NewtonsoftJsonDotNet(config);
ret = jsonNewtonLib.DeserializeToObject<T>(result);
}

Expand Down
20 changes: 12 additions & 8 deletions src/Api/PubnubApi/ClientNetworkStatus.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@ internal static bool CheckInternetStatus<T>(bool systemActive, PNOperationType
try {
return CheckClientNetworkAvailability(CallbackClientNetworkStatus, type, callback, channels, channelGroups);
} catch (AggregateException ae) {
foreach (var ie in ae.InnerExceptions) {
LoggingMethod.WriteToLog(pubnubLog, $"[{DateTime.Now.ToString(CultureInfo.InvariantCulture)}] Error: AggregateException CheckInternetStatus : {ie.GetType().Name} {ie.Message}", pubnubConfig.LogVerbosity);
foreach (var ie in ae.InnerExceptions)
{
PubnubConfiguation?.Logger?.Error($"AggregateException CheckInternetStatus : {ie.GetType().Name} {ie.Message}");
}
} catch (Exception ex) {
LoggingMethod.WriteToLog(pubnubLog, $"[{DateTime.Now.ToString(CultureInfo.InvariantCulture)}] Error CheckInternetStatus Exception: {ex.Message}",pubnubConfig.LogVerbosity);
} catch (Exception ex)
{
PubnubConfiguation?.Logger?.Error($"CheckInternetStatus Exception: {ex.Message}");
}

return networkStatus;
Expand All @@ -60,8 +62,9 @@ internal static bool IsInternetCheckRunning()
private static bool CheckClientNetworkAvailability<T>(Action<bool> internalCallback, PNOperationType type, PNCallback<T> callback, string[] channels, string[] channelGroups)
{
lock (internetCheckLock) {
if (isInternetCheckRunning) {
LoggingMethod.WriteToLog(pubnubLog, $"[{DateTime.Now.ToString(CultureInfo.InvariantCulture)}] InternetCheckRunning Already running", pubnubConfig.LogVerbosity);
if (isInternetCheckRunning)
{
PubnubConfiguation?.Logger?.Trace($"InternetCheckRunning Already running");
return networkStatus;
}
}
Expand Down Expand Up @@ -103,7 +106,8 @@ private static async Task<bool> CheckSocketConnect<T>(object internetState)
networkStatus = gotTimeResp;
} catch (Exception ex) {
networkStatus = false;
LoggingMethod.WriteToLog(pubnubLog, $"[{DateTime.Now.ToString(CultureInfo.InvariantCulture)}] CheckSocketConnect (HttpClient Or Task.Factory) Failed {ex.Message}", pubnubConfig.LogVerbosity);
PubnubConfiguation?.Logger?.Error(
$"CheckSocketConnect (HttpClient Or Task.Factory) Failed {ex.Message}");
if (!networkStatus) {
t.TrySetResult(false);
isInternetCheckRunning = false;
Expand All @@ -124,7 +128,7 @@ private static void ParseCheckSocketConnectException<T>(Exception ex, PNOperatio
callback.OnResponse(default(T), status);
}

LoggingMethod.WriteToLog(pubnubLog, $"[{DateTime.Now.ToString(CultureInfo.InvariantCulture)}] ParseCheckSocketConnectException Error. {ex.Message}", pubnubConfig.LogVerbosity);
PubnubConfiguation?.Logger?.Trace($"ParseCheckSocketConnectException Error. {ex.Message}");
internalcallback(false);
}

Expand Down
29 changes: 18 additions & 11 deletions src/Api/PubnubApi/EndPoint/Access/GrantTokenOperation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class GrantTokenOperation : PubnubCoreBase
private readonly IJsonPluggableLibrary jsonLibrary;
private readonly IPubnubUnitTest unit;
private readonly IPubnubLog pubnubLog;

private PNTokenResources pubnubResources = new PNTokenResources {
Channels = new Dictionary<string, PNTokenAuthValues>(),
Spaces = new Dictionary<string, PNTokenAuthValues>(),
Expand All @@ -35,15 +35,14 @@ public class GrantTokenOperation : PubnubCoreBase
private Dictionary<string, object> grantMeta;
private string pubnubAuthorizedUuid = string.Empty;
private string pubnubAuthorizedUserId = string.Empty;

public GrantTokenOperation(PNConfiguration pubnubConfig, IJsonPluggableLibrary jsonPluggableLibrary, IPubnubUnitTest pubnubUnit, IPubnubLog log, EndPoint.TokenManager tokenManager, Pubnub instance) : base(pubnubConfig, jsonPluggableLibrary, pubnubUnit, log, tokenManager, instance)
{
config = pubnubConfig;
jsonLibrary = jsonPluggableLibrary;
unit = pubnubUnit;
pubnubLog = log;
PubnubInstance = instance;

InitializeDefaultVariableObjectStates();
}

Expand Down Expand Up @@ -149,11 +148,13 @@ public GrantTokenOperation QueryParam(Dictionary<string, object> customQueryPara

public void Execute(PNCallback<PNAccessManagerTokenResult> callback)
{
logger?.Trace($"{GetType().Name} Execute invoked");
GrantAccess(callback);
}

public async Task<PNResult<PNAccessManagerTokenResult>> ExecuteAsync()
{
logger?.Trace($"{GetType().Name} ExecuteAsync invoked.");
return await GrantAccess().ConfigureAwait(false);
}

Expand All @@ -171,14 +172,16 @@ internal void GrantAccess(PNCallback<PNAccessManagerTokenResult> callback)
if (this.grantTTL <= 0) {
throw new MissingMemberException("Invalid TTL value");
}

RequestState<PNAccessManagerTokenResult> requestState = new RequestState<PNAccessManagerTokenResult>();
requestState.Channels = pubnubResources.Channels.Keys.ToArray();
requestState.ChannelGroups = pubnubResources.ChannelGroups.Keys.ToArray();
requestState.ResponseType = PNOperationType.PNAccessManagerGrantToken;
requestState.PubnubCallback = callback;
requestState.Reconnect = false;
requestState.EndPointOperation = this;
logger?.Debug($"{GetType().Name} parameter validated.");
RequestState<PNAccessManagerTokenResult> requestState = new RequestState<PNAccessManagerTokenResult>
{
Channels = pubnubResources.Channels.Keys.ToArray(),
ChannelGroups = pubnubResources.ChannelGroups.Keys.ToArray(),
ResponseType = PNOperationType.PNAccessManagerGrantToken,
PubnubCallback = callback,
Reconnect = false,
EndPointOperation = this
};

var requestParameter = CreateRequestParameter();

Expand All @@ -191,12 +194,14 @@ internal void GrantAccess(PNCallback<PNAccessManagerTokenResult> callback)
if (!string.IsNullOrEmpty(responseString)) {
List<object> result = ProcessJsonResponse(requestState, responseString);
ProcessResponseCallbacks(result, requestState);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
} else {
int statusCode = PNStatusCodeHelper.GetHttpStatusCode(transportResponse.Error.Message);
PNStatusCategory category = PNStatusCategoryHelper.GetPNStatusCategory(statusCode, transportResponse.Error.Message);
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAccessManagerGrantToken, category, requestState, statusCode, new PNException(transportResponse.Error.Message, transportResponse.Error));
requestState.PubnubCallback.OnResponse(default(PNAccessManagerTokenResult), status);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
});
}
Expand Down Expand Up @@ -226,6 +231,7 @@ internal async Task<PNResult<PNAccessManagerTokenResult>> GrantAccess()
if (this.grantTTL <= 0) {
throw new MissingMemberException("Invalid TTL value");
}
logger?.Debug($"{GetType().Name} parameter validated.");
RequestState<PNAccessManagerTokenResult> requestState = new RequestState<PNAccessManagerTokenResult>();
requestState.Channels = pubnubResources.Channels.Keys.ToArray();
requestState.ChannelGroups = pubnubResources.ChannelGroups.Keys.ToArray();
Expand Down Expand Up @@ -268,6 +274,7 @@ internal async Task<PNResult<PNAccessManagerTokenResult>> GrantAccess()
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAccessManagerGrantToken, category, requestState, statusCode, new PNException(transportResponse.Error.Message, transportResponse.Error));
returnValue.Status = status;
}
logger?.Info($"{GetType().Name} request finished with status code {returnValue.Status.StatusCode}");
return returnValue;
}

Expand Down
25 changes: 16 additions & 9 deletions src/Api/PubnubApi/EndPoint/Access/RevokeTokenOperation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,13 @@ public RevokeTokenOperation QueryParam(Dictionary<string, object> customQueryPar
public void Execute(PNCallback<PNAccessManagerRevokeTokenResult> callback)
{
this.savedCallbackRevokeToken = callback;
logger?.Trace($"{GetType().Name} Execute invoked");
RevokeAccess(callback);
}

public async Task<PNResult<PNAccessManagerRevokeTokenResult>> ExecuteAsync()
{
logger?.Trace($"{GetType().Name} ExecuteAsync invoked.");
return await RevokeAccess().ConfigureAwait(false);
}

Expand All @@ -61,11 +63,14 @@ internal void RevokeAccess(PNCallback<PNAccessManagerRevokeTokenResult> callback
throw new MissingMemberException("Invalid secret key");
}

RequestState<PNAccessManagerRevokeTokenResult> requestState = new RequestState<PNAccessManagerRevokeTokenResult>();
requestState.ResponseType = PNOperationType.PNAccessManagerRevokeToken;
requestState.PubnubCallback = callback;
requestState.Reconnect = false;
requestState.EndPointOperation = this;
logger?.Debug($"{GetType().Name} parameter validated.");
RequestState<PNAccessManagerRevokeTokenResult> requestState = new RequestState<PNAccessManagerRevokeTokenResult>
{
ResponseType = PNOperationType.PNAccessManagerRevokeToken,
PubnubCallback = callback,
Reconnect = false,
EndPointOperation = this
};

var requestParameter = CreateRequestParameter();
var transportRequest = PubnubInstance.transportMiddleware.PreapareTransportRequest(requestParameter: requestParameter, operationType: PNOperationType.PNAccessManagerRevokeToken);
Expand All @@ -77,12 +82,14 @@ internal void RevokeAccess(PNCallback<PNAccessManagerRevokeTokenResult> callback
if (!string.IsNullOrEmpty(responseString)) {
List<object> result = ProcessJsonResponse(requestState, responseString);
ProcessResponseCallbacks(result, requestState);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
} else {
int statusCode = PNStatusCodeHelper.GetHttpStatusCode(t.Result.Error.Message);
PNStatusCategory category = PNStatusCategoryHelper.GetPNStatusCategory(statusCode, t.Result.Error.Message);
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAccessManagerRevokeToken, category, requestState, statusCode, new PNException(t.Result.Error.Message, t.Result.Error));
requestState.PubnubCallback.OnResponse(default(PNAccessManagerRevokeTokenResult), status);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
});
}
Expand All @@ -92,6 +99,7 @@ internal async Task<PNResult<PNAccessManagerRevokeTokenResult>> RevokeAccess()
if (string.IsNullOrEmpty(config.SecretKey) || string.IsNullOrEmpty(config.SecretKey.Trim()) || config.SecretKey.Length <= 0) {
throw new MissingMemberException("Invalid secret key");
}
logger?.Debug($"{GetType().Name} parameter validated.");
PNResult<PNAccessManagerRevokeTokenResult> returnValue = new PNResult<PNAccessManagerRevokeTokenResult>();
RequestState<PNAccessManagerRevokeTokenResult> requestState = new RequestState<PNAccessManagerRevokeTokenResult>();
requestState.ResponseType = PNOperationType.PNAccessManagerRevokeToken;
Expand Down Expand Up @@ -127,9 +135,10 @@ internal async Task<PNResult<PNAccessManagerRevokeTokenResult>> RevokeAccess()
} else {
int statusCode = PNStatusCodeHelper.GetHttpStatusCode(transportResponse.Error.Message);
PNStatusCategory category = PNStatusCategoryHelper.GetPNStatusCategory(statusCode, transportResponse.Error.Message);
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAccessManagerRevokeToken, category, requestState, statusCode, new PNException(transportResponse.Error.Message, transportResponse.Error));
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAccessManagerRevokeToken, category, requestState, statusCode, new PNException(transportResponse.Error.Message, transportResponse.Error));logger?.Debug($"{GetType().Name} request finished with status code {statusCode}");
returnValue.Status = status;
}
logger?.Info($"{GetType().Name} request finished with status code {returnValue.Status.StatusCode}");
return returnValue;
}

Expand All @@ -152,9 +161,7 @@ private RequestParameter CreateRequestParameter()
}
}
}

string queryString = UriUtil.BuildQueryString(requestQueryStringParams);


var requestParameter = new RequestParameter() {
RequestType = Constants.DELETE,
PathSegment = pathSegments,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,13 @@ public void Async(PNCallback<PNChannelGroupsAddChannelResult> callback)
public void Execute(PNCallback<PNChannelGroupsAddChannelResult> callback)
{
this.savedCallback = callback;
logger?.Trace($"{GetType().Name} Execute invoked");
AddChannelsToChannelGroup(this.channelNames, "", this.channelGroupName, this.queryParam, callback);
}

public async Task<PNResult<PNChannelGroupsAddChannelResult>> ExecuteAsync()
{
logger?.Trace($"{GetType().Name} ExecuteAsync invoked.");
return await AddChannelsToChannelGroup(this.channelNames, "", this.channelGroupName, this.queryParam).ConfigureAwait(false);
}

Expand All @@ -80,6 +82,7 @@ internal void AddChannelsToChannelGroup(string[] channels, string nameSpace, str
if (string.IsNullOrEmpty(groupName) || groupName.Trim().Length == 0) {
throw new ArgumentException("Missing groupName");
}
logger?.Debug($"{GetType().Name} parameter validated.");
RequestState<PNChannelGroupsAddChannelResult> requestState = new RequestState<PNChannelGroupsAddChannelResult>();
requestState.ResponseType = PNOperationType.PNAddChannelsToGroupOperation;
requestState.Channels = new string[] { };
Expand All @@ -98,12 +101,14 @@ internal void AddChannelsToChannelGroup(string[] channels, string nameSpace, str
if (!string.IsNullOrEmpty(responseString)) {
List<object> result = ProcessJsonResponse(requestState, responseString);
ProcessResponseCallbacks(result, requestState);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
} else {
int statusCode = PNStatusCodeHelper.GetHttpStatusCode(t.Result.Error.Message);
PNStatusCategory category = PNStatusCategoryHelper.GetPNStatusCategory(statusCode, t.Result.Error.Message);
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAddChannelsToGroupOperation, category, requestState, statusCode, new PNException(t.Result.Error.Message, t.Result.Error));
requestState.PubnubCallback.OnResponse(default(PNChannelGroupsAddChannelResult), status);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
});
}
Expand All @@ -121,6 +126,7 @@ internal async Task<PNResult<PNChannelGroupsAddChannelResult>> AddChannelsToChan
if (string.IsNullOrEmpty(groupName) || groupName.Trim().Length == 0) {
throw new ArgumentException("Missing groupName");
}
logger?.Debug($"{GetType().Name} parameter validated.");
PNResult<PNChannelGroupsAddChannelResult> returnValue = new PNResult<PNChannelGroupsAddChannelResult>();
RequestState<PNChannelGroupsAddChannelResult> requestState = new RequestState<PNChannelGroupsAddChannelResult>();
requestState.ResponseType = PNOperationType.PNAddChannelsToGroupOperation;
Expand Down Expand Up @@ -159,6 +165,7 @@ internal async Task<PNResult<PNChannelGroupsAddChannelResult>> AddChannelsToChan
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNAccessManagerRevokeToken, category, requestState, statusCode, new PNException(transportResponse.Error.Message, transportResponse.Error));
returnValue.Status = status;
}
logger?.Info($"{GetType().Name} request finished with status code {returnValue.Status.StatusCode}");
return returnValue;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
using System.Threading.Tasks;
using System.Net;
using System.Text;
using System.Collections.Concurrent;

namespace PubnubApi.EndPoint
{
Expand Down Expand Up @@ -47,11 +46,13 @@ public void Async(PNCallback<PNChannelGroupsDeleteGroupResult> callback)
public void Execute(PNCallback<PNChannelGroupsDeleteGroupResult> callback)
{
this.savedCallback = callback;
logger?.Trace($"{GetType().Name} Execute invoked");
DeleteChannelGroup(this.channelGroupName, this.queryParam, callback);
}

public async Task<PNResult<PNChannelGroupsDeleteGroupResult>> ExecuteAsync()
{
logger?.Trace($"{GetType().Name} ExecuteAsync invoked.");
return await DeleteChannelGroup(this.channelGroupName, this.queryParam).ConfigureAwait(false);
}

Expand All @@ -65,7 +66,7 @@ internal void DeleteChannelGroup(string groupName, Dictionary<string, object> ex
if (string.IsNullOrEmpty(groupName) || groupName.Trim().Length == 0) {
throw new ArgumentException("Missing groupName");
}

logger?.Debug($"{GetType().Name} parameter validated.");
RequestState<PNChannelGroupsDeleteGroupResult> requestState = new RequestState<PNChannelGroupsDeleteGroupResult>();
requestState.ResponseType = PNOperationType.PNRemoveGroupOperation;
requestState.Channels = new string[] { };
Expand All @@ -84,12 +85,14 @@ internal void DeleteChannelGroup(string groupName, Dictionary<string, object> ex
if (!string.IsNullOrEmpty(responseString)) {
List<object> result = ProcessJsonResponse(requestState, responseString);
ProcessResponseCallbacks(result, requestState);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
} else {
int statusCode = PNStatusCodeHelper.GetHttpStatusCode(t.Result.Error.Message);
PNStatusCategory category = PNStatusCategoryHelper.GetPNStatusCategory(statusCode, t.Result.Error.Message);
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNRemoveGroupOperation, category, requestState, statusCode, new PNException(t.Result.Error.Message, t.Result.Error));
requestState.PubnubCallback.OnResponse(default(PNChannelGroupsDeleteGroupResult), status);
logger?.Info($"{GetType().Name} request finished with status code {requestState.Response?.StatusCode}");
}
});
}
Expand All @@ -99,6 +102,8 @@ internal async Task<PNResult<PNChannelGroupsDeleteGroupResult>> DeleteChannelGro
if (string.IsNullOrEmpty(groupName) || groupName.Trim().Length == 0) {
throw new ArgumentException("Missing groupName");
}

logger?.Debug($"{GetType().Name} parameter validated.");
PNResult<PNChannelGroupsDeleteGroupResult> returnValue = new PNResult<PNChannelGroupsDeleteGroupResult>();
RequestState<PNChannelGroupsDeleteGroupResult> requestState = new RequestState<PNChannelGroupsDeleteGroupResult>();
requestState.ResponseType = PNOperationType.PNRemoveGroupOperation;
Expand Down Expand Up @@ -137,6 +142,7 @@ internal async Task<PNResult<PNChannelGroupsDeleteGroupResult>> DeleteChannelGro
PNStatus status = new StatusBuilder(config, jsonLibrary).CreateStatusResponse(PNOperationType.PNRemoveGroupOperation, category, requestState, statusCode, new PNException(transportResponse.Error.Message, transportResponse.Error));
returnValue.Status = status;
}
logger?.Info($"{GetType().Name} request finished with status code {returnValue.Status.StatusCode}");
return returnValue;
}

Expand Down
Loading
Loading