internal async System.Threading.Tasks.Task AddAmountAsync(HttpContext context)
        {
            if (context.Request.ContentType != "application/json")
            {
                context.Response.StatusCode = 415;
                await context.Response.WriteAsync("Endpoint only accepts JSON content");

                return;
            }

            using (var reader = new StreamReader(context.Request.Body))
            {
                string body = await reader.ReadToEndAsync();

                AmountRequestBody data = new AmountRequestBody();

                try
                {
                    data = JsonSerializer.Deserialize <AmountRequestBody>(body);
                }
                catch (Exception ex)
                {
                    context.Response.StatusCode = 400;
                    await context.Response.WriteAsync(ex.Message);

                    return;
                }

                if (data.accountId == null || data.accountId.Length == 0)
                {
                    context.Response.StatusCode = 400;
                    await context.Response.WriteAsync("Endpoint requires account_id in body.");

                    return;
                }

                if (data.amount == null)
                {
                    context.Response.StatusCode = 400;
                    await context.Response.WriteAsync("Endpoint requires balance in body.");

                    return;
                }

                BalanceResponse response = new BalanceResponse();
                response.balance = BalanceModel.AddAmount(data.accountId, data.amount.Value);

                context.Response.ContentType = "application/json";
                await context.Response.WriteAsync(JsonSerializer.Serialize(response));
            }
        }
        internal async System.Threading.Tasks.Task GetBalanceAsync(HttpContext context)
        {
            string          accountId = context.GetRouteValue("id") as string;
            BalanceResponse response  = new BalanceResponse();
            var             amount    = BalanceModel.GetAmount(accountId);

            if (!amount.HasValue)
            {
                context.Response.StatusCode = 404;
                await context.Response.WriteAsync("Account not found");

                return;
            }
            else
            {
                response.balance = amount.Value;
            }

            context.Response.ContentType = "application/json";
            await context.Response.WriteAsync(JsonSerializer.Serialize(response));
        }