private void ProcessDeleteFileRequest(Dictionary <string, object> externalQueryParam, PNCallback <PNDeleteFileResult> callback) { IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("DELETE", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNDeleteFileOperation); RequestState <PNDeleteFileResult> requestState = new RequestState <PNDeleteFileResult>(); requestState.ResponseType = PNOperationType.PNDeleteFileOperation; requestState.PubnubCallback = callback; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = false; UrlProcessRequest(request, requestState, false).ContinueWith(r => { string json = r.Result.Item1; if (!string.IsNullOrEmpty(json)) { List <object> result = ProcessJsonResponse(requestState, json); ProcessResponseCallbacks(result, requestState); } else { if (r.Result.Item2 != null) { callback.OnResponse(null, r.Result.Item2); } } }, TaskContinuationOptions.ExecuteSynchronously).Wait(); }
private async Task <PNResult <PNDeleteFileResult> > ProcessDeleteFileRequest(Dictionary <string, object> externalQueryParam) { PNResult <PNDeleteFileResult> ret = new PNResult <PNDeleteFileResult>(); if (string.IsNullOrEmpty(this.channelName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid Channel name", new ArgumentException("Invalid Channel name")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileId)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing File Id", new ArgumentException("Missing File Id")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid file name", new ArgumentException("Invalid file name")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("DELETE", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNFileUrlOperation); RequestState <PNDeleteFileResult> requestState = new RequestState <PNDeleteFileResult>(); requestState.ResponseType = PNOperationType.PNDeleteFileOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; requestState.UsePostMethod = false; Tuple <string, PNStatus> JsonAndStatusTuple = await UrlProcessRequest(request, requestState, false).ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; string json = JsonAndStatusTuple.Item1; if (!string.IsNullOrEmpty(json)) { List <object> resultList = ProcessJsonResponse(requestState, json); ResponseBuilder responseBuilder = new ResponseBuilder(config, jsonLibrary, pubnubLog); PNDeleteFileResult responseResult = responseBuilder.JsonToObject <PNDeleteFileResult>(resultList, true); if (responseResult != null) { ret.Result = responseResult; } } return(ret); }
private void ProcessFileDownloadRequest(Dictionary <string, object> externalQueryParam, PNCallback <PNDownloadFileResult> callback) { IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("GET", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNDownloadFileOperation); RequestState <PNDownloadFileResult> requestState = new RequestState <PNDownloadFileResult>(); requestState.ResponseType = PNOperationType.PNDownloadFileOperation; requestState.PubnubCallback = callback; requestState.Reconnect = false; requestState.EndPointOperation = this; byte[] item1Bytes = null; UrlProcessRequestForStream(request, requestState, false, "").ContinueWith(r => { item1Bytes = r.Result.Item1; if (item1Bytes != null) { byte[] outputBytes = null; string currentCipherKey = !string.IsNullOrEmpty(this.currentFileCipherKey) ? this.currentFileCipherKey : config.CipherKey; if (currentCipherKey.Length > 0) { try { PubnubCrypto aes = new PubnubCrypto(currentCipherKey, config, pubnubLog, null); outputBytes = aes.Decrypt(item1Bytes, true); LoggingMethod.WriteToLog(pubnubLog, string.Format("DateTime {0}, Stream length (after Decrypt)= {1}", DateTime.Now.ToString(CultureInfo.InvariantCulture), item1Bytes.Length), config.LogVerbosity); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } else { outputBytes = item1Bytes; } PNDownloadFileResult result = new PNDownloadFileResult(); result.FileBytes = outputBytes; result.FileName = currentFileName; callback.OnResponse(result, r.Result.Item2); } else { if (r.Result.Item2 != null) { callback.OnResponse(null, r.Result.Item2); } } }, TaskContinuationOptions.ExecuteSynchronously).Wait(); }
private void ProcessGetFileUrl(Dictionary <string, object> externalQueryParam, PNCallback <PNFileUrlResult> callback) { IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("GET", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNFileUrlOperation); PNFileUrlResult result = new PNFileUrlResult(); result.Url = request.ToString(); PNStatus status = new PNStatus { Error = false, StatusCode = 200 }; callback.OnResponse(result, status); }
private async Task <PNResult <PNFileUrlResult> > ProcessGetFileUrl(Dictionary <string, object> externalQueryParam) { PNResult <PNFileUrlResult> ret = new PNResult <PNFileUrlResult>(); if (string.IsNullOrEmpty(this.currentFileId)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing File Id", new ArgumentException("Missing File Id")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid file name", new ArgumentException("Invalid file name")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("GET", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNFileUrlOperation); PNFileUrlResult result = new PNFileUrlResult(); result.Url = request.ToString(); PNStatus status = new PNStatus { Error = false, StatusCode = 200 }; ret.Result = result; ret.Status = status; await Task.Factory.StartNew(() => { }).ConfigureAwait(false);//dummy stmt. return(ret); }
private async Task <PNResult <PNDownloadFileResult> > ProcessFileDownloadRequest(Dictionary <string, object> externalQueryParam) { PNResult <PNDownloadFileResult> ret = new PNResult <PNDownloadFileResult>(); if (string.IsNullOrEmpty(this.currentFileId)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Missing File Id", new ArgumentException("Missing File Id")) }; ret.Status = errStatus; return(ret); } if (string.IsNullOrEmpty(this.currentFileName)) { PNStatus errStatus = new PNStatus { Error = true, ErrorData = new PNErrorData("Invalid file name", new ArgumentException("Invalid file name")) }; ret.Status = errStatus; return(ret); } IUrlRequestBuilder urlBuilder = new UrlRequestBuilder(config, jsonLibrary, unit, pubnubLog, pubnubTelemetryMgr, (PubnubInstance != null) ? PubnubInstance.InstanceId : ""); Uri request = urlBuilder.BuildGetFileUrlOrDeleteReqest("GET", "", this.channelName, this.currentFileId, this.currentFileName, externalQueryParam, PNOperationType.PNDownloadFileOperation); RequestState <PNDownloadFileResult> requestState = new RequestState <PNDownloadFileResult>(); requestState.ResponseType = PNOperationType.PNDownloadFileOperation; requestState.Reconnect = false; requestState.EndPointOperation = this; Tuple <byte[], PNStatus> JsonAndStatusTuple = await UrlProcessRequestForStream(request, requestState, false, "").ConfigureAwait(false); ret.Status = JsonAndStatusTuple.Item2; byte[] item1Bytes = JsonAndStatusTuple.Item1; if (item1Bytes != null) { byte[] outputBytes = null; string currentCipherKey = !string.IsNullOrEmpty(this.currentFileCipherKey) ? this.currentFileCipherKey : config.CipherKey; if (currentCipherKey.Length > 0) { try { PubnubCrypto aes = new PubnubCrypto(currentCipherKey, config, pubnubLog, null); outputBytes = aes.Decrypt(item1Bytes, true); LoggingMethod.WriteToLog(pubnubLog, string.Format("DateTime {0}, Stream length (after Decrypt)= {1}", DateTime.Now.ToString(CultureInfo.InvariantCulture), item1Bytes.Length), config.LogVerbosity); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } else { outputBytes = item1Bytes; } PNDownloadFileResult result = new PNDownloadFileResult(); result.FileBytes = outputBytes; result.FileName = currentFileName; ret.Result = result; } return(ret); }