Пример #1
0
		public async static Task<Guid> RequestCallbackAsync(Uri callbackUri, DateTimeOffset callbackTime, CancellationToken cancellationToken)
		{
			if (callbackUri == null)
			{
				throw new ArgumentNullException("callbackUri");
			}

			if (!callbackUri.IsAbsoluteUri)
			{
				throw new ArgumentException("Callback Uri is not an absolute Uri.", "callbackUri");
			}

			var serviceBaseUri = new ServiceBaseUri();

			try
			{
				bool isDisposalRequired;
				HttpClient httpClient = AcquireHttpClient(out isDisposalRequired);

				try
				{
					Uri requestUri = BuildScheduleRequestUri(serviceBaseUri, callbackTime.UtcDateTime, callbackUri);
					string authorizationHeaderValue = RequestValidator.Issue(callbackUri);
					using (var requestMessage = new HttpRequestMessage(HttpMethod.Put, requestUri))
					{
						if (!string.IsNullOrEmpty(authorizationHeaderValue))
						{
							requestMessage.Headers.Add(_RevaleeAuthHttpHeaderName, authorizationHeaderValue);
						}

						using (HttpResponseMessage response = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false))
						{
							if (response.IsSuccessStatusCode)
							{
								string responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
								return Guid.ParseExact(responseText, "D");
							}
							else
							{
								throw new RevaleeRequestException(serviceBaseUri, callbackUri,
									new WebException(string.Format("The remote server returned an error: ({0}) {1}.",
										(int)response.StatusCode, response.ReasonPhrase), WebExceptionStatus.ProtocolError));
							}
						}
					}
				}
				finally
				{
					if (isDisposalRequired)
					{
						httpClient.Dispose();
					}
				}
			}
			catch (AggregateException aex)
			{
				throw new RevaleeRequestException(serviceBaseUri, callbackUri, aex.Flatten().InnerException);
			}
			catch (WebException wex)
			{
				throw new RevaleeRequestException(serviceBaseUri, callbackUri, wex);
			}
		}
Пример #2
0
        public async static Task <Guid> RequestCallbackAsync(Uri callbackUri, DateTimeOffset callbackTime, CancellationToken cancellationToken)
        {
            if (callbackUri == null)
            {
                throw new ArgumentNullException("callbackUri");
            }

            if (!callbackUri.IsAbsoluteUri)
            {
                throw new ArgumentException("Callback Uri is not an absolute Uri.", "callbackUri");
            }

            var serviceBaseUri = new ServiceBaseUri();

            try
            {
                bool       isDisposalRequired;
                HttpClient httpClient = AcquireHttpClient(out isDisposalRequired);

                try
                {
                    Uri    requestUri = BuildScheduleRequestUri(serviceBaseUri, callbackTime.UtcDateTime, callbackUri);
                    string authorizationHeaderValue = RequestValidator.Issue(callbackUri);
                    using (var requestMessage = new HttpRequestMessage(HttpMethod.Put, requestUri))
                    {
                        if (!string.IsNullOrEmpty(authorizationHeaderValue))
                        {
                            requestMessage.Headers.Add(_RevaleeAuthHttpHeaderName, authorizationHeaderValue);
                        }

                        using (HttpResponseMessage response = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false))
                        {
                            if (response.IsSuccessStatusCode)
                            {
                                string responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                                return(Guid.ParseExact(responseText, "D"));
                            }
                            else
                            {
                                throw new RevaleeRequestException(serviceBaseUri, callbackUri,
                                                                  new WebException(string.Format("The remote server returned an error: ({0}) {1}.",
                                                                                                 (int)response.StatusCode, response.ReasonPhrase), WebExceptionStatus.ProtocolError));
                            }
                        }
                    }
                }
                finally
                {
                    if (isDisposalRequired)
                    {
                        httpClient.Dispose();
                    }
                }
            }
            catch (AggregateException aex)
            {
                throw new RevaleeRequestException(serviceBaseUri, callbackUri, aex.Flatten().InnerException);
            }
            catch (WebException wex)
            {
                throw new RevaleeRequestException(serviceBaseUri, callbackUri, wex);
            }
        }
