Skip to content

Commit

Permalink
Merge pull request #907 from favonia/url-builder
Browse files Browse the repository at this point in the history
Refactor the URI path building code
  • Loading branch information
jacobbednarz committed May 27, 2022
2 parents 9af8b92 + c713e85 commit e5c6a2d
Show file tree
Hide file tree
Showing 18 changed files with 103 additions and 160 deletions.
11 changes: 2 additions & 9 deletions access_application.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -96,15 +95,9 @@ func (api *API) ZoneLevelAccessApplications(ctx context.Context, zoneID string,
}

func (api *API) accessApplications(ctx context.Context, id string, pageOpts PaginationOptions, routeRoot RouteRoot) ([]AccessApplication, ResultInfo, error) {
uri := fmt.Sprintf("/%s/%s/access/apps", routeRoot, id)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/%s/%s/access/apps", routeRoot, id), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessApplication{}, ResultInfo{}, err
}
Expand Down
11 changes: 2 additions & 9 deletions access_bookmark.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -52,15 +51,9 @@ func (api *API) ZoneLevelAccessBookmarks(ctx context.Context, zoneID string, pag
}

func (api *API) accessBookmarks(ctx context.Context, id string, pageOpts PaginationOptions, routeRoot RouteRoot) ([]AccessBookmark, ResultInfo, error) {
uri := fmt.Sprintf("/%s/%s/access/bookmarks", routeRoot, id)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/%s/%s/access/bookmarks", routeRoot, id), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessBookmark{}, ResultInfo{}, err
}
Expand Down
20 changes: 8 additions & 12 deletions access_group.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -214,19 +213,16 @@ func (api *API) ZoneLevelAccessGroups(ctx context.Context, zoneID string, pageOp
}

