public void GenerateInsertStatementTest() { StatementParameters testParamaters = new StatementParameters(); testParamaters.Add("testkey1", "test val 1"); testParamaters.Add("testkey2", 33); testParamaters.Add("testkey3", "testval3"); var result = testParamaters.GenerateInsertStatement("testTable"); Assert.IsNotNull(result); Assert.AreEqual("INSERT INTO testTable (testkey1,testkey2,testkey3) VALUES(@testkey1,@testkey2,@testkey3)", result); }
/// <summary> /// Downloads either a 'application/pdf' or 'text/csv' statement /// </summary> /// <param name="statementParameters">The statement parameters.</param> /// <returns>Task<Stream>.</returns> /// <exception cref="StarlingBank.Exceptions.APIException">Failed to parse the response: " + ex.Message</exception> /// <exception cref="IBaseServices baseServices)">Failed to parse the response: " + ex.Message</exception> /// <return>Returns the Stream response from the API call</return> public async Task <Stream> DownloadStatementAsync(StatementParameters statementParameters) { //prepare query string for API call var queryBuilder = new StringBuilder(); queryBuilder.Append("api/v2/accounts/{accountUid}/statement/download"); //process optional template parameters APIHelper.AppendUrlWithTemplateParameters(queryBuilder, new Dictionary <string, object> { { "accountUid", statementParameters.AccountUid } }); //process optional query parameters APIHelper.AppendUrlWithQueryParameters(queryBuilder, new Dictionary <string, object> { { "yearMonth", statementParameters.Year + "-" + statementParameters.Month } }, _arrayDeserializationFormat); //validate and preprocess url var queryUrl = APIHelper.GetUrl(statementParameters.StarlingClient, queryBuilder); //append request with appropriate headers and parameters Dictionary <string, string> headers = APIHelper.GetRequestHeaders(statementParameters.StarlingClient, true); var request = new HttpRequestMessage(HttpMethod.Get, queryUrl); foreach (KeyValuePair <string, string> header in headers) { request.Headers.Add(header.Key, header.Value); } request.Headers.Add("accept", statementParameters.StatementType == StatementType.CSV ? "text/csv" : "application/pdf"); //prepare the API call request to fetch the response HttpClient client = _clientFactory.CreateClient("StarlingBank"); HttpResponseMessage response = await client.SendAsync(request); //handle errors defined at the API level await _baseServices.ValidateResponse(request, response); try { return(await response.Content.ReadAsStreamAsync()); } catch (Exception ex) { throw new APIException("Failed to parse the response: " + ex.Message, request, response); } }