public void Retry_Attempts_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Throws(new WebException(null, WebExceptionStatus.Timeout)); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock <HttpWebRequest> { CallBase = true }; responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.GetResponse(); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Redirect_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.Found); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection { { "Location", "test://localhost/sdata/invoices/redirect" } }); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock <HttpWebRequest> { CallBase = true }; responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.GetResponse(); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(response.Location, Is.EqualTo("test://localhost/sdata/invoices/redirect")); }
public void Multipart_Space_File_Only_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); var content = new MemoryStream(); requestMock.Setup(x => x.GetRequestStream()).Returns(content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post) { Files = { new AttachedFile("text/plain", "hel lo.txt", new MemoryStream(Encoding.UTF8.GetBytes("world"))) } }; var response = request.GetResponse(); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/related;")); Assert.That(text, Is.StringContaining("attachment; filename=\"hel lo.txt\"")); Assert.That(text, Is.StringContaining("world")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Multipart_FormData_Only_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); var content = new MemoryStream(); SetupGetRequestStreamAsync(requestMock, content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post) { Form = { { "id", "123" } } }; var response = request.EndGetResponse(request.BeginGetResponse(null, null)); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/form-data;")); Assert.That(text, Is.StringContaining("inline; name=id")); Assert.That(text, Is.StringContaining("123")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Retry_Attempts_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); const WebExceptionStatus status = #if PCL || NETFX_CORE || SILVERLIGHT WebExceptionStatus.ConnectFailure; #else WebExceptionStatus.Timeout; #endif SetupGetResponseAsync(requestMock, new WebException(null, status)); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock <HttpWebRequest> { CallBase = true }; responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.EndGetResponse(request.BeginGetResponse(null, null)); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Multipart_Unicode_File_Only_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); var content = new MemoryStream(); SetupGetRequestStreamAsync(requestMock, content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post) { Files = { new AttachedFile("text/plain", "\x65b0\x65e5\x9244\x4f4f\x91d1.txt", new MemoryStream(Encoding.UTF8.GetBytes("world"))) } }; var response = request.EndGetResponse(request.BeginGetResponse(null, null)); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/related;")); Assert.That(text, Is.StringContaining("attachment; filename*=utf-8''%E6%96%B0%E6%97%A5%E9%89%84%E4%BD%8F%E9%87%91.txt")); Assert.That(text, Is.StringContaining("world")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Multipart_Mixed_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); var content = new MemoryStream(); SetupGetRequestStreamAsync(requestMock, content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post, "main content") { Form = { { "id", "123" } }, Files = { new AttachedFile("text/plain", "hello.txt", new MemoryStream(Encoding.UTF8.GetBytes("world"))) } }; var response = request.EndGetResponse(request.BeginGetResponse(null, null)); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/related;")); Assert.That(text, Is.StringContaining("main content")); Assert.That(text, Is.StringContaining("inline; name=id")); Assert.That(text, Is.StringContaining("123")); Assert.That(text, Is.StringContaining("attachment; filename=\"hello.txt\"")); Assert.That(text, Is.StringContaining("world")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
private static Task <T> ExecuteAsync <T>(SDataRequest request, Func <SDataResponse, T> createResults, CancellationToken cancel) { var cancelScope = cancel.Register(request.Abort); return(Task.Factory .FromAsync <SDataResponse>(request.BeginGetResponse, request.EndGetResponse, null) .ContinueWith(task => { try { return createResults(task.Result); } catch (SDataException ex) { if (ex.Status == WebExceptionStatus.RequestCanceled) { cancel.ThrowIfCancellationRequested(); } if (cancel.IsCancellationRequested) { throw new TaskCanceledException(ex.Message, ex); } throw; } finally { cancelScope.Dispose(); } }, cancel)); }
public void Async_Redirect_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.Found); var headers = new WebHeaderCollection(); headers["Location"] = "test://localhost/sdata/invoices/redirect"; responseMock.Setup(x => x.Headers).Returns(headers); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock <HttpWebRequest> { CallBase = true }; responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); SetupGetResponseAsync(requestMock, responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.EndGetResponse(request.BeginGetResponse(null, null)); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(response.Location, Is.EqualTo("test://localhost/sdata/invoices/redirect")); }
static commodityFeedEntry GetCommodity(string productName, int productCount) { // Look up the first commodity (product) record string url = dataSourceTest + "commodities"; SDataUri commodityUri = new SDataUri(url); commodityUri.Count = productCount; SDataRequest commodityRequest = new SDataRequest(commodityUri.Uri); commodityRequest.Username = username; commodityRequest.Password = password; commodityFeed commodities = new commodityFeed(); commodityRequest.RequestFeed <commodityFeedEntry>(commodities); // If we found a record return it if (commodityRequest.IsStatusValidForVerb && commodities.Entries != null && commodities.Entries.Count > 0) { foreach (commodityFeedEntry commodity in commodities.Entries) { if (commodity.name.Equals(productName, StringComparison.InvariantCultureIgnoreCase)) { Console.WriteLine(string.Format("name: {0}", commodity.name)); Console.WriteLine(string.Format("name: {0}", commodity.UUID)); return(commodity); } else { continue; } } Console.ReadKey(); return(null); } else { // There was a problem Console.WriteLine("Commodity lookup failed. Response was {0}", commodityRequest.HttpStatusCode.ToString()); if (commodityRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in commodityRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } Console.ReadLine(); return(null); } }
public void ReadAsync(string url, object userState) { Guard.ArgumentNotNull(url, "url"); var operation = new RequestOperation(HttpMethod.Get); var request = new SDataRequest(url, operation) { UserName = UserName, Password = Password, Timeout = Timeout, Cookies = Cookies, UserAgent = UserAgent }; request.BeginGetResponse( asyncResult => { try { var response = request.EndGetResponse(asyncResult); if (ReadCompleted != null) { var content = response.Content; if (content is string && response.ContentType == MediaType.Xml) { try { content = ReadSchema(response); } catch (XmlException) { } catch (InvalidOperationException) { } } ReadCompleted(this, new ReadCompletedEventArgs(content, null, false, userState)); } } catch (SDataClientException) { throw; } catch (Exception ex) { if (ReadCompleted != null) { ReadCompleted(this, new ReadCompletedEventArgs(null, ex, false, userState)); } } }, null); }
public static void GetFeed() { SDataRequest request = new SDataRequest(new Uri("http://my.feedprovider.com:5493/sdata/application/feedname")); bankAccountFeed feed = new bankAccountFeed(); request.RequestFeed(feed); foreach (bankAccountFeedEntry entry in feed.Entries) { System.Diagnostics.Debug.WriteLine(entry.Title); } }
static taxCodeFeedEntry GetTaxCode(string productCode, int productCount) { // Look up the tax code record string taxUrl = dataSourceTest + "taxcodes"; SDataUri taxCodeUri = new SDataUri(taxUrl); // taxCodeUri.Where = "reference eq 'T1'"; taxCodeUri.Count = 2; SDataRequest taxcodeRequest = new SDataRequest(taxCodeUri.Uri); taxcodeRequest.Username = username; taxcodeRequest.Password = password; // taxcodeRequest.Password = "******"; taxCodeFeed taxcodes = new taxCodeFeed(); taxcodeRequest.RequestFeed <taxCodeFeedEntry>(taxcodes); // If we found a customer record return it if (taxcodeRequest.IsStatusValidForVerb && taxcodes.Entries != null && taxcodes.Entries.Count > 0) { if (productCode.Equals(taxcodes.Entries[0].reference)) { return(taxcodes.Entries[0]); } else { return(taxcodes.Entries[1]); } } else { // There was a problem Console.WriteLine("Tax code lookup failed. Response was {0}", taxcodeRequest.HttpStatusCode.ToString()); if (taxcodeRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in taxcodeRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } return(null); } }
protected virtual ISDataResponse ExecuteRequest(string url, RequestOperation operation, params MediaType[] accept) { var request = new SDataRequest(url, operation) { Accept = accept, UserName = UserName, Password = Password, Timeout = Timeout, Cookies = Cookies, UserAgent = UserAgent }; return(request.GetResponse()); }
public void Async_Simple_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); #if !PCL && !SILVERLIGHT var proxy = new WebProxy("test://dummy"); #endif var cookies = new CookieContainer(); var credentials = new NetworkCredential("admin", ""); var request = new SDataRequest("test://localhost/sdata/invoices") { ETag = "abc123", #if !PCL && !NETFX_CORE && !SILVERLIGHT Timeout = 123, UserAgent = "test agent", #endif #if !PCL && !SILVERLIGHT Proxy = proxy, #endif Accept = new[] { MediaType.Text, MediaType.Xml }, Cookies = cookies, Credentials = credentials }; var response = request.EndGetResponse(request.BeginGetResponse(null, null)); #if !PCL && !NETFX_CORE && !SILVERLIGHT Assert.That(webRequest.Timeout, Is.EqualTo(123)); Assert.That(webRequest.UserAgent, Is.EqualTo("test agent")); #endif #if !PCL && !SILVERLIGHT Assert.That(webRequest.Proxy, Is.EqualTo(proxy)); #endif Assert.That(webRequest.Accept, Is.EqualTo("text/plain,application/xml")); Assert.That(webRequest.CookieContainer, Is.EqualTo(cookies)); Assert.That(webRequest.Credentials, Is.EqualTo(credentials)); Assert.That(webRequest.Headers[HttpRequestHeader.IfNoneMatch], Is.EqualTo("abc123")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(response.Content, Is.Null); }
/// <summary> /// This method performs the translation from the Linq-Expression into the SData-Request. The request passed in here is a bl /// </summary> /// <param name="expression"></param> /// <param name="request"></param> internal List<SDataRequest> TranslateExpression(Expression expression, ISDataService sdataService) { //Find in Statement to be able to split it List<SDataRequest> result = new List<SDataRequest>(); while (_currentInIteration == 0 || (_inStatement != null && _inStatement.Count > _currentInIteration)) { _request = new SDataRequest(sdataService); TranslateExpressionInternal(expression); result.Add(_request); _currentInIteration++; } return result; }
static tradingAccountFeedEntry GetCustomer(string pass) { // Look up the first customer record Sage.Common.Syndication.SDataUri accountUri = new Sage.Common.Syndication.SDataUri(); accountUri.BuildLocalPath("Accounts50", "GCRM", "-", "tradingAccounts"); accountUri.Where = "customerSupplierFlag eq 'Customer'"; accountUri.Count = 1; SDataRequest accountRequest = new SDataRequest(accountUri.Uri); accountRequest.AllowPromptForCredentials = false; accountRequest.Username = "******"; accountRequest.Password = pass; tradingAccountFeed accounts = new tradingAccountFeed(); accountRequest.RequestFeed <tradingAccountFeedEntry>(accounts); // If we found a customer record return it if (accountRequest.IsStatusValidForVerb && accounts.Entries != null && accounts.Entries.Count > 0) { return(accounts.Entries[0]); } else { MessageBox.Show("Wrong password!!! Error"); // There was a problem Console.WriteLine("Account lookup failed. Response was {0}", accountRequest.HttpStatusCode.ToString()); if (accountRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in accountRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } return(null); } }
public void Async_Multipart_FormData_Only_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); var content = new MemoryStream(); SetupGetRequestStreamAsync(requestMock, content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post) {Form = {{"id", "123"}}}; var response = request.EndGetResponse(request.BeginGetResponse(null, null)); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/form-data;")); Assert.That(text, Is.StringContaining("inline; name=id")); Assert.That(text, Is.StringContaining("123")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Multipart_File_Only_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); var content = new MemoryStream(); SetupGetRequestStreamAsync(requestMock, content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post) {Files = {new AttachedFile("text/plain", "hello.txt", new MemoryStream(Encoding.UTF8.GetBytes("world")))}}; var response = request.EndGetResponse(request.BeginGetResponse(null, null)); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/related;")); Assert.That(text, Is.StringContaining("attachment; filename=\"hello.txt\"")); Assert.That(text, Is.StringContaining("world")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Text_Content_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); var content = new MemoryStream(); SetupGetRequestStreamAsync(requestMock, content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post, "hello"); var response = request.EndGetResponse(request.BeginGetResponse(null, null)); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(content.ToArray(), Is.EqualTo(Encoding.UTF8.GetBytes("hello"))); }
public void Async_UseHttpMethodOverride_Test() { var requestMock = new Mock <HttpWebRequest> { CallBase = true }; var responseMock = new Mock <HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Put) { UseHttpMethodOverride = true }; request.EndGetResponse(request.BeginGetResponse(null, null)); Assert.That(webRequest.Headers["X-HTTP-Method-Override"], Is.EqualTo("PUT")); }
static taxCodeFeedEntry GetTaxCode(string pass) { // Look up the tax code record Sage.Common.Syndication.SDataUri taxCodeUri = new Sage.Common.Syndication.SDataUri(); taxCodeUri.BuildLocalPath("Accounts50", "GCRM", "-", "taxCodes"); taxCodeUri.Where = "reference eq 'T1'"; SDataRequest taxcodeRequest = new SDataRequest(taxCodeUri.Uri); taxcodeRequest.Username = "******"; taxcodeRequest.Password = pass; taxCodeFeed taxcodes = new taxCodeFeed(); taxcodeRequest.RequestFeed <taxCodeFeedEntry>(taxcodes); // If we found a customer record return it if (taxcodeRequest.IsStatusValidForVerb && taxcodes.Entries != null && taxcodes.Entries.Count > 0) { return(taxcodes.Entries[0]); } else { // There was a problem Console.WriteLine("Tax code lookup failed. Response was {0}", taxcodeRequest.HttpStatusCode.ToString()); if (taxcodeRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in taxcodeRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } return(null); } }
static commodityFeedEntry GetCommodity(string pass) { // Look up the first commodity (product) record Sage.Common.Syndication.SDataUri commodityUri = new Sage.Common.Syndication.SDataUri(); commodityUri.BuildLocalPath("Accounts50", "GCRM", "-", "commodities"); commodityUri.Count = 1; SDataRequest commodityRequest = new SDataRequest(commodityUri.Uri); commodityRequest.Username = "******"; commodityRequest.Password = pass; commodityFeed commodities = new commodityFeed(); commodityRequest.RequestFeed <commodityFeedEntry>(commodities); // If we found a record return it if (commodityRequest.IsStatusValidForVerb && commodities.Entries != null && commodities.Entries.Count > 0) { return(commodities.Entries[0]); } else { // There was a problem Console.WriteLine("Commodity lookup failed. Response was {0}", commodityRequest.HttpStatusCode.ToString()); if (commodityRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in commodityRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } return(null); } }
public static void CreateSalesInvoice(string compId, int companyCount, int productCount, List <Product> orderList) { salesInvoiceFeedEntry salesInvoice = new salesInvoiceFeedEntry(); salesInvoice.salesInvoiceLines = new salesInvoiceLineFeed(); // Find a customer to associate with the new sales invoice salesInvoice.tradingAccount = GetCustomer(compId, companyCount); if (salesInvoice.tradingAccount == null) { // No customer record means we can go no further Console.WriteLine("Unable to find a customer record"); Console.ReadKey(true); Console.ReadLine(); return; } foreach (Product product in orderList) { // Lookup a commodity to use on the new sales invoice commodityFeedEntry commodity = GetCommodity(product.Name, productCount); if (commodity == null) { // No commodity record means we go no further Console.WriteLine("Unable to find a commodity record"); Console.ReadKey(true); Console.ReadLine(); return; } commodityFeedEntry commodityReference = new commodityFeedEntry(); commodityReference.UUID = commodity.UUID; taxCodeFeedEntry taxCode = GetTaxCode(); if (taxCode == null) { // No record means we go no further Console.WriteLine("Unable to find a tax code record"); Console.ReadKey(true); Console.ReadLine(); return; } taxCodeFeedEntry taxReference = new taxCodeFeedEntry(); taxReference.UUID = taxCode.UUID; salesInvoice.taxCodes = new taxCodeFeed(); salesInvoice.taxCodes.Entries.Add(taxReference); // Create a new sale invoice line using the commodity we just looked up salesInvoiceLineFeedEntry orderLine = new salesInvoiceLineFeedEntry(); orderLine.type = "Standard"; orderLine.text = commodity.description; orderLine.commodity = commodityReference; orderLine.quantity = Convert.ToDecimal(product.Quantity); orderLine.actualPrice = Convert.ToDecimal(product.ListPrice); orderLine.netTotal = orderLine.quantity * orderLine.actualPrice; orderLine.taxCodes = new taxCodeFeed(); orderLine.taxCodes.Entries.Add(taxReference); // Associate the lines with our invoice salesInvoice.salesInvoiceLines.Entries.Add(orderLine); } // Now we have constructed our new invoice we can submit it using the HTTP POST verb //string url = "http://localhost:5495/sdata/accounts50/GCRM/-/salesInvoices"; //string url = "http://dewsburypc1:5495/sdata/accounts50/GCRM/-/salesInvoices"; string url = dataSourceTest + "salesInvoices"; SDataUri salesInvoiceUri = new SDataUri(url); SDataRequest invoiceRequest = new SDataRequest(salesInvoiceUri.Uri, salesInvoice, Sage.Integration.Messaging.Model.RequestVerb.POST); invoiceRequest.Username = username; invoiceRequest.Password = password; // IF successful the POST operation will provide us with a the newly created sales invoice salesInvoiceFeedEntry savedSalesInvoice = new salesInvoiceFeedEntry(); invoiceRequest.RequestFeedEntry <salesInvoiceFeedEntry>(savedSalesInvoice); if (invoiceRequest.IsStatusValidForVerb) { Console.WriteLine(string.Format("Successfully created sales invoice {0}", savedSalesInvoice.reference)); Console.ReadLine(); } else { // There was a problem Console.WriteLine("Create failed. Response was {0}", invoiceRequest.HttpStatusCode.ToString()); if (invoiceRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in invoiceRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } Console.ReadLine(); } } }
static tradingAccountFeedEntry GetCustomer(string companyId, int companyCount) { // Look up the first customer record // Sage.Common.Syndication.SDataUri accountUri = new Sage.Common.Syndication.SDataUri(); string customerUrl = dataSourceTest + "tradingaccounts"; SDataUri accountUri = new SDataUri(customerUrl); accountUri.Where = "customerSupplierFlag eq 'Customer'"; accountUri.Count = companyCount; SDataRequest accountRequest = new SDataRequest(accountUri.Uri); accountRequest.AllowPromptForCredentials = false; accountRequest.Username = username; accountRequest.Password = password; tradingAccountFeed accounts = new tradingAccountFeed(); accountRequest.RequestFeed <tradingAccountFeedEntry>(accounts); // If we found a customer record return it if (accountRequest.IsStatusValidForVerb && accounts.Entries != null && accounts.Entries.Count > 0) { foreach (tradingAccountFeedEntry account in accounts.Entries) { // Console.WriteLine(account.Id); Console.WriteLine(account.reference); // Console.WriteLine(string.Format(account.reference2)); if (account.reference.Equals(companyId, StringComparison.InvariantCultureIgnoreCase)) { Console.WriteLine(string.Format("name: {0}", account.Id)); Console.WriteLine(string.Format("name: {0}", account.UUID)); return(account); } else { continue; } } return(null); } else { // There was a problem Console.WriteLine("Account lookup failed. Response was {0}", accountRequest.HttpStatusCode.ToString()); if (accountRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in accountRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } Console.ReadLine(); return(null); } }
private void Button1_Click(object sender, EventArgs e) { if (textBoxPass.Text != "") { // Create a new instance of a salesInvoice salesInvoiceFeedEntry salesInvoice = new salesInvoiceFeedEntry(); // Find a customer to associate with the new sales invoice salesInvoice.tradingAccount = GetCustomer(textBoxPass.Text); if (salesInvoice.tradingAccount == null) { // No customer record means we can go no further Console.WriteLine("Unable to find a customer record"); Console.ReadKey(true); return; } // Lookup a commodity to use on the new sales invoice commodityFeedEntry commodity = GetCommodity(textBoxPass.Text); if (commodity == null) { // No commodity record means we go no further Console.WriteLine("Unable to find a commodity record"); Console.ReadKey(true); return; } else { MessageBox.Show("Password Correct"); } commodityFeedEntry commodityReference = new commodityFeedEntry(); commodityReference.UUID = commodity.UUID; // Lookup a commodity to use on the new sales invoice taxCodeFeedEntry taxCode = GetTaxCode(textBoxPass.Text); if (taxCode == null) { // No record means we go no further Console.WriteLine("Unable to find a tax code record"); Console.ReadKey(true); return; } // Example of creating a historical invoice //salesInvoice.date = salesInvoice.taxDate = DateTime.UtcNow.AddDays(-2); // NOTE: This example omits the use of tax code for brevity. // Not specifying tax codes means that appropriate defaults will be used automatically. // However it is strongly recommended that tax codes are explicitly set to ensure expected results taxCodeFeedEntry taxReference = new taxCodeFeedEntry(); taxReference.UUID = taxCode.UUID; salesInvoice.taxCodes = new taxCodeFeed(); salesInvoice.taxCodes.Entries.Add(taxReference); salesInvoice.carrierTotalPrice = 100; salesInvoice.carrierTaxPrice = 20; salesInvoice.carrierNetPrice = 80; // Create a new sale invoice line using the commodity we just looked up salesInvoiceLineFeedEntry orderLine = new salesInvoiceLineFeedEntry(); orderLine.type = "Standard"; orderLine.text = commodity.description; orderLine.commodity = commodityReference; orderLine.quantity = 2; orderLine.netTotal = 50; orderLine.taxTotal = 10; orderLine.grossTotal = 60; orderLine.taxCodes = new taxCodeFeed(); orderLine.taxCodes.Entries.Add(taxReference); // Create another invoice line this time as free text salesInvoiceLineFeedEntry freetextOrderLine = new salesInvoiceLineFeedEntry(); freetextOrderLine.type = "Free Text"; // Equivalent to S1 stock code freetextOrderLine.text = textBoxDes.Text; try { freetextOrderLine.quantity = Convert.ToInt32(textBoxQuan.Text); freetextOrderLine.netTotal = Convert.ToInt32(textBoxPrice.Text); } catch (FormatException fe) { MessageBox.Show("Only Int"); } freetextOrderLine.taxTotal = 0; freetextOrderLine.grossTotal = 0; freetextOrderLine.taxCodes = new taxCodeFeed(); freetextOrderLine.taxCodes.Entries.Add(taxReference); /* * // Create a 3rd invoice line this time as a message * salesInvoiceLineFeedEntry messageOrderLine = new salesInvoiceLineFeedEntry(); * messageOrderLine.type = "Commentary"; // Equivalent to M stock code * messageOrderLine.text = "A message line created via Sdata"; */ // Associate the lines with our invoice salesInvoice.salesInvoiceLines = new salesInvoiceLineFeed(); // salesInvoice.salesInvoiceLines.Entries.Add(orderLine); salesInvoice.salesInvoiceLines.Entries.Add(freetextOrderLine); // salesInvoice.salesInvoiceLines.Entries.Add(messageOrderLine); // Now we have constructed our new invoice we can submit it using the HTTP POST verb Sage.Common.Syndication.SDataUri salesInvoiceUri = new Sage.Common.Syndication.SDataUri(); salesInvoiceUri.BuildLocalPath("Accounts50", "GCRM", "-", "salesInvoices"); SDataRequest invoiceRequest = new SDataRequest(salesInvoiceUri.Uri, salesInvoice, Sage.Integration.Messaging.Model.RequestVerb.POST); invoiceRequest.Username = "******"; invoiceRequest.Password = textBoxPass.Text; // IF successful the POST operation will provide us with a the newly created sales invoice salesInvoiceFeedEntry savedSalesInvoice = new salesInvoiceFeedEntry(); invoiceRequest.RequestFeedEntry <salesInvoiceFeedEntry>(savedSalesInvoice); if (invoiceRequest.IsStatusValidForVerb) { Console.WriteLine(string.Format("Successfully created sales invoice {0}", savedSalesInvoice.reference)); } else { // There was a problem Console.WriteLine("Create failed. Response was {0}", invoiceRequest.HttpStatusCode.ToString()); if (invoiceRequest.Diagnoses != null) { foreach (Diagnosis diagnosis in invoiceRequest.Diagnoses) { Console.WriteLine(diagnosis.Message); } } } Console.WriteLine("We\'re finished!!!"); MessageBox.Show("Successfully created sales invoice"); } }
private void TraceRequest(SDataRequest request) { #if !PCL && !NETFX_CORE && !SILVERLIGHT Trace.TraceData(TraceEventType.Information, 0, request); #endif }
public void UseHttpMethodOverride_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Put) { UseHttpMethodOverride = true }; request.GetResponse(); Assert.That(webRequest.Headers["X-HTTP-Method-Override"], Is.EqualTo("PUT")); }
public void Simple_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var proxy = new WebProxy("test://dummy"); var cookies = new CookieContainer(); var credentials = new NetworkCredential("admin", ""); var request = new SDataRequest("test://localhost/sdata/invoices") { ETag = "abc123", Timeout = 123, UserAgent = "test agent", Proxy = proxy, Accept = new[] {MediaType.Text, MediaType.Xml}, Cookies = cookies, Credentials = credentials }; var response = request.GetResponse(); Assert.That(webRequest.Timeout, Is.EqualTo(123)); Assert.That(webRequest.UserAgent, Is.EqualTo("test agent")); Assert.That(webRequest.Proxy, Is.EqualTo(proxy)); Assert.That(webRequest.Accept, Is.EqualTo("text/plain,application/xml")); Assert.That(webRequest.CookieContainer, Is.EqualTo(cookies)); Assert.That(webRequest.Credentials, Is.EqualTo(credentials)); Assert.That(webRequest.Headers[HttpRequestHeader.IfNoneMatch], Is.EqualTo("abc123")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(response.Content, Is.Null); }
public void Text_Content_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); var content = new MemoryStream(); requestMock.Setup(x => x.GetRequestStream()).Returns(content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post, "hello"); var response = request.GetResponse(); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(content.ToArray(), Is.EqualTo(Encoding.UTF8.GetBytes("hello"))); }
public void Retry_Attempts_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Throws(new WebException(null, WebExceptionStatus.Timeout)); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock<HttpWebRequest> {CallBase = true}; responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.GetResponse(); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Redirect_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.Found); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection {{"Location", "test://localhost/sdata/invoices/redirect"}}); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock<HttpWebRequest> {CallBase = true}; responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.GetResponse(); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(response.Location, Is.EqualTo("test://localhost/sdata/invoices/redirect")); }
public void Multipart_Unicode_File_Only_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); var content = new MemoryStream(); requestMock.Setup(x => x.GetRequestStream()).Returns(content); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); requestMock.Setup(x => x.GetResponse()).Returns(responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices", HttpMethod.Post) {Files = {new AttachedFile("text/plain", "\x65b0\x65e5\x9244\x4f4f\x91d1.txt", new MemoryStream(Encoding.UTF8.GetBytes("world")))}}; var response = request.GetResponse(); var text = Encoding.UTF8.GetString(content.ToArray()); Assert.That(webRequest.ContentType, Is.StringStarting("multipart/related;")); Assert.That(text, Is.StringContaining("attachment; filename*=utf-8''%E6%96%B0%E6%97%A5%E9%89%84%E4%BD%8F%E9%87%91.txt")); Assert.That(text, Is.StringContaining("world")); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }
public void Async_Redirect_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.Found); var headers = new WebHeaderCollection(); headers["Location"] = "test://localhost/sdata/invoices/redirect"; responseMock.Setup(x => x.Headers).Returns(headers); SetupGetResponseAsync(requestMock, responseMock.Object); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock<HttpWebRequest> {CallBase = true}; responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); SetupGetResponseAsync(requestMock, responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.EndGetResponse(request.BeginGetResponse(null, null)); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); Assert.That(response.Location, Is.EqualTo("test://localhost/sdata/invoices/redirect")); }
public void Async_Retry_Attempts_Test() { var requestMock = new Mock<HttpWebRequest> {CallBase = true}; var responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); const WebExceptionStatus status = #if PCL || NETFX_CORE || SILVERLIGHT WebExceptionStatus.ConnectFailure; #else WebExceptionStatus.Timeout; #endif SetupGetResponseAsync(requestMock, new WebException(null, status)); var webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); requestMock = new Mock<HttpWebRequest> {CallBase = true}; responseMock = new Mock<HttpWebResponse>(); responseMock.Setup(x => x.StatusCode).Returns(HttpStatusCode.NoContent); responseMock.Setup(x => x.Headers).Returns(new WebHeaderCollection()); SetupGetResponseAsync(requestMock, responseMock.Object); webRequest = requestMock.Object; webRequest.Headers = new WebHeaderCollection(); _requests.Enqueue(webRequest); var request = new SDataRequest("test://localhost/sdata/invoices"); var response = request.EndGetResponse(request.BeginGetResponse(null, null)); Assert.That(response.StatusCode, Is.EqualTo(HttpStatusCode.NoContent)); }