FileUploadResponse MakeRequest(string url, string tag, MultipartBuilder requestBodyBuilder, IDictionary <string, string> headers = null)
        {
            //RequestBody requestBody = requestBodyBuilder.Build();
            CountingRequestBody requestBody = new CountingRequestBody(requestBodyBuilder.Build(), tag, this);
            var requestBuilder = new Request.Builder();

            if (headers != null)
            {
                foreach (string key in headers.Keys)
                {
                    if (!string.IsNullOrEmpty(headers[key]))
                    {
                        requestBuilder = requestBuilder.AddHeader(key, headers[key]);
                    }
                }
            }

            Request request = requestBuilder
                              .Url(url)
                              .Post(requestBody)
                              .Build();

            OkHttpClient client = new OkHttpClient();

            client.SetConnectTimeout(ConnectUploadTimeout, UploadTimeoutUnit); // connect timeout
            client.SetReadTimeout(SocketUploadTimeout, UploadTimeoutUnit);     // socket timeout

            Response response       = client.NewCall(request).Execute();
            var      responseString = response.Body().String();
            var      code           = response.Code();

            IDictionary <string, string> responseHeaders = new Dictionary <string, string>();
            var rHeaders = response.Headers();

            if (rHeaders != null)
            {
                var names = rHeaders.Names();
                foreach (string name in names)
                {
                    if (!string.IsNullOrEmpty(rHeaders.Get(name)))
                    {
                        responseHeaders.Add(name, rHeaders.Get(name));
                    }
                }
            }

            FileUploadResponse fileUploadResponse = new FileUploadResponse(responseString, code, tag, new ReadOnlyDictionary <string, string>(responseHeaders));


            if (response.IsSuccessful)
            {
                FileUploadCompleted(this, fileUploadResponse);
            }
            else
            {
                FileUploadError(this, fileUploadResponse);
            }

            return(fileUploadResponse);
        }
        MultipartBuilder PrepareRequest(IDictionary <string, string> parameters = null, string boundary = null)
        {
            MultipartBuilder requestBodyBuilder = null;

            if (string.IsNullOrEmpty(boundary))
            {
                requestBodyBuilder = new MultipartBuilder()
                                     .Type(MultipartBuilder.Form);
            }
            else
            {
                requestBodyBuilder = new MultipartBuilder(boundary)
                                     .Type(MultipartBuilder.Form);
            }

            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    if (parameters[key] != null)
                    {
                        requestBodyBuilder.AddFormDataPart(key, parameters[key]);
                    }
                }
            }
            return(requestBodyBuilder);
        }
        public void Submit(SubmissionManifest parameters)
        {
            WebRequest req = WebRequest.Create(parameters.ResolvedTransport);

            if (req is HttpWebRequest)
            {
                HttpWebRequest   request   = (HttpWebRequest)req;
                MultipartBuilder multipart = new MultipartBuilder(request);

                ITarget assignment = parameters.Assignment;

                foreach (string key in assignment.TransportParameters.Keys)
                {
                    string value         = assignment.TransportParameters[key];
                    string resolvedValue = parameters.ResolveParameter(value);

                    if (key.StartsWith("$file."))
                    {
                        string trueKey = key.Substring("$file.".Length);

                        Stream stream = multipart.BeginWriteFile(trueKey,
                                                                 resolvedValue, "application/octet-stream");
                        parameters.PackageContentsIntoStream(stream);
                        multipart.EndWriteFile();
                    }
                    else
                    {
                        multipart.WriteParameter(key, resolvedValue);
                    }
                }

                multipart.Close();

                WebResponse response   = request.GetResponse();
                Stream      respStream = response.GetResponseStream();

                StringBuilder responseHolder = new StringBuilder();
                StreamReader  reader         = new StreamReader(respStream, Encoding.UTF8);
                char[]        buffer         = new char[BufferSize];

                int len;
                while ((len = reader.Read(buffer, 0, BufferSize)) > 0)
                {
                    responseHolder.Append(buffer, 0, len);
                }

                response.Close();

                this.response = responseHolder.ToString();
            }
        }
Ejemplo n.º 4
0
        public void Submit(SubmissionManifest parameters)
        {
            WebRequest req = WebRequest.Create(parameters.ResolvedTransport);

            if (req is HttpWebRequest)
            {
                HttpWebRequest request = (HttpWebRequest)req;
                MultipartBuilder multipart = new MultipartBuilder(request);

                ITarget assignment = parameters.Assignment;

                foreach (string key in assignment.TransportParameters.Keys)
                {
                    string value = assignment.TransportParameters[key];
                    string resolvedValue = parameters.ResolveParameter(value);

                    if (key.StartsWith("$file."))
                    {
                        string trueKey = key.Substring("$file.".Length);

                        Stream stream = multipart.BeginWriteFile(trueKey,
                            resolvedValue, "application/octet-stream");
                        parameters.PackageContentsIntoStream(stream);
                        multipart.EndWriteFile();
                    }
                    else
                    {
                        multipart.WriteParameter(key, resolvedValue);
                    }
                }

                multipart.Close();

                WebResponse response = request.GetResponse();
                Stream respStream = response.GetResponseStream();

                StringBuilder responseHolder = new StringBuilder();
                StreamReader reader = new StreamReader(respStream, Encoding.UTF8);
                char[] buffer = new char[BufferSize];

                int len;
                while ((len = reader.Read(buffer, 0, BufferSize)) > 0)
                {
                    responseHolder.Append(buffer, 0, len);
                }

                response.Close();

                this.response = responseHolder.ToString();
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Add files using the multipart content-type
        /// </summary>
        /// <param name="fileName">The file name and extension</param>
        /// <param name="fileType">The file type</param>
        /// <param name="folderId">The id of the folder</param>
        /// <param name="description">The description of the file</param>
        /// <param name="source">The source of the original file</param>
        /// <param name="data">The data contained in the file being uploaded</param>
        /// <returns>Returns the file Id associated with the uploaded file</returns>
        public string AddLibraryFilesMultipart(string fileName, FileType fileType, string folderId, string description, FileSource source, byte[] data)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                throw new IllegalArgumentException(ConstantContactClient.Resources.Errors.FileNameNull);
            }

            var extension = Path.GetExtension(fileName).ToLowerInvariant();

            string[] fileTypes = new string[5] {
                ".jpeg", ".jpg", ".gif", ".png", ".pdf"
            };

            if (!((IList <string>)fileTypes).Contains(extension))
            {
                throw new IllegalArgumentException(ConstantContactClient.Resources.Errors.FileTypeInvalid);
            }

            if (string.IsNullOrEmpty(folderId) || string.IsNullOrEmpty(description))
            {
                throw new IllegalArgumentException(ConstantContactClient.Resources.Errors.FieldNull);
            }

            if (data == null)
            {
                throw new IllegalArgumentException(ConstantContactClient.Resources.Errors.FileNull);
            }

            string result = null;
            string url    = String.Concat(Settings.Endpoints.Default.BaseUrl, Settings.Endpoints.Default.MyLibraryFiles);

            byte[]         content  = MultipartBuilder.CreateMultipartContent(fileName, data, null, fileType.ToString(), folderId, description, source.ToString());
            RawApiResponse response = RestClient.PostMultipart(url, UserServiceContext.AccessToken, UserServiceContext.ApiKey, content);

            if (response.IsError)
            {
                throw new ConstantContactClientException(response.GetErrorMessage());
            }

            if (!response.IsError && response.StatusCode == System.Net.HttpStatusCode.Accepted)
            {
                string location = response.Headers["Location"];
                int    idStart  = location.LastIndexOf("/") + 1;
                result = location.Substring(idStart);
            }

            return(result);
        }
Ejemplo n.º 6
0
        MultipartBuilder PrepareRequest(IDictionary <string, string> parameters = null)
        {
            MultipartBuilder requestBodyBuilder = new MultipartBuilder()
                                                  .Type(MultipartBuilder.Form);

            if (parameters != null)
            {
                foreach (string key in parameters.Keys)
                {
                    if (parameters[key] != null)
                    {
                        requestBodyBuilder.AddFormDataPart(key, parameters[key]);
                    }
                }
            }
            return(requestBodyBuilder);
        }
Ejemplo n.º 7
0
        FileUploadResponse MakeRequest(string url, string tag, MultipartBuilder requestBodyBuilder, IDictionary <string, string> headers = null)
        {
            //RequestBody requestBody = requestBodyBuilder.Build();
            CountingRequestBody requestBody = new CountingRequestBody(requestBodyBuilder.Build(), this);
            var requestBuilder = new Request.Builder();

            if (headers != null)
            {
                foreach (string key in headers.Keys)
                {
                    if (!string.IsNullOrEmpty(headers[key]))
                    {
                        requestBuilder = requestBuilder.AddHeader(key, headers[key]);
                    }
                }
            }

            Request request = requestBuilder
                              .Url(url)
                              .Post(requestBody)
                              .Build();

            OkHttpClient client = new OkHttpClient();

            client.SetConnectTimeout(5, TimeUnit.Minutes); // connect timeout
            client.SetReadTimeout(5, TimeUnit.Minutes);    // socket timeout

            Response response           = client.NewCall(request).Execute();
            var      responseString     = response.Body().String();
            var      code               = response.Code();
            var      fileUploadResponse = new FileUploadResponse(responseString, code, tag);

            if (response.IsSuccessful)
            {
                FileUploadCompleted(this, fileUploadResponse);

                return(fileUploadResponse);
            }
            else
            {
                FileUploadError(this, fileUploadResponse);
                return(fileUploadResponse);
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        ///  Create a Remove Contacts Multipart Activity
        /// </summary>
        /// <param name="fileName">The file name to be imported</param>
        /// <param name="fileContent">The file content to be imported</param>
        /// <param name="lists">Array of list's id</param>
        /// <returns>Returns an Activity object.</returns>
        public Activity RemoveContactsMultipartActivity(string fileName, byte[] fileContent, IList <string> lists)
        {
            if (string.IsNullOrEmpty(fileName))
            {
                throw new IllegalArgumentException(CTCT.Resources.Errors.FileNameNull);
            }

            var extension = Path.GetExtension(fileName).ToLowerInvariant();

            string[] fileTypes = new string[4] {
                ".txt", ".csv", ".xls", ".xlsx"
            };

            if (!((IList <string>)fileTypes).Contains(extension))
            {
                throw new IllegalArgumentException(CTCT.Resources.Errors.FileTypeInvalid);
            }

            if (fileContent == null)
            {
                throw new IllegalArgumentException(CTCT.Resources.Errors.FileNull);
            }

            if (lists == null || lists.Count.Equals(0))
            {
                throw new IllegalArgumentException(CTCT.Resources.Errors.ActivityOrId);
            }

            string url = String.Concat(Settings.Endpoints.Default.BaseUrl, Settings.Endpoints.Default.RemoveFromListsActivity);

            byte[]         data     = MultipartBuilder.CreateMultipartContent(fileName, fileContent, lists);
            RawApiResponse response = RestClient.PostMultipart(url, UserServiceContext.AccessToken, UserServiceContext.ApiKey, data);

            try
            {
                var activity = response.Get <Activity>();
                return(activity);
            }
            catch (Exception ex)
            {
                throw new CtctException(ex.Message, ex);
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        ///  Create a Remove Contacts Multipart Activity
        /// </summary>
        /// <param name="accessToken">Constant Contact OAuth2 access token</param>
        /// <param name="apiKey">The API key for the application</param>>
        /// <param name="fileName">The file name to be imported</param>
        /// <param name="fileContent">The file content to be imported</param>
        /// <param name="lists">Array of list's id</param>
        /// <returns>Returns an Activity object.</returns>
        public Activity RemoveContactsMultipartActivity(string accessToken, string apiKey, string fileName, byte[] fileContent, IList <string> lists)
        {
            Activity activity = null;
            string   url      = String.Concat(Config.Endpoints.BaseUrl, Config.Endpoints.RemoveFromListsActivity);

            byte[]       data     = MultipartBuilder.CreateMultipartContent(fileName, fileContent, lists);
            CUrlResponse response = RestClient.PostMultipart(url, accessToken, apiKey, data);

            if (response.IsError)
            {
                throw new CtctException(response.GetErrorMessage());
            }

            if (response.HasData)
            {
                activity = response.Get <Activity>();
            }

            return(activity);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Add files using the multipart content-type
        /// </summary>
        /// <param name="accessToken">Access token.</param>
        /// <param name="apiKey">The API key for the application</param>
        /// <param name="fileName">The file name and extension</param>
        /// <param name="fileType">The file type</param>
        /// <param name="folderId">The id of the folder</param>
        /// <param name="description">The description of the file</param>
        /// <param name="source">The source of the original file</param>
        /// <param name="data">The data contained in the file being uploaded</param>
        /// <returns>Returns the file Id associated with the uploaded file</returns>
        public string AddLibraryFilesMultipart(string accessToken, string apiKey, string fileName, FileType fileType, string folderId, string description, FileSource source, byte[] data)
        {
            string result = null;
            string url    = String.Concat(Config.Endpoints.BaseUrl, Config.Endpoints.MyLibraryFiles);

            byte[]       content  = MultipartBuilder.CreateMultipartContent(fileName, data, null, fileType.ToString(), folderId, description, source.ToString());
            CUrlResponse response = RestClient.PostMultipart(url, accessToken, apiKey, content);

            if (response.IsError)
            {
                throw new CtctException(response.GetErrorMessage());
            }

            if (!response.IsError && response.StatusCode == System.Net.HttpStatusCode.Accepted)
            {
                string location = response.Headers["Location"];
                int    idStart  = location.LastIndexOf("/") + 1;
                result = location.Substring(idStart);
            }

            return(result);
        }
        public static JSONObject uploadImage(File file)
        {
            try
            {
                final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png");

                RequestBody req = new MultipartBuilder().SetType(MultipartBody.FORM).addFormDataPart("userid", "8457851245")
                                  .addFormDataPart("userfile", "profile.png", RequestBody.create(MEDIA_TYPE_PNG, file)).build();

                Request request = new Request.Builder()
                                  .Url("url")
                                  .Post(req)
                                  .Build();

                OkHttpClient client   = new OkHttpClient();
                Response     response = client.newCall(request).execute();

                Log.d("response", "uploadImage:" + response.body().string());

                return(new JSONObject(response.body().string()));
            }
            catch (UnknownHostException | UnsupportedEncodingException e) {
                Log.e(TAG, "Error: " + e.getLocalizedMessage());
            } catch (Exception e)