Beispiel #1
0
        public async Task <ActionResult> UploadDocument(IEnumerable <HttpPostedFileBase> files, string comments, Guid requestID, Guid?taskID, string authToken, DTO.Enums.TaskItemTypes?taskItemType)
        {
            List <Lpp.Dns.DTO.ExtendedDocumentDTO> documents = new List <Lpp.Dns.DTO.ExtendedDocumentDTO>();

            using (var web = new System.Net.Http.HttpClient())
            {
                web.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authToken);
                web.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("multipart/form-data"));

                HttpResponseMessage response = new HttpResponseMessage();
                foreach (var f in files)
                {
                    var file = f;
                    using (MultipartFormDataContent container = new MultipartFormDataContent())
                    {
                        string filename = System.IO.Path.GetFileName(file.FileName);
                        container.Add(new StreamContent(file.InputStream), "files", filename);
                        container.Add(new StringContent(System.IO.Path.GetFileNameWithoutExtension(filename)), "documentName");
                        container.Add(new StringContent(requestID.ToString()), "requestID");
                        if (taskID.HasValue)
                        {
                            container.Add(new StringContent(taskID.Value.ToString()), "taskID");

                            if (taskItemType.HasValue)
                            {
                                container.Add(new StringContent(taskItemType.Value.ToString("D")), "taskItemType");
                            }
                        }

                        if (!string.IsNullOrWhiteSpace(comments))
                        {
                            container.Add(new StringContent(comments), "comments");
                        }

                        response = await web.PostAsync(WebConfigurationManager.AppSettings["ServiceUrl"] + "/documents/upload", container);

                        string body = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            Lpp.Utilities.BaseResponse <DTO.ExtendedDocumentDTO> savedDocument = Newtonsoft.Json.JsonConvert.DeserializeObject <Lpp.Utilities.BaseResponse <DTO.ExtendedDocumentDTO> >(body);

                            if (savedDocument.results != null && savedDocument.results.Length > 0)
                            {
                                documents.AddRange(savedDocument.results);
                            }
                        }
                        else
                        {
                            Response.StatusCode = (int)response.StatusCode;
                            return(Json(new { success = false, content = body }, "text/plain"));
                        }
                    }
                }
            }

            return(Json(new { success = true, content = Newtonsoft.Json.JsonConvert.SerializeObject(documents) }, "text/plain"));
        }
        public async Task <ActionResult> LoadFTPFiles(FTPCredentials credentials, Guid requestID, Guid?taskID, string authToken, string comments, IEnumerable <string> paths, DTO.Enums.TaskItemTypes?taskItemType)
        {
            List <Lpp.Dns.DTO.ExtendedDocumentDTO> documents = new List <Lpp.Dns.DTO.ExtendedDocumentDTO>();

            using (var web = new System.Net.Http.HttpClient())
                using (var sftp = new SftpClient(credentials.Address, credentials.Port, credentials.Login, credentials.Password))
                {
                    web.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authToken);
                    web.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("multipart/form-data"));

                    try
                    {
                        sftp.Connect();

                        HttpResponseMessage response = new HttpResponseMessage();
                        foreach (var p in paths)
                        {
                            var path     = p;
                            var fileInfo = sftp.Get(path);
                            using (MultipartFormDataContent container = new MultipartFormDataContent())
                                using (var ftpSource = sftp.OpenRead(path))
                                {
                                    string filename = System.IO.Path.GetFileName(fileInfo.Name);
                                    container.Add(new StreamContent(ftpSource), "files", filename);
                                    container.Add(new StringContent(System.IO.Path.GetFileNameWithoutExtension(filename)), "documentName");
                                    container.Add(new StringContent(requestID.ToString()), "requestID");
                                    if (taskID.HasValue)
                                    {
                                        container.Add(new StringContent(taskID.Value.ToString()), "taskID");

                                        if (taskItemType.HasValue)
                                        {
                                            container.Add(new StringContent(taskItemType.Value.ToString("D")), "taskItemType");
                                        }
                                    }

                                    if (!string.IsNullOrWhiteSpace(comments))
                                    {
                                        container.Add(new StringContent(comments), "comments");
                                    }

                                    response = await web.PostAsync(WebConfigurationManager.AppSettings["ServiceUrl"] + "/documents/upload", container);

                                    string body = await response.Content.ReadAsStringAsync();

                                    if (response.IsSuccessStatusCode)
                                    {
                                        Lpp.Utilities.BaseResponse <DTO.ExtendedDocumentDTO> savedDocument = Newtonsoft.Json.JsonConvert.DeserializeObject <Lpp.Utilities.BaseResponse <DTO.ExtendedDocumentDTO> >(body);

                                        if (savedDocument.results != null && savedDocument.results.Length > 0)
                                        {
                                            documents.AddRange(savedDocument.results);
                                        }
                                    }
                                    else
                                    {
                                        Response.StatusCode = (int)response.StatusCode;
                                        return(Json(new { success = false, content = body }, "text/plain"));
                                    }
                                }
                        }
                    }
                    catch (Exception ex)
                    {
                        Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
                        return(Json(new { success = false, content = ex.Message }, "text/plain"));
                    }
                    finally
                    {
                        if (sftp.IsConnected)
                        {
                            sftp.Disconnect();
                        }
                    }
                }

            return(Json(new { success = true, content = Newtonsoft.Json.JsonConvert.SerializeObject(documents) }, "text/plain"));
        }