예제 #1
0
    private void UploadException(int what, object param)
    {
        UploadMessage message = param as UploadMessage;

        if (message == null)
        {
            return;
        }

        LogMessage logMessage = message.RecordMessage;

//        DengTaUploadException.UploadException(logMessage.tag.ToString(), logMessage.packedContent);

//         Dictionary<string, string> userInfo = new Dictionary<string, string>();
//         userInfo.Add(logMessage.tag.ToString(), logMessage.content);
//
//         bool result = UserAction.UploadUserAction("ScriptError", false, -1, -1, userInfo, true);
//         if (!result)
//         {
//             Log.D(ELogTag.LogSys, "upload user action failed!!");
//         }

//         string messageContent = string.Format("{0}:{1}", logMessage.tag, logMessage.content);
//         DengTaUploadException.UploadExceptionWithStack(messageContent, message.ContextBefore, message.StackInfo);
    }
예제 #2
0
    private void UploadUserActionCallBack(int what, object param)
    {
        UploadMessage uploadMessage = param as UploadMessage;

        if (null == uploadMessage)
        {
            return;
        }

        string userActionType = uploadMessage.ContextBefore;

        LogMessage logMessage = uploadMessage.RecordMessage;

        if (null == logMessage ||
            null == logMessage.tag ||
            null == logMessage.content)
        {
            return;
        }

        Dictionary <string, string> userInfo = new Dictionary <string, string>();

        userInfo.Add(logMessage.tag.ToString(), logMessage.content);

        //MSDK.Instance.reportEvent(userActionType, userInfo, false);
    }
예제 #3
0
        public async Task <UploadMessage> UploadAsync(IFormFile file, string rootFolder)
        {
            UploadMessage message = new UploadMessage
            {
                Message = UploadMessage.ERROR
            };

            try
            {
                // Create a unique name for the images we are about to upload
                string filename = String.Format("{0}{1}",
                                                Guid.NewGuid().ToString().Substring(0, 8),
                                                Path.GetExtension(file.FileName));
                string containerDefault = _config.DestinationFolder.Replace("/", "\\");

                string path = rootFolder + $@"\{containerDefault}" + $@"\{filename}";
                using (FileStream fs = File.Create(path))
                {
                    await file.CopyToAsync(fs);

                    fs.Flush();
                }

                message.FileName     = file.FileName;
                message.GuidFileName = filename;
                message.FullPath     = String.Format("{0}/{1}", _config.DestinationFolder, filename);
                message.Message      = UploadMessage.SUCCESS;
            }
            catch (Exception ex)
            {
                message.Message = ex.Message;
            }

            return(message);
        }
예제 #4
0
        public UploadMessage Delete(string path)
        {
            var message = new UploadMessage();

            string[] splits   = path.Split('/');
            string   filename = splits[splits.Length - 1];

            path = path.Replace(filename, "");
            path = path.Replace("/", "\\");
            string[] files = Directory.GetFiles(path, filename);
            if (files.Length > 0)
            {
                foreach (var loc in files)
                {
                    File.Delete(loc);
                }
                message.Message = "Success";
            }
            else
            {
                message.Message = "Not Found";
            }

            return(message);
        }
