public void TestParameterBuilderWithDefaults(string key, object value)
        {
            var builder = new ParameterBuilderHelper();

            builder.InsertValue(key, value);

            builder.ParameterCollection.AllKeys.Should().BeEmpty();
        }
        public void TestParameterBuilder(string key, object value)
        {
            var expected = HttpUtility.UrlDecode(JsonConvert.SerializeObject(value).Replace("\"", ""));

            var builder = new ParameterBuilderHelper();

            builder.InsertValue(key, value);

            builder.ParameterCollection.AllKeys.Length.Should().Be(1);
            builder.ParameterCollection.AllKeys.First().Should().Be(key);

            builder.ParameterCollection.GetValues(0).Should().BeEquivalentTo(expected);
        }
예제 #3
0
        public Task <CloudFlareResult <IEnumerable <AccountMember> > > GetAccountMembersAsync(string accountId, int?page, int?perPage,
                                                                                              OrderType?order)
        {
            var parameterBuilder = new ParameterBuilderHelper();

            parameterBuilder
            .InsertValue(ApiParameter.Filtering.Page, page)
            .InsertValue(ApiParameter.Filtering.PerPage, perPage)
            .InsertValue(ApiParameter.Filtering.Direction, order);

            var parameterString = parameterBuilder.ParameterCollection;

            return(SendRequestAsync <IEnumerable <AccountMember> >(_httpClient.GetAsync(
                                                                       $"{ApiParameter.Endpoints.Account.Base}/{accountId}/{ApiParameter.Endpoints.Account.Members}/?{parameterString}")));
        }
        public async Task <CloudFlareResult <IEnumerable <Account> > > GetAccountsAsync(int?page, int?perPage, OrderType?order)
        {
            var parameterBuilder = new ParameterBuilderHelper();

            parameterBuilder
            .InsertValue(ApiParameter.Filtering.Page, page)
            .InsertValue(ApiParameter.Filtering.PerPage, perPage)
            .InsertValue(ApiParameter.Filtering.Direction, order);

            var parameterString = parameterBuilder.ParameterCollection;


            return(await SendRequestAsync <IEnumerable <Account> >(_httpClient.GetAsync(
                                                                       $"{ApiParameter.Endpoints.Account.Base}/?{parameterString}")).ConfigureAwait(false));
        }