Пример #3
0
		public async static Task<bool> CancelCallbackAsync(Guid callbackId, Uri callbackUri, CancellationToken cancellationToken)
		{
			if (Guid.Empty.Equals(callbackId))
			{
				throw new ArgumentNullException("callbackId");
			}

			if (callbackUri == null)
			{
				throw new ArgumentNullException("callbackUri");
			}

			if (!callbackUri.IsAbsoluteUri)
			{
				throw new ArgumentException("Callback Uri is not an absolute Uri.", "callbackUri");
			}

			var serviceBaseUri = new ServiceBaseUri();

			try
			{
				bool isDisposalRequired;
				HttpClient httpClient = AcquireHttpClient(out isDisposalRequired);

				try
				{
					Uri requestUri = BuildCancelRequestUri(serviceBaseUri, callbackId, callbackUri);
					using (var requestMessage = new HttpRequestMessage(HttpMethod.Put, requestUri))
					{
						using (HttpResponseMessage response = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false))
						{
							if (response.IsSuccessStatusCode)
							{
								return true;
							}
							else
							{
								throw new RevaleeRequestException(serviceBaseUri, callbackUri,
									new WebException(string.Format("The remote server returned an error: ({0}) {1}.",
										(int)response.StatusCode, response.ReasonPhrase), WebExceptionStatus.ProtocolError));
							}
						}
					}
				}
				finally
				{
					if (isDisposalRequired)
					{
						httpClient.Dispose();
					}
				}
			}
			catch (AggregateException aex)
			{
				throw new RevaleeRequestException(serviceBaseUri, callbackUri, aex.Flatten().InnerException);
			}
			catch (WebException wex)
			{
				throw new RevaleeRequestException(serviceBaseUri, callbackUri, wex);
			}
		}
Пример #4
0
        public async static Task <bool> CancelCallbackAsync(Guid callbackId, Uri callbackUri, CancellationToken cancellationToken)
        {
            if (Guid.Empty.Equals(callbackId))
            {
                throw new ArgumentNullException("callbackId");
            }

            if (callbackUri == null)
            {
                throw new ArgumentNullException("callbackUri");
            }

            if (!callbackUri.IsAbsoluteUri)
            {
                throw new ArgumentException("Callback Uri is not an absolute Uri.", "callbackUri");
            }

            var serviceBaseUri = new ServiceBaseUri();

            try
            {
                bool       isDisposalRequired;
                HttpClient httpClient = AcquireHttpClient(out isDisposalRequired);

                try
                {
                    Uri requestUri = BuildCancelRequestUri(serviceBaseUri, callbackId, callbackUri);
                    using (var requestMessage = new HttpRequestMessage(HttpMethod.Put, requestUri))
                    {
                        using (HttpResponseMessage response = await httpClient.SendAsync(requestMessage, HttpCompletionOption.ResponseContentRead, cancellationToken).ConfigureAwait(false))
                        {
                            if (response.IsSuccessStatusCode)
                            {
                                return(true);
                            }
                            else
                            {
                                throw new RevaleeRequestException(serviceBaseUri, callbackUri,
                                                                  new WebException(string.Format("The remote server returned an error: ({0}) {1}.",
                                                                                                 (int)response.StatusCode, response.ReasonPhrase), WebExceptionStatus.ProtocolError));
                            }
                        }
                    }
                }
                finally
                {
                    if (isDisposalRequired)
                    {
                        httpClient.Dispose();
                    }
                }
            }
            catch (AggregateException aex)
            {
                throw new RevaleeRequestException(serviceBaseUri, callbackUri, aex.Flatten().InnerException);
            }
            catch (WebException wex)
            {
                throw new RevaleeRequestException(serviceBaseUri, callbackUri, wex);
            }
        }