예제 #1
0
        private static async Task <string> ExecuteRequest(string url, string method, string body)
        {
            var serviceUrl = ConfigurationProvider.GetServiceUrl(url);

            if (_tokenObtainedTime < DateTime.Now.AddMinutes(-10))
            {
                await GetAccessToken();
            }


            var httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);

            httpWebRequest.Accept = "application/json";
            httpWebRequest.Headers["Authorization"]  = "Bearer " + _accessToken;
            httpWebRequest.Headers["AcceptLanguage"] = "en_US";
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method      = method;

            if (!method.Equals("GET"))
            {
                httpWebRequest.Headers["Content-Length"] = body.Length.ToString();

                using (var requestStream = await httpWebRequest.GetRequestStreamAsync())
                {
                    using (var streamWriter = new StreamWriter(requestStream))
                    {
                        streamWriter.Write(body);
                    }
                    requestStream.Dispose();
                }
            }

            string result;


            using (var response = await httpWebRequest.GetResponseAsync())
            {
                using (var stream = response.GetResponseStream())
                {
                    using (var sr = new StreamReader(stream))
                    {
                        result = sr.ReadToEnd();
                    }
                }
            }

            return(result);
        }
예제 #2
0
        /*
         *   Purpose:   Gets the access token from PayPal
         *   Inputs:     n/a
         *   Returns:    access token
         *
         */
        private static async Task GetAccessToken()
        {
            var serviceUrl = ConfigurationProvider.GetServiceUrl("v1/oauth2/token");

            var clientId     = ConfigurationProvider.GetClientId();
            var clientSecret = ConfigurationProvider.GetClientSecret();

            var httpWebRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);

            httpWebRequest.Accept = "application/json";
            httpWebRequest.Headers["Authorization"]  = "Basic " + Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(clientId + ":" + clientSecret));
            httpWebRequest.Headers["AcceptLanguage"] = "en_US";
            httpWebRequest.Method = "POST";

            const string data = "grant_type=client_credentials";

            var requestStream = await Task.Factory.FromAsync(httpWebRequest.BeginGetRequestStream, httpWebRequest.EndGetRequestStream, null);

            using (var streamWriter = new StreamWriter(requestStream))
            {
                streamWriter.Write(data);
                streamWriter.Flush();
            }

            string result;

            using (var response = await httpWebRequest.GetResponseAsync())
            {
                using (var stream = response.GetResponseStream())
                {
                    using (var sr = new StreamReader(stream))
                    {
                        result = sr.ReadToEnd();
                    }
                }
            }

            var jObject = JObject.Parse(result);

            _accessToken       = (string)jObject["access_token"];
            _tokenObtainedTime = DateTime.Now;
        }