예제 #5
0
        /// <inheritdoc />
        public async Task <CloudFlareResult <IReadOnlyList <FirewallRule> > > GetAsync(string zoneId, UnOrderableDisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
        {
            var builder = new ParameterBuilderHelper()
                          .InsertValue(Filtering.Page, displayOptions?.Page)
                          .InsertValue(Filtering.PerPage, displayOptions?.PerPage);

            var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{ZoneEndpoints.FirewallRules}";

            if (builder.ParameterCollection.HasKeys())
            {
                requestUri = $"{requestUri}?{builder.ParameterCollection}";
            }

            return(await Connection.GetAsync <IReadOnlyList <FirewallRule> >(requestUri, cancellationToken).ConfigureAwait(false));
        }
예제 #6
0
        /// <inheritdoc />
        public async Task <CloudFlareResult <IReadOnlyList <Account> > > GetAsync(DisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
        {
            var builder = new ParameterBuilderHelper()
                          .InsertValue(Filtering.Page, displayOptions?.Page)
                          .InsertValue(Filtering.PerPage, displayOptions?.PerPage)
                          .InsertValue(Filtering.Direction, displayOptions?.Order);

            var requestUri = $"{AccountEndpoints.Base}";

            if (builder.ParameterCollection.HasKeys())
            {
                requestUri = $"{requestUri}/?{builder.ParameterCollection}";
            }

            return(await Connection.GetAsync <IReadOnlyList <Account> >(requestUri, cancellationToken).ConfigureAwait(false));
        }
예제 #7
0
        public Task <CloudFlareResult <IEnumerable <Zone> > > GetZonesAsync(string name, ZoneStatus?status, int?page, int?perPage,
                                                                            OrderType?order, bool?match)
        {
            var parameterBuilder = new ParameterBuilderHelper();

            parameterBuilder
            .InsertValue(ApiParameter.Filtering.Name, name)
            .InsertValue(ApiParameter.Filtering.Status, status)
            .InsertValue(ApiParameter.Filtering.Page, page)
            .InsertValue(ApiParameter.Filtering.PerPage, perPage)
            .InsertValue(ApiParameter.Filtering.Order, order)
            .InsertValue(ApiParameter.Filtering.Match, match);

            var parameterString = parameterBuilder.ParameterCollection;

            return(SendRequestAsync <IEnumerable <Zone> >(_httpClient.GetAsync(
                                                              $"{ApiParameter.Endpoints.Zone.Base}/?{parameterString}")));
        }
예제 #8
0
        public Task <CloudFlareResult <IEnumerable <CustomHostname> > > GetCustomHostnamesByIdAsync(string zoneId, string id, int?page, int?perPage, CustomHostnameOrderType?type,
                                                                                                    OrderType?order, bool?ssl)
        {
            var parameterBuilder = new ParameterBuilderHelper();

            parameterBuilder
            .InsertValue(ApiParameter.Filtering.Id, id)
            .InsertValue(ApiParameter.Filtering.Page, page)
            .InsertValue(ApiParameter.Filtering.PerPage, perPage)
            .InsertValue(ApiParameter.Filtering.Order, type)
            .InsertValue(ApiParameter.Filtering.Direction, order)
            .InsertValue(ApiParameter.Filtering.Ssl, ssl ?? false ? 1 : 0);

            var parameterString = parameterBuilder.ParameterCollection;

            return(SendRequestAsync <IEnumerable <CustomHostname> >(_httpClient.GetAsync(
                                                                        $"{ApiParameter.Endpoints.Zone.Base}/{zoneId}/{ApiParameter.Endpoints.CustomHostname.Base}?{parameterString}")));
        }
예제 #9
0
        public Task <CloudFlareResult <IEnumerable <DnsRecord> > > GetDnsRecordsAsync(string zoneId, DnsRecordType?type, string name, string content,
                                                                                      int?page, int?perPage, OrderType?order, bool?match)
        {
            var parameterBuilder = new ParameterBuilderHelper();

            parameterBuilder
            .InsertValue(ApiParameter.Filtering.DnsRecordType, type)
            .InsertValue(ApiParameter.Filtering.Name, name)
            .InsertValue(ApiParameter.Filtering.Content, content)
            .InsertValue(ApiParameter.Filtering.Page, page)
            .InsertValue(ApiParameter.Filtering.PerPage, perPage)
            .InsertValue(ApiParameter.Filtering.Order, order)
            .InsertValue(ApiParameter.Filtering.Match, match);

            var parameterString = parameterBuilder.ParameterCollection;

            return(SendRequestAsync <IEnumerable <DnsRecord> >(
                       _httpClient.GetAsync($"{ApiParameter.Endpoints.Zone.Base}/{zoneId}/{ApiParameter.Endpoints.DnsRecord.Base}/?{parameterString}")));
        }
예제 #10
0
        public Task <CloudFlareResult <IEnumerable <UserMembership> > > GetMembershipsAsync(MembershipStatus?status, string accountName, int?page, int?perPage,
                                                                                            MembershipOrder?membershipOrder, OrderType?order)
        {
            var parameterBuilder = new ParameterBuilderHelper();

            parameterBuilder
            .InsertValue(ApiParameter.Filtering.Status, status)
            .InsertValue(ApiParameter.Filtering.AccountName, accountName)
            .InsertValue(ApiParameter.Filtering.Page, page)
            .InsertValue(ApiParameter.Filtering.PerPage, perPage)
            .InsertValue(ApiParameter.Filtering.Order, membershipOrder)
            .InsertValue(ApiParameter.Filtering.Direction, order);

            var parameterString = parameterBuilder.ParameterCollection;


            return(SendRequestAsync <IEnumerable <UserMembership> >(_httpClient.GetAsync(
                                                                        $"{ApiParameter.Endpoints.Membership.Base}/?{parameterString}")));
        }
예제 #11
0
        /// <inheritdoc />
        public async Task <CloudFlareResult <IReadOnlyList <DnsRecord> > > GetAsync(string zoneId, DnsRecordFilter filter = null, DisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
        {
            var builder = new ParameterBuilderHelper()
                          .InsertValue(Filtering.DnsRecordType, filter?.Type)
                          .InsertValue(Filtering.Name, filter?.Name)
                          .InsertValue(Filtering.Content, filter?.Content)
                          .InsertValue(Filtering.Page, displayOptions?.Page)
                          .InsertValue(Filtering.PerPage, displayOptions?.PerPage)
                          .InsertValue(Filtering.Order, displayOptions?.Order)
                          .InsertValue(Filtering.Match, filter?.Match);

            var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{DnsRecordEndpoints.Base}";

            if (builder.ParameterCollection.HasKeys())
            {
                requestUri = $"{requestUri}/?{builder.ParameterCollection}";
            }

            return(await Connection.GetAsync <IReadOnlyList <DnsRecord> >(requestUri, cancellationToken).ConfigureAwait(false));
        }
예제 #12
0
        /// <inheritdoc />
        public async Task <CloudFlareResult <IReadOnlyList <Filter> > > GetAsync(string zoneId, FilterRequestFilter filter = null, UnOrderableDisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
        {
            var builder = new ParameterBuilderHelper()
                          .InsertValue(Filtering.Id, filter?.Id)
                          .InsertValue(Filtering.Paused, filter?.Paused)
                          .InsertValue(Filtering.Expression, filter?.Expression)
                          .InsertValue(Filtering.Description, filter?.Description)
                          .InsertValue(Filtering.Ref, filter?.Ref)
                          .InsertValue(Filtering.Page, displayOptions?.Page)
                          .InsertValue(Filtering.PerPage, displayOptions?.PerPage);

            var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{FilterEndpoints.Base}";

            if (builder.ParameterCollection.HasKeys())
            {
                requestUri = $"{requestUri}/?{builder.ParameterCollection}";
            }

            return(await Connection.GetAsync <IReadOnlyList <Filter> >(requestUri, cancellationToken).ConfigureAwait(false));
        }
예제 #13
0
        /// <inheritdoc />
        public async Task <CloudFlareResult <IReadOnlyList <Zone> > > GetAsync(ZoneFilter filter = null, DisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
        {
            var builder = new ParameterBuilderHelper()
                          .InsertValue(Filtering.AccountId, filter?.AccountId)
                          .InsertValue(Filtering.AccountName, filter?.AccountName)
                          .InsertValue(Filtering.Name, filter?.Name)
                          .InsertValue(Filtering.Status, filter?.Status)
                          .InsertValue(Filtering.Match, filter?.Match)
                          .InsertValue(Filtering.Page, displayOptions?.Page)
                          .InsertValue(Filtering.PerPage, displayOptions?.PerPage)
                          .InsertValue(Filtering.Order, displayOptions?.Order);

            var requestUri = $"{ZoneEndpoints.Base}";

            if (builder.ParameterCollection.HasKeys())
            {
                requestUri = $"{requestUri}/?{builder.ParameterCollection}";
            }

            return(await Connection.GetAsync <IReadOnlyList <Zone> >(requestUri, cancellationToken).ConfigureAwait(false));
        }
예제 #14
0
        /// <inheritdoc />
        public async Task <CloudFlareResult <IReadOnlyList <CustomHostname> > > GetAsync(string zoneId, CustomHostnameFilter filter = null, DisplayOptions displayOptions = null, CancellationToken cancellationToken = default)
        {
            var builder = new ParameterBuilderHelper();

            builder
            .InsertValue(Filtering.Id, filter?.CustomHostnameId)
            .InsertValue(Filtering.Hostname, filter?.Hostname)
            .InsertValue(Filtering.Order, filter?.OrderType)
            .InsertValue(Filtering.Ssl, filter?.Ssl ?? false ? 1 : 0)
            .InsertValue(Filtering.Page, displayOptions?.Page)
            .InsertValue(Filtering.PerPage, displayOptions?.PerPage)
            .InsertValue(Filtering.Direction, displayOptions?.Order);

            var requestUri = $"{ZoneEndpoints.Base}/{zoneId}/{CustomHostnameEndpoints.Base}";

            if (builder.ParameterCollection.HasKeys())
            {
                requestUri = $"{requestUri}/?{builder.ParameterCollection}";
            }

            return(await Connection.GetAsync <IReadOnlyList <CustomHostname> >(requestUri, cancellationToken).ConfigureAwait(false));
        }