/// <summary>Attempts to get data from a web request.</summary> /// <param name="url">The URL for the request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <param name="data">The raw data to be posted.</param> /// <param name="callBack">The call-back to invoke after the request is complete, if null this method is synchronous.</param> /// <param name="state">The state information, ignored if callBack is null.</param> internal static byte[] Post(Uri url, OneAllMethod method, Credential creds, byte[] data, BinaryReceivedHandler callBack, object state) { byte[] retVal = null; if (callBack == null) { retVal = PostSync(url, method, creds, data); } else { PostAsync(url, method, creds, data, callBack, state); } return retVal; }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="request">The HTTP web request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <param name="callBack">The call-back to invoke after the request is complete.</param> /// <param name="state">The initial state object provided.</param> private static void GetAsync(HttpWebRequest request, OneAllMethod method, Credential creds, BinaryReceivedHandler callBack, object state) { request.SetHTTPMethod(method); request.SetBasicAuth(creds); request.BeginGetResponse(OnRequestCompleted, new BinaryWebClientState() { Request = request, Callback = callBack, State = state }); }
/// <summary>Sets the request to use a basic authentication credential and header.</summary> /// <param name="request">The request.</param> /// <param name="cred">The credential.</param> internal static void SetBasicAuth(this HttpWebRequest request, Credential cred) { if (request != null && cred != null && cred.IsValid()) { CredentialCache cache = new CredentialCache(); NetworkCredential realCred = new NetworkCredential(cred.PublicKey, cred.PrivateKey.ToUnsecureString()); cache.Add(request.RequestUri, OneAllConstants.CRED_BASIC, realCred); request.UseDefaultCredentials = false; request.Credentials = cache; request.UserAgent = string.Format(CultureInfo.InvariantCulture, OneAllConstants.FORMAT_USER_AGENT, Assembly.GetExecutingAssembly().GetName().Version.ToString(4)); request.Headers.Add(OneAllConstants.HEAD_AUTHORIZATION, string.Format(CultureInfo.InvariantCulture, OneAllConstants.HEAD_BASIC, Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format(CultureInfo.InvariantCulture, OneAllConstants.HEAD_BASIC_CRED, realCred.UserName, realCred.Password))))); } }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="request">The HTTP web request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <returns>The binary data from the request.</returns> private static byte[] GetSync(HttpWebRequest request, OneAllMethod method, Credential creds) { request.SetHTTPMethod(method); request.SetBasicAuth(creds); return ReadResponse(request); }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="url">The URL for the request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <returns>The binary data from the request.</returns> private static byte[] GetSync(Uri url, OneAllMethod method, Credential creds) { return GetSync(HttpWebRequest.Create(url) as HttpWebRequest, method, creds); }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="url">The URL for the request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <param name="callBack">The call-back to invoke after the request is complete.</param> /// <param name="state">The state information.</param> private static void GetAsync(Uri url, OneAllMethod method, Credential creds, BinaryReceivedHandler callBack, object state) { GetAsync(HttpWebRequest.Create(url) as HttpWebRequest, method, creds, callBack, state); }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="request">The HTTP web request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <param name="data">The raw data to be posted.</param> /// <returns>The binary data from the request.</returns> private static byte[] PostSync(HttpWebRequest request, OneAllMethod method, Credential creds, byte[] data) { request.ContentType = OneAllConstants.HTTP_CONTENTTYPE_FORMURLENCODE; request.SetHTTPMethod(method); request.SetBasicAuth(creds); using (Stream stream = request.GetRequestStream()) { byte[] buffer = new byte[data.Length]; Array.Copy(data, buffer, buffer.Length); stream.Write(buffer, 0, buffer.Length); stream.Flush(); Array.Clear(buffer, 0, buffer.Length); buffer = null; } return ReadResponse(request); }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="url">The URL for the request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <param name="data">The raw data to be posted.</param> /// <returns>The binary data from the request.</returns> private static byte[] PostSync(Uri url, OneAllMethod method, Credential creds, byte[] data) { return PostSync(HttpWebRequest.Create(url) as HttpWebRequest, method, creds, data); }
/// <summary>Attempts to get data from a web request.</summary> /// <param name="request">The HTTP web request.</param> /// <param name="method">The OneAll supported HTTP method to use.</param> /// <param name="creds">The <see cref="Credential"/> used to authenticate the call, or null for calls not requiring authentication.</param> /// <param name="data">The raw data to be posted.</param> /// <param name="callBack">The call-back to invoke after the request is complete.</param> /// <param name="state">The initial state object provided.</param> private static void PostAsync(HttpWebRequest request, OneAllMethod method, Credential creds, byte[] data, BinaryReceivedHandler callBack, object state) { request.ContentType = OneAllConstants.HTTP_CONTENTTYPE_FORMURLENCODE; request.SetHTTPMethod(method); request.SetBasicAuth(creds); request.BeginGetRequestStream(OnRequestStreamObtained, new BinaryWebClientState() { Request = request, Callback = callBack, State = state, Data = data }); }