예제 #5
0
        /// <summary>
        /// Function to receive upload message
        /// </summary>
        /// <param name="uploadMessage">The message to be received</param>
        private void ReceivedUpload(UploadMessage uploadMessage)
        {
            if (uploadMessage.type.Equals(TypeCode.REQUEST))
            {
                int    replyPort = uploadMessage.port;
                string uuid      = uploadMessage.fromUuid;

                if (DiskHelper.GetTotalAvailableSpace(@"C:\") > uploadMessage.filesize)
                {
                    uploadMessage.statusCode = StatusCode.ACCEPTED;
                    Console.WriteLine(@"Request accepted");
                }
                else
                {
                    Console.WriteLine(@"Not enough space");
                    uploadMessage.statusCode = StatusCode.INSUFFICIENT_STORAGE;
                }
                uploadMessage.CreateReply();
                uploadMessage.port = _ports.GetAvailablePort();

                _fileReceiver =
                    new FileReceiver(this._path + @".hidden\" + uuid + @"\" + uploadMessage.fullFilename + @"\",
                                     uploadMessage.chunkHash, uploadMessage.port);
                _fileReceiver.Start();
                uploadMessage.Send(replyPort);
            }
            _ports.Release(uploadMessage.port);
        }
예제 #6
0
        public async Task <UploadMessage> DeleteAsync(string path)
        {
            var message = new UploadMessage();

            var response = await _s3Client.DeleteObjectAsync(_config.Container, path);

            message.Message = response.HttpStatusCode == HttpStatusCode.OK ? UploadMessage.SUCCESS : UploadMessage.ERROR;
            return(message);
        }
예제 #7
0
        public async Task <UploadMessageResponse> UploadSolution(byte[] managedSolution, string solution, string tenantId, Guid corrId, CancellationToken cancellationToken)
        {
            var req = new UploadMessage(managedSolution, solution, tenantId, corrId);

            var response = await this.ExecuteAsync(req, cancellationToken).ConfigureAwait(false);

            string respnseMsg = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

            var resp = this._jsonSerializer.Deserialize <string[]>(respnseMsg);

            return(new UploadMessageResponse(resp, tenantId, corrId));
        }
예제 #8
0
        protected override HttpRequestMessage GetHttpMessageRequest(PowerAppRequest request)
        {
            if (request is UploadMessage)
            {
                UploadMessage msg = request as UploadMessage;

                var req = base.GetHttpMessageRequest(request);
                req.Content = msg.MultipartFormDataContent;
                return(req);
            }
            else
            {
                return(base.GetHttpMessageRequest(request));
            }
        }
예제 #9
0
        public async Task <UploadMessage> UploadAsync(IFormFile file, string rootFolder)
        {
            UploadMessage message = new UploadMessage
            {
                Message = UploadMessage.ERROR
            };

            try
            {
                // Create a unique name for the images we are about to upload
                string filename = String.Format("{0}{1}",
                                                Guid.NewGuid().ToString().Substring(0, 8),
                                                Path.GetExtension(file.FileName));

                HttpStatusCode code;
                using (MemoryStream fs = new MemoryStream())
                {
                    file.CopyTo(fs);
                    var request = new PutObjectRequest
                    {
                        BucketName  = _config.Container,
                        Key         = String.Format("{0}/{1}", _config.DestinationFolder, filename),
                        InputStream = fs,
                        ContentType = file.ContentType,
                        CannedACL   = S3CannedACL.PublicRead
                    };

                    var cancellationToken = new CancellationToken();
                    var response          = await _s3Client.PutObjectAsync(request, cancellationToken);

                    code = response.HttpStatusCode;
                    fs.Flush();
                }

                message.FileName     = file.FileName;
                message.GuidFileName = filename;
                message.FullPath     = String.Format("{0}/{1}", _config.DestinationFolder, filename);
                message.Message      = code == HttpStatusCode.OK ? UploadMessage.SUCCESS : UploadMessage.ERROR;
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
                message.Message = ex.Message;
            }

            return(message);
        }
예제 #10
0
        /// <summary>
        /// Pushes the inputted chunk to the network, sending it the required amount of peers.
        /// </summary>
        /// <param name="chunk">The chunk to push to the network</param>
        /// <param name="chunkPath">String path to the chunks</param>
        /// <param name="numberOfRecevingPeers">The number of peers to send the file to,
        /// this will be the amount of receivers, unless the network is smaller than the given input.</param>
        /// <param name="receiverOffset">The offset for whom to send the files to, this determines the spacing of the chunks on the peerlist.</param>
        /// <returns>Boolean of whether the push was a success.</returns>
        public bool Push(P2PChunk chunk, string chunkPath, int numberOfRecevingPeers = 10, int receiverOffset = 0)
        {
            this._port = _ports.GetAvailablePort();
            List <Peer> peers      = this.GetPeers();
            FileInfo    fileInfo   = new FileInfo(chunkPath);
            Listener    listener   = new Listener(this._port);
            bool        sendToAll  = true;
            int         listLength = peers.Count;
            int         peerCount;
            int         numberOfReceivers = Math.Min(numberOfRecevingPeers, listLength);

            for (peerCount = 0; peerCount < numberOfReceivers; peerCount++)
            {
                Peer currentPeer = peers[(peerCount + receiverOffset) % listLength];
                var  upload      = new UploadMessage(currentPeer)
                {
                    filesize     = fileInfo.Length,
                    fullFilename = chunk.originalHash,
                    chunkHash    = chunk.hash,
                    path         = chunkPath,
                    port         = this._port
                };

                if (listener.SendAndAwaitResponse(ref upload, 2000))
                {
                    if (upload.statusCode == StatusCode.ACCEPTED)
                    {
                        ChunkSender sender = new ChunkSender(currentPeer.StringIp, upload.port);

                        if (sender.Send(chunkPath))
                        {
                            DiskHelper.ConsoleWrite($"The chunk {chunk.hash} was sent to {currentPeer.GetUuid()}");
                            chunk.AddPeer(currentPeer.GetUuid());
                        }
                        else
                        {
                            sendToAll = false;
                        }
                        _ports.Release(upload.port);
                    }
                }
            }

            _ports.Release(this._port);
            return(sendToAll);
        }
예제 #11
0
 public UploadReturnMessage UploadFile(UploadMessage uploadMessage)
 {
     throw new NotImplementedException();
 }
예제 #12
0
 /// <summary>
 ///		Lanza un evento con el mensaje
 /// </summary>
 internal void RaiseMessageEvent(string message, bool error)
 {
     UploadMessage?.Invoke(this, new EventArguments.UploadEventArgs(message, error));
 }