/// <summary> /// Single verification allows you verify individual emails and gather additional information pertaining to the email. /// See: "https://developers.neverbounce.com/v4.0/reference#single-check" /// </summary> /// <param name="model"> SingleRequestModel</param> /// <returns>SingleResponseModel</returns> public async Task <SingleResponseModel> Check(SingleRequestModel model) { var client = new NeverBounceHttpClient(_client, _apiKey, _host); var result = await client.MakeRequest("GET", "/single/check", model); return(JsonConvert.DeserializeObject <SingleResponseModel>(result)); }
/// <summary> /// This method calls the parse job end point /// See: "https://developers.neverbounce.com/v4.0/reference#jobs-parse" /// </summary> /// <param name="model">JobParseRequestModel</param> /// <returns>JobParseResponseModel</returns> public async Task <JobParseResponseModel> Parse(JobParseRequestModel model) { var client = new NeverBounceHttpClient(_client, _apiKey, _host); var result = await client.MakeRequest("POST", "/jobs/parse", model); return(JsonConvert.DeserializeObject <JobParseResponseModel>(result)); }
/// <summary> /// Allows you to confirm front end (Javascript Widget) verification results /// See: "https://developers.neverbounce.com/v4.0/reference#widget-poe-confirm" /// </summary> /// <param name="model"> POEConfirmRequestModel</param> /// <returns>POEConfirmResponseModel</returns> public async Task <POEConfirmResponseModel> Confirm(POEConfirmRequestModel model) { var client = new NeverBounceHttpClient(_client, _apiKey, _host); var result = await client.MakeRequest("POST", "/poe/confirm", model); return(JsonConvert.DeserializeObject <POEConfirmResponseModel>(result)); }
/// <summary> /// This method calls the create job end point using supplied data for input /// See: "https://developers.neverbounce.com/v4.0/reference#jobs-create" /// </summary> /// <param name="model">JobCreateRequestModel</param> /// <returns>JobCreateResponseModel</returns> public async Task <JobCreateResponseModel> CreateFromSuppliedData(JobCreateSuppliedDataRequestModel model) { var client = new NeverBounceHttpClient(_client, _apiKey, _host); var result = await client.MakeRequest("POST", "/jobs/create", model); return(JsonConvert.DeserializeObject <JobCreateResponseModel>(result)); }
/// <summary> /// This method calls the job download endpoint; this endpoint returns the /// CSV data for the job /// See: "https://developers.neverbounce.com/v4.0/reference#jobs-download" /// </summary> /// <param name="model">JobDownloadRequestModel</param> /// <returns>string</returns> public async Task <string> Download(JobDownloadRequestModel model) { var client = new NeverBounceHttpClient(_client, _apiKey, _host); client.SetAcceptedType("application/octet-stream"); return(await client.MakeRequest("GET", "/jobs/download", model)); }
/// <summary> /// Account Info method allow to programmatically check your account's balance and how many jobs are currently running /// on your account. /// See: "https://developers.neverbounce.com/v4.0/reference#account-info" /// </summary> /// <returns>AccountInfoResponseModel</returns> public async Task <AccountInfoResponseModel> Info() { var model = new RequestModel(); var client = new NeverBounceHttpClient(_client, _apiKey, _host); var result = await client.MakeRequest("GET", "/account/info", model); return(JsonConvert.DeserializeObject <AccountInfoResponseModel>(result)); }
public void TestHttpStatusCode500ErrorHandling() { var clientMock = new Mock <IHttpClient>(); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())) .Returns(Task.FromResult(new HttpResponseMessage(HttpStatusCode.ServiceUnavailable))); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); Assert.ThrowsAsync <GeneralException>(async() => await httpClient.MakeRequest("GET", "/500", new RequestModel())); }
public void TestBadReferrerErrorHandling() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent( "{\"status\": \"bad_referrer\", \"message\": \"The originator of this request is not trusted\", \"execution_time\":100}"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); var resp = Assert.ThrowsAsync <BadReferrerException>(async() => await httpClient.MakeRequest("GET", "/500", new RequestModel())); }
public void TestBadlyFormattedJsonHandling() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent("{notvalid json}"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); var resp = Assert.ThrowsAsync <GeneralException>(async() => await httpClient.MakeRequest("GET", "/500", new RequestModel())); StringAssert.Contains("(Internal error)", resp.Message); }
public void TestTempUnavailErrorHandling() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent( "{\"status\": \"temp_unavail\", \"message\": \"Something went wrong\", \"execution_time\":100}"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); var resp = Assert.ThrowsAsync <GeneralException>(async() => await httpClient.MakeRequest("GET", "/500", new RequestModel())); }
public void TestMismatchedContentTypeThrowsError() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent("Hello!"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); httpClient.SetAcceptedType("text/html"); var resp = Assert.ThrowsAsync <GeneralException>(async() => await httpClient.MakeRequest("GET", "/", new RequestModel())); }
public void TestMatchContentType() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent("Hello!"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); httpClient.SetAcceptedType("text/html"); var resp = httpClient.MakeRequest("GET", "/", new RequestModel()).Result; Assert.AreEqual("Hello!", resp); }
public void TestAuthFailureHandling() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent( "{\"status\": \"auth_failure\", \"message\": \"The key provided is invalid\", \"execution_time\":100}"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); var resp = Assert.ThrowsAsync <AuthException>(async() => await httpClient.MakeRequest("GET", "/500", new RequestModel())); StringAssert.Contains("The key provided is invalid", resp.Message); StringAssert.Contains("(auth_failure)", resp.Message); }
public void TestToQueryStringSimple() { var clientMock = new Mock <IHttpClient>(); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); var query = new SingleRequestModel(); query.key = "fake_api_key"; query.email = "*****@*****.**"; query.timeout = 3000; query.address_info = true; query.credits_info = false; var resp = httpClient.ToQueryString(query); Assert.AreEqual( "email=support%40neverbounce.com&address_info=1&credits_info=0&timeout=3000&key=fake_api_key", resp); }
public void TestJsonUnmarshalling() { var clientMock = new Mock <IHttpClient>(); var responseMessage = new HttpResponseMessage(HttpStatusCode.OK); responseMessage.Content = new StringContent("{\"status\": \"success\", \"execution_time\":100}"); responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json"); clientMock.Setup(http => http.GetRequestHeaders()).Returns(new HttpClient().DefaultRequestHeaders); clientMock.Setup(http => http.GetAsync(It.IsAny <Uri>())).Returns(Task.FromResult(responseMessage)); var httpClient = new NeverBounceHttpClient(clientMock.Object, "fake_api_key"); var resp = httpClient.MakeRequest("GET", "/", new RequestModel()).Result; Assert.AreEqual("{\"status\": \"success\", \"execution_time\":100}", resp); var token = JObject.Parse(resp); Assert.AreEqual("success", token.SelectToken("status").ToString()); Assert.AreEqual(100, (int)token.SelectToken("execution_time")); }