示例#1
0
        /// <summary>
        ///     Wysyłanie transferu do innego banku
        /// </summary>
        /// <returns></returns>
        private async Task SendTransferToAnotherBank()
        {
            var idBank = NumberAccountHelper.ExtractIdBank(_transferModel.AccountTo);
            var ip     = BankIdMappingHelper.GetIP(idBank);
            var url    = $"http://{ip}/transfer";

            var username = ConfigurationManager.AppSettings["User"];
            var password = ConfigurationManager.AppSettings["Password"];

            using (var client = new HttpClient())
            {
                var authValue = new AuthenticationHeaderValue("Basic",
                                                              Convert.ToBase64String(Encoding.ASCII.GetBytes($"{username}:{password}")));
                client.DefaultRequestHeaders.Authorization = authValue;

                var content = new StringContent(JsonConvert.SerializeObject(_transferModel), Encoding.UTF8,
                                                "application/json");

                var response = await client.PostAsync(url, content);

                if (response.StatusCode == HttpStatusCode.BadRequest || response.StatusCode == HttpStatusCode.NotFound)
                {
                    var valueResponse = await response.Content.ReadAsStringAsync();

                    var errorDetailWeb = JsonConvert.DeserializeObject <ErrorDetailWeb>(valueResponse);
                    throw new FaultException($"The bank receiver responded : {errorDetailWeb.Error}");
                }
                if (response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    var valueResponse = await response.Content.ReadAsStringAsync();

                    var errorDetailWeb = JsonConvert.DeserializeObject <ErrorDetailWeb>(valueResponse);
                    throw new Exception($"Error authorization in receiver bank. details: {errorDetailWeb.Error}");
                }
                if (response.StatusCode != HttpStatusCode.Created)
                {
                    var valueResponse = await response.Content.ReadAsStringAsync();

                    var errorDetailWeb = JsonConvert.DeserializeObject <ErrorDetailWeb>(valueResponse);
                    throw new Exception(
                              $"Error in receiver bank. details: {errorDetailWeb.Error} code: {response.StatusCode}");
                }
            }
        }