public static JToken FormToJson(this IOwinRequest req) { var r = req.ReadFormAsync().Result; var json = JsonConvert.SerializeObject(r.ToDictionary(pair => pair.Key, pair => pair.Value)); return(JToken.Parse(json)); }
async Task <ConsentAnswer> TryGetConsentAnswerAsync(IOwinRequest request) { ConsentAnswer consentAnswer; if (request.IsPost()) { IFormCollection formCollection = await request.ReadFormAsync(); string consent = formCollection.Get(_options.HandleConsentOptions.ConsentParameterName); consentAnswer = ConsentAnswer.TryParse(consent); } else if (request.IsGet()) { string consent = request.Query.Get(_options.HandleConsentOptions.ConsentParameterName); consentAnswer = ConsentAnswer.TryParse(consent); } else { consentAnswer = ConsentAnswer.InvalidMethod; } return(consentAnswer); }
/// <summary> /// Returns True if the <see cref="IOwinRequest"/> contains an LTI request that requires authentication. /// </summary> /// <param name="request">The <see cref="IOwinRequest"/> to examine.</param> /// <returns>True if the request contains an LTI request that requires authentication.</returns> public static async Task <bool> IsAuthenticatedLtiRequestAsync(this IOwinRequest request) { // All LTI 1.x communication is handled with HTTP POST if (!request.Method.Equals(WebRequestMethods.Http.Post)) { return(false); } // All LTI requests should contain content and specify ContentType if (string.IsNullOrEmpty(request.ContentType)) { return(false); } // LTI launch and content item requests are sent as form posts if (request.ContentType.Equals("application/x-www-form-urlencoded")) { var form = await request.ReadFormAsync(); var messageType = form[LtiConstants.LtiMessageTypeParameter]; return(!string.IsNullOrWhiteSpace(messageType)); } // LTI Outcome requests and responses are sent as Plain Old XML if (request.ContentType.Equals("application/xml")) { return(OutcomesClient.IsLtiOutcomesRequest(request.Body)); } // Tool Consumer Profile requests and responses do not need authentication return(false); }
private HttpRequestParams _getHttpRequestParams(IOwinRequest request) { var t = request.ReadFormAsync(); t.Wait(); return(new HttpRequestParams(request.Query, t.Result)); }
internal static async Task <IFormCollection> ReadFormFromBeginningAsync(this IOwinRequest request) { request.Body.Seek(0L, SeekOrigin.Begin); var form = await request.ReadFormAsync(); request.Body.Seek(0L, SeekOrigin.Begin); return(form); }
public static async Task <Dictionary <string, string> > GetBodyParameters(this IOwinRequest request) { var dictionary = new Dictionary <string, string>(StringComparer.CurrentCultureIgnoreCase); var formCollection = await request.ReadFormAsync().ConfigureAwait(false); foreach (var pair in formCollection) { var value = GetJoinedValue(pair.Value); dictionary.Add(pair.Key, value); } return(dictionary); }
/// <summary> /// Gets the form body request parameters. /// </summary> /// <param name="request">Owin Request.</param> /// <returns>Dictionary of form body parameters.</returns> public static Dictionary <string, string> GetBodyParameters(this IOwinRequest request) { var dictionary = new Dictionary <string, string>(StringComparer.CurrentCultureIgnoreCase); var formCollectionTask = request.ReadFormAsync(); formCollectionTask.Wait(); foreach (var pair in formCollectionTask.Result) { var value = GetJoinedValue(pair.Value); dictionary.Add(pair.Key, value); } return(dictionary); }
/// <summary> /// Parse the <see cref="IOwinRequest"/> into an <see cref="ILtiRequest"/>. /// </summary> /// <param name="request">The <see cref="IOwinRequest"/> to parse.</param> /// <returns>The <see cref="ILtiRequest"/>.</returns> public static async Task <ILtiRequest> ParseLtiRequestAsync(this IOwinRequest request) { var ltiRequest = new LtiRequest(null) { Url = request.Uri, HttpMethod = request.Method }; // LTI launch and content item requests are sent as form posts if (request.ContentType.Equals("application/x-www-form-urlencoded")) { var form = await request.ReadFormAsync(); foreach (var pair in form) { ltiRequest.Parameters.Add(pair.Key, string.Join(",", pair.Value)); } return(ltiRequest); } // LTI Outcome requests and responses are sent as Plain Old XML if (request.ContentType.Equals("application/xml")) { using (var ms = new MemoryStream()) { try { await request.Body.CopyToAsync(ms); using (var reader = new StreamReader(ms)) { ltiRequest.ImsxPoxEnvelope = await reader.ReadToEndAsync(); } } finally { if (request.Body.CanSeek) { request.Body.Position = 0; } } } var authorizationHeader = request.GetAuthorizationHeader(); ltiRequest.Parameters.Add(authorizationHeader.Parameters); return(ltiRequest); } return(ltiRequest); }
protected internal async Task <Dictionary <string, string[]> > GetRequestParametersAsync(IOwinRequest request) { Dictionary <string, string[]> parameters = new Dictionary <string, string[]>(); var query = request.Query; foreach (var p in query) { parameters.Add(p.Key, p.Value); } if (HasFormContentType(request)) { var formData = await request.ReadFormAsync(); foreach (var p in formData) { parameters.Add(p.Key, p.Value); } } return(parameters); }
public static async Task <IDictionary <string, string> > GetBodyParameters(IOwinRequest request) { var dictionary = new Dictionary <string, string>(StringComparer.CurrentCultureIgnoreCase); if (request.ContentType != "application/json") { var formCollectionTask = await request.ReadFormAsync(); foreach (var pair in formCollectionTask) { var value = GetJoinedValue(pair.Value); dictionary.Add(pair.Key, value); } } else { using (var stream = new MemoryStream()) { byte[] buffer = new byte[2048]; // read in chunks of 2KB int bytesRead; while ((bytesRead = request.Body.Read(buffer, 0, buffer.Length)) > 0) { stream.Write(buffer, 0, bytesRead); } var result = Encoding.UTF8.GetString(stream.ToArray()); // TODO: do something with the result var dict = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, object> >(result); foreach (var pair in dict) { string value = (pair.Value is string) ? Convert.ToString(pair.Value) : Newtonsoft.Json.JsonConvert.SerializeObject(pair.Value); dictionary.Add(pair.Key, value); } } } return(dictionary); }
public Task <IFormCollection> ReadFormAsync() { return(_request.ReadFormAsync()); }
public ExpressRequest(IOwinRequest request) { _request = request; Form = request.ReadFormAsync().Result; }
async Task<ConsentAnswer> TryGetConsentAnswerAsync(IOwinRequest request) { ConsentAnswer consentAnswer; if (request.IsPost()) { IFormCollection formCollection = await request.ReadFormAsync(); string consent = formCollection.Get(_options.HandleConsentOptions.ConsentParameterName); consentAnswer = ConsentAnswer.TryParse(consent); } else if (request.IsGet()) { string consent = request.Query.Get(_options.HandleConsentOptions.ConsentParameterName); consentAnswer = ConsentAnswer.TryParse(consent); } else { consentAnswer = ConsentAnswer.InvalidMethod; } return consentAnswer; }