Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }