예제 #1
0
        private HttpStatusCode HttpPost(string additionalUri, string body, out string responseString)
        {
            OAuth2Client.AccessToken ac = _oauth2Client.GetAccessToken(false);
            if (ac == null)
            {
                responseString = null;
                return(HttpStatusCode.BadRequest);
            }

            responseString = string.Empty;
            HttpClient client = new HttpClient();

            client.BaseAddress = _senslinkUri;

            // We want the response to be JSON.
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _oauth2Client.GetAccessToken(false).access_token);

            // Build up the data to POST.
            StringContent content = new StringContent(body);

            content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");

            Task <HttpResponseMessage> postTask = null;

            try
            {
                postTask = client.PostAsync(additionalUri, content);
                postTask.Wait(50000);
            }
            catch { }

            HttpStatusCode responseCode = HttpStatusCode.BadRequest;

            if (postTask.IsCompleted && !postTask.IsFaulted && !postTask.IsCanceled)
            {
                HttpResponseMessage message = postTask.Result;
                if (message.IsSuccessStatusCode)
                {
                    Task <string> responseContent = message.Content.ReadAsStringAsync();
                    responseContent.Wait(5000);

                    if (responseContent.IsCompleted && !postTask.IsFaulted && !postTask.IsCanceled)
                    {
                        if (postTask.Result != null)
                        {
                            responseString = responseContent.Result;
                        }
                    }
                }
                responseCode = postTask.Result.StatusCode;
            }
            return(responseCode);
        }
예제 #2
0
        private HttpStatusCode HttpGet(string additionalUri, out string responseString)
        {
            OAuth2Client.AccessToken ac = _oauth2Client.GetAccessToken(false);
            if (ac == null)
            {
                responseString = null;
                return(HttpStatusCode.BadRequest);
            }

            responseString = string.Empty;
            HttpClient client = new HttpClient();

            client.BaseAddress = _senslinkUri;

            // We want the response to be JSON.
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", ac.access_token);

            // Build up the data to POST.
            Task <HttpResponseMessage> getTask = client.GetAsync(additionalUri);

            getTask.Wait(50000);

            if (getTask.IsCompleted && !getTask.IsFaulted && !getTask.IsCanceled)
            {
                HttpResponseMessage message = getTask.Result;
                if (message.IsSuccessStatusCode)
                {
                    Task <string> readTask = null;
                    try
                    {
                        readTask = message.Content.ReadAsStringAsync();
                    }
                    catch { }
                    readTask.Wait(5000);

                    if (readTask.IsCompleted && !readTask.IsFaulted && !readTask.IsCanceled)
                    {
                        if (getTask.Result != null)
                        {
                            responseString = readTask.Result;
                        }
                    }
                }
            }
            return(getTask.Result.StatusCode);
        }
예제 #3
0
        private HttpStatusCode HttpGetFile(string additionalUrl, out byte[] downloadedFile)
        {
            downloadedFile = null;
            OAuth2Client.AccessToken ac = _oauth2Client.GetAccessToken(false);
            if (ac == null)
            {
                return(HttpStatusCode.BadRequest);
            }

            HttpClient client = new HttpClient();

            client.BaseAddress = _senslinkUri;

            // We want the response to be JSON.
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _oauth2Client.GetAccessToken(false).access_token);
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            Task <HttpResponseMessage> getTask = client.GetAsync(additionalUrl);

            Console.WriteLine("Downloading");
            while (!getTask.IsCompleted)
            {
                Console.Write(".");
                System.Threading.Thread.Sleep(1000);
            }

            HttpStatusCode responseCode = getTask.Result.StatusCode;

            if (getTask.Status == TaskStatus.RanToCompletion && getTask.Status != TaskStatus.Faulted && getTask.Status != TaskStatus.Canceled)
            {
                HttpContent   content  = getTask.Result.Content;
                Task <byte[]> readTask = content.ReadAsByteArrayAsync();

                while (!readTask.IsCompleted)
                {
                    Console.Write(".");
                    System.Threading.Thread.Sleep(1000);
                }
                downloadedFile = readTask.Result;
            }
            return(responseCode);
        }
예제 #4
0
        private HttpStatusCode HttpPostMultiPart(out string responseString, string additionalUri, string filePath, bool overWrite, FileMetaData metaData)
        {
            OAuth2Client.AccessToken ac = _oauth2Client.GetAccessToken(false);
            if (ac == null)
            {
                responseString = null;
                return(HttpStatusCode.BadRequest);
            }

            responseString = string.Empty;
            HttpClient client = new HttpClient();

            client.BaseAddress = _senslinkUri;

            // We want the response to be JSON.
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _oauth2Client.GetAccessToken(false).access_token);

            FileInfo fi = new FileInfo(filePath);

            byte[] fileBytes = File.ReadAllBytes(filePath);
            MultipartFormDataContent requestContent = new MultipartFormDataContent();

            //First Part - File
            ByteArrayContent fileContent = new ByteArrayContent(fileBytes);

            fileContent.Headers.Remove("Content-Type");
            fileContent.Headers.Add("Content-Disposition", $"form-data; name=\"\"; filename=\"{fi.Name}\"");
            requestContent.Add(fileContent);

            //Second Part - metaData in JSON format
            string        jsonContent     = JsonConvert.SerializeObject(metaData);
            StringContent metaDataContent = new StringContent(jsonContent);

            metaDataContent.Headers.Remove("Content-Type");
            metaDataContent.Headers.Add("Content-Disposition", "form-data; name=\"metaData\"");
            requestContent.Add(metaDataContent);

            //Third Part - metaData in JSON format
            StringContent overWriteContent = new StringContent(overWrite.ToString());

            overWriteContent.Headers.Remove("Content-Type");
            overWriteContent.Headers.Add("Content-Disposition", "form-data; name=\"overWrite\"");
            requestContent.Add(overWriteContent);

            //Forth Part - metaData in JSON format
            StringContent sharedWithUsersContent = new StringContent(metaData.shareLevel.ToString());

            sharedWithUsersContent.Headers.Remove("Content-Type");
            sharedWithUsersContent.Headers.Add("Content-Disposition", "form-data; name=\"sharedWithUsers\"");
            requestContent.Add(sharedWithUsersContent);

            // Build up the data to Put

            Task <HttpResponseMessage> putTask = null;

            try
            {
                putTask = client.PostAsync(additionalUri, requestContent);
                putTask.Wait(50000);
            }
            catch { }

            HttpStatusCode responseCode = HttpStatusCode.BadRequest;

            if (putTask.IsCompleted && !putTask.IsFaulted && !putTask.IsCanceled)
            {
                HttpResponseMessage message = putTask.Result;
                if (message.IsSuccessStatusCode)
                {
                    Task <string> responseContent = message.Content.ReadAsStringAsync();
                    responseContent.Wait(5000);

                    if (responseContent.IsCompleted && !putTask.IsFaulted && !putTask.IsCanceled)
                    {
                        if (putTask.Result != null)
                        {
                            responseString = responseContent.Result;
                        }
                    }
                }
                responseCode = putTask.Result.StatusCode;
            }
            return(responseCode);
        }