/// <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));
        }
        public static async Task <SingleResponseModel> Check(NeverBounceSdk sdk)
        {
            var model = new SingleRequestModel();

            model.email        = "*****@*****.**";
            model.credits_info = true;
            model.address_info = true;
            return(await sdk.Single.Check(model));
        }
        public static SingleResponseModel Check(NeverBounceSdk sdk)
        {
            var model = new SingleRequestModel();

            model.email        = "*****@*****.**";
            model.credits_info = true;
            model.address_info = true;
            return(sdk.Single.Check(model).Result);
        }
        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 async Task <IActionResult> CheckEmail(string email)
        {
            var neverBounceKey = configuration["NeverBounceKey"];

            var sdk = new NeverBounceSdk(neverBounceKey);

            // Create request model
            var model = new SingleRequestModel();

            model.email        = email;
            model.credits_info = true;
            model.address_info = true;
            model.timeout      = 10;

            // Verify single email
            SingleResponseModel resp = await sdk.Single.Check(model);


            return(Json(resp));
        }