public override object ReadJson(
            JsonReader reader,
            Type objectType,
            object existingValue,
            Newtonsoft.Json.JsonSerializer serializer)
        {
            JObject             jObject  = JObject.Load(reader);
            GetScheduleResponse response = new GetScheduleResponse();

            foreach (var node in jObject)
            {
                if (node.Value != null && Enum.TryParse(node.Key, out Currency currency))
                {
                    CurrencySchedule currencySchedule = new CurrencySchedule();
                    serializer.Populate(node.Value.CreateReader(), currencySchedule);
                    response.Currency =
                        new Dictionary <Currency, CurrencySchedule> {
                        { currency, currencySchedule }
                    };
                }

                if (node.Key.Equals("_links") && node.Value != null)
                {
                    var resource = new Dictionary <string, Link>();
                    serializer.Populate(node.Value.CreateReader(), resource);
                    response.Links = resource;
                }
            }

            return(response);
        }
Exemple #2
0
        private async Task ShouldUpdateAndRetrieveMonthlyPayoutSchedules()
        {
            var scheduleRequest = new UpdateScheduleRequest
            {
                Enabled    = true,
                Threshold  = 1000,
                Recurrence = new ScheduleFrequencyMonthlyRequest {
                    ByMonthDay = new[] { 3, 5 }
                }
            };

            var emptyResponse = await GetPayoutSchedulesCheckoutApi().AccountsClient()
                                .UpdatePayoutSchedule("ent_sdioy6bajpzxyl3utftdp7legq", Currency.USD, scheduleRequest);

            emptyResponse.ShouldNotBeNull();
            emptyResponse.HttpStatusCode.ShouldNotBeNull();
            emptyResponse.ResponseHeaders.ShouldNotBeNull();

            var response = await GetPayoutSchedulesCheckoutApi().AccountsClient()
                           .RetrievePayoutSchedule("ent_sdioy6bajpzxyl3utftdp7legq");

            response.ShouldNotBeNull();
            response.Currency.ShouldNotBeEmpty();
            CurrencySchedule currencySchedule = response.Currency[Currency.USD];

            currencySchedule.ShouldNotBeNull();
            currencySchedule.Enabled.ShouldNotBeNull();
            currencySchedule.Threshold.ShouldNotBeNull();
            currencySchedule.Recurrence.ShouldBeOfType(typeof(ScheduleFrequencyMonthlyResponse));
            ((ScheduleFrequencyMonthlyResponse)currencySchedule.Recurrence).ByMonthDay.Count.ShouldBe(2);
        }