func (api *API) accessGroups(ctx context.Context, id string, pageOpts PaginationOptions, routeRoot RouteRoot) ([]AccessGroup, ResultInfo, error) {
uri := fmt.Sprintf(
"/%s/%s/access/groups",
routeRoot,
id,
uri := buildURI(
fmt.Sprintf(
"/%s/%s/access/groups",
routeRoot,
id,
),
pageOpts,
)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessGroup{}, ResultInfo{}, err
}
Expand Down
22 changes: 9 additions & 13 deletions access_policy.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -77,20 +76,17 @@ func (api *API) ZoneLevelAccessPolicies(ctx context.Context, zoneID, application
}

func (api *API) accessPolicies(ctx context.Context, id string, applicationID string, pageOpts PaginationOptions, routeRoot RouteRoot) ([]AccessPolicy, ResultInfo, error) {
uri := fmt.Sprintf(
"/%s/%s/access/apps/%s/policies",
routeRoot,
id,
applicationID,
uri := buildURI(
fmt.Sprintf(
"/%s/%s/access/apps/%s/policies",
routeRoot,
id,
applicationID,
),
pageOpts,
)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccessPolicy{}, ResultInfo{}, err
}
Expand Down
13 changes: 3 additions & 10 deletions account_members.go
Expand Up @@ -6,7 +6,6 @@ import (
"fmt"
"net/http"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -62,15 +61,9 @@ func (api *API) AccountMembers(ctx context.Context, accountID string, pageOpts P
return []AccountMember{}, ResultInfo{}, errors.New(errMissingAccountID)
}

uri := fmt.Sprintf("/accounts/%s/members", accountID)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/accounts/%s/members", accountID), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []AccountMember{}, ResultInfo{}, err
}
Expand All @@ -96,7 +89,7 @@ func (api *API) CreateAccountMemberWithStatus(ctx context.Context, accountID str

uri := fmt.Sprintf("/accounts/%s/members", accountID)

var newMember = AccountMemberInvitation{
newMember := AccountMemberInvitation{
Email: emailAddress,
Roles: roles,
Status: status,
Expand Down
11 changes: 1 addition & 10 deletions accounts.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -59,15 +58,7 @@ type AccountsListParams struct {
//
// API reference: https://api.cloudflare.com/#accounts-list-accounts
func (api *API) Accounts(ctx context.Context, params AccountsListParams) ([]Account, ResultInfo, error) {
uri := "/accounts"

v, _ := query.Values(params)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, buildURI("/accounts", params), nil)
if err != nil {
return []Account{}, ResultInfo{}, err
}
Expand Down
20 changes: 7 additions & 13 deletions filter.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"net/url"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -85,15 +84,9 @@ func (api *API) Filter(ctx context.Context, zoneID, filterID string) (Filter, er
//
// API reference: https://developers.cloudflare.com/firewall/api/cf-filters/get/#get-all-filters
func (api *API) Filters(ctx context.Context, zoneID string, pageOpts PaginationOptions) ([]Filter, error) {
uri := fmt.Sprintf("/zones/%s/filters", zoneID)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/zones/%s/filters", zoneID), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []Filter{}, err
}
Expand Down Expand Up @@ -209,11 +202,12 @@ func (api *API) DeleteFilters(ctx context.Context, zoneID string, filterIDs []st
q.Add("id", id)
}

queryParams := "?" + q.Encode()
uri := (&url.URL{
Path: fmt.Sprintf("/zones/%s/filters", zoneID),
RawQuery: q.Encode(),
}).String()

uri := fmt.Sprintf("/zones/%s/filters", zoneID)

_, err := api.makeRequestContext(ctx, http.MethodDelete, uri+queryParams, nil)
_, err := api.makeRequestContext(ctx, http.MethodDelete, uri, nil)
if err != nil {
return err
}
Expand Down
11 changes: 2 additions & 9 deletions firewall_rules.go
Expand Up @@ -8,7 +8,6 @@ import (
"net/url"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -45,15 +44,9 @@ type FirewallRuleResponse struct {
//
// API reference: https://developers.cloudflare.com/firewall/api/cf-firewall-rules/get/#get-all-rules
func (api *API) FirewallRules(ctx context.Context, zoneID string, pageOpts PaginationOptions) ([]FirewallRule, error) {
uri := fmt.Sprintf("/zones/%s/firewall/rules", zoneID)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/zones/%s/firewall/rules", zoneID), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []FirewallRule{}, err
}
Expand Down
11 changes: 2 additions & 9 deletions images.go
Expand Up @@ -10,7 +10,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -204,15 +203,9 @@ func (api *API) CreateImageDirectUploadURL(ctx context.Context, accountID string
//
// API Reference: https://api.cloudflare.com/#cloudflare-images-list-images
func (api *API) ListImages(ctx context.Context, accountID string, pageOpts PaginationOptions) ([]Image, error) {
uri := fmt.Sprintf("/accounts/%s/images/v1", accountID)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/accounts/%s/images/v1", accountID), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []Image{}, err
}
Expand Down
13 changes: 2 additions & 11 deletions notifications.go
Expand Up @@ -6,8 +6,6 @@ import (
"fmt"
"net/http"
"time"

"github.com/google/go-querystring/query"
)

// NotificationMechanismData holds a single public facing mechanism data
Expand Down Expand Up @@ -424,15 +422,8 @@ type AlertHistoryFilter struct {
//
// API Reference: https://api.cloudflare.com/#notification-history-list-history
func (api *API) ListNotificationHistory(ctx context.Context, accountID string, alertHistoryFilter AlertHistoryFilter) ([]NotificationHistory, ResultInfo, error) {
v, _ := query.Values(alertHistoryFilter)

queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}

baseURL := fmt.Sprintf("/accounts/%s/alerting/v3/history", accountID)
res, err := api.makeRequestContext(ctx, http.MethodGet, baseURL+queryParams, nil)
uri := buildURI(fmt.Sprintf("/accounts/%s/alerting/v3/history", accountID), alertHistoryFilter)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []NotificationHistory{}, ResultInfo{}, err
}
Expand Down
11 changes: 2 additions & 9 deletions pages_project.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -120,15 +119,9 @@ type pagesProjectListResponse struct {
//
// API reference: https://api.cloudflare.com/#pages-project-get-projects
func (api *API) ListPagesProjects(ctx context.Context, accountID string, pageOpts PaginationOptions) ([]PagesProject, ResultInfo, error) {
uri := fmt.Sprintf("/accounts/%s/pages/projects", accountID)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/accounts/%s/pages/projects", accountID), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []PagesProject{}, ResultInfo{}, err
}
Expand Down
11 changes: 2 additions & 9 deletions rate_limiting.go
Expand Up @@ -6,7 +6,6 @@ import (
"fmt"
"net/http"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -106,15 +105,9 @@ func (api *API) CreateRateLimit(ctx context.Context, zoneID string, limit RateLi
//
// API reference: https://api.cloudflare.com/#rate-limits-for-a-zone-list-rate-limits
func (api *API) ListRateLimits(ctx context.Context, zoneID string, pageOpts PaginationOptions) ([]RateLimit, ResultInfo, error) {
uri := fmt.Sprintf("/zones/%s/rate_limits", zoneID)

v, _ := query.Values(pageOpts)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}
uri := buildURI(fmt.Sprintf("/zones/%s/rate_limits", zoneID), pageOpts)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []RateLimit{}, ResultInfo{}, err
}
Expand Down
14 changes: 5 additions & 9 deletions teams_list.go
Expand Up @@ -7,7 +7,6 @@ import (
"net/http"
"time"

"github.com/google/go-querystring/query"
"github.com/pkg/errors"
)

Expand Down Expand Up @@ -125,15 +124,12 @@ func (api *API) TeamsListItems(ctx context.Context, params TeamsListItemsParams)
return []TeamsListItem{}, ResultInfo{}, ErrMissingListID
}

v, _ := query.Values(params)
queryParams := v.Encode()
if queryParams != "" {
queryParams = "?" + queryParams
}

uri := fmt.Sprintf("/%s/%s/gateway/lists/%s/items", AccountRouteRoot, params.AccountID, params.ListID)
uri := buildURI(
fmt.Sprintf("/%s/%s/gateway/lists/%s/items", AccountRouteRoot, params.AccountID, params.ListID),
params,
)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri+queryParams, nil)
res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return []TeamsListItem{}, ResultInfo{}, err
}
Expand Down

0 comments on commit e5c6a2d

Please sign in to comment.