/// <summary> /// Processes a complete OFX request against the given authorization /// </summary> /// <param name="message">External OFX request</param> /// <returns>Raw OFX Payload</returns> public async Task <string> ProcessOfxMessage(AbstractTopLevelMessageSet message) { var request = PrepareOfxRequest(AuthRequest(), message); var response = await _utils.PostRequest(_opts.ApiUrl, request); return(response); }
/// <summary> /// Wrap and send OFX request message sets to the service and return the response data. /// /// This is an asycronous call. /// </summary> /// <param name="messageSets">Array of populated OFX message requests</param> /// <returns>The returned task includes a populated OFX response object on successfull call</returns> public async Task<Protocol.OFX> sendRequestAsync(AbstractTopLevelMessageSet[] messageSets) { // Create a HttpContent object wrapping the message sets var request = StreamContent.Create(messageSets); // Send and await results return await sendRequestAsync(request).ConfigureAwait(false); }
/// <summary> /// Construct an StreamContent from a provided array of AbstractTopLevelMessageSet. /// Since all OFX messages are an OFX wrapper around an 1 or more AbstractTopLevelMessageSet entities, this /// convenience function saves the caller having to construct a wrapper OFX object on each call. /// /// Note that the AbstractTopLevelMessageSet order must obey the rules for the OFX protocol. See OFX specification v2.1.1 for details. /// </summary> /// <param name="messageSets">1 or more populated AbstractTopLevelMessageSet objects representing OFX requests or responses.</param> /// <returns>Created StreamContent ready to send with HttpClient.Post</returns> public static StreamContent Create(AbstractTopLevelMessageSet[] messageSets) { // Wrap message sets in OFX object Protocol.OFX ofx = new Protocol.OFX(); ofx.Items = messageSets; // Call through to OFX class-based factory method return Create(ofx); }
internal string PrepareOfxRequest(IRequestBuilder authBuilder, AbstractTopLevelMessageSet messageSet) { var authMessage = authBuilder.Build(); var ofxRequest = new OFX { Items = new[] { authMessage, messageSet } }; var content = _serializer.Serialize(ofxRequest); return(content); }