Skip to content

Commit

Permalink
use experimental method signatures
Browse files Browse the repository at this point in the history
  • Loading branch information
jacobbednarz committed May 15, 2023
1 parent f047e55 commit 5e5c2b2
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 79 deletions.
86 changes: 86 additions & 0 deletions cache_reserve.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package cloudflare

import (
"context"
"encoding/json"
"fmt"
"net/http"
"time"
)

// CacheReserve is the structure of the API object for the cache reserve
// setting.
type CacheReserve struct {
ID string `json:"id,omitempty"`
ModifiedOn time.Time `json:"modified_on,omitempty"`
Value string `json:"value"`
}

// CacheReserveDetailsResponse is the API response for the cache reserve
// setting.
type CacheReserveDetailsResponse struct {
Result CacheReserve `json:"result"`
Response
}

type updateCacheReserveRequest struct {

Check failure on line 26 in cache_reserve.go

View workflow job for this annotation

GitHub Actions / lint

type `updateCacheReserveRequest` is unused (unused)
Value string `json:"value"`
}

type zoneCacheReserveSingleResponse struct {
Response
Result CacheReserve `json:"result"`
}

type GetCacheReserveParams struct{}

type UpdateCacheReserveParams struct {
Value string `json:"value"`
}

// GetCacheReserve returns information about the current cache reserve settings.
//
// API reference: https://developers.cloudflare.com/api/operations/zone-cache-settings-get-cache-reserve-setting
func (api *API) GetCacheReserve(ctx context.Context, rc *ResourceContainer, params GetCacheReserveParams) (CacheReserve, error) {
if rc.Level != ZoneRouteLevel {
return CacheReserve{}, ErrRequiredZoneLevelResourceContainer
}

uri := fmt.Sprintf("/%s/%s/cache/cache_reserve", rc.Level, rc.Identifier)

res, err := api.makeRequestContext(ctx, http.MethodGet, uri, nil)
if err != nil {
return CacheReserve{}, err
}

var cacheReserveDetailsResponse CacheReserveDetailsResponse
err = json.Unmarshal(res, &cacheReserveDetailsResponse)
if err != nil {
return CacheReserve{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}
return cacheReserveDetailsResponse.Result, nil
}

// UpdateCacheReserve updates the cache reserve setting for a zone
//
// API reference: https://developers.cloudflare.com/api/operations/zone-cache-settings-change-cache-reserve-setting
func (api *API) UpdateCacheReserve(ctx context.Context, rc *ResourceContainer, params UpdateCacheReserveParams) (CacheReserve, error) {
if rc.Level != ZoneRouteLevel {
return CacheReserve{}, ErrRequiredZoneLevelResourceContainer
}

uri := fmt.Sprintf("/%s/%s/cache/cache_reserve", rc.Level, rc.Identifier)

res, err := api.makeRequestContext(ctx, http.MethodPatch, uri, params)
if err != nil {
return CacheReserve{}, err
}

response := &zoneCacheReserveSingleResponse{}
err = json.Unmarshal(res, &response)
if err != nil {
return CacheReserve{}, fmt.Errorf("%s: %w", errUnmarshalError, err)
}

return response.Result, nil
}
12 changes: 6 additions & 6 deletions zone_cache_reserve_test.go → cache_reserve_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
var cacheReserveTimestampString = "2019-02-20T22:37:07.107449Z"
var cacheReserveTimestamp, _ = time.Parse(time.RFC3339Nano, cacheReserveTimestampString)

func TestZoneCacheReserve(t *testing.T) {
func TestCacheReserve(t *testing.T) {
setup()
defer teardown()

Expand All @@ -34,20 +34,20 @@ func TestZoneCacheReserve(t *testing.T) {
}

mux.HandleFunc("/zones/01a7362d577a6c3019a474fd6f485823/cache/cache_reserve", handler)
want := ZoneCacheReserve{
want := CacheReserve{
ID: "cache_reserve",
Value: "on",
ModifiedOn: cacheReserveTimestamp,
}

actual, err := client.GetZoneCacheReserve(context.Background(), "01a7362d577a6c3019a474fd6f485823")
actual, err := client.GetCacheReserve(context.Background(), ZoneIdentifier("01a7362d577a6c3019a474fd6f485823"), GetCacheReserveParams{})

if assert.NoError(t, err) {
assert.Equal(t, want, actual)
}
}

func TestUpdateZoneCacheReserve(t *testing.T) {
func TestUpdateCacheReserve(t *testing.T) {
setup()
defer teardown()

Expand All @@ -68,13 +68,13 @@ func TestUpdateZoneCacheReserve(t *testing.T) {
}

mux.HandleFunc("/zones/01a7362d577a6c3019a474fd6f485823/cache/cache_reserve", handler)
want := ZoneCacheReserve{
want := CacheReserve{
ID: "cache_reserve",
Value: "off",
ModifiedOn: cacheReserveTimestamp,
}

actual, err := client.UpdateZoneCacheReserve(context.Background(), "01a7362d577a6c3019a474fd6f485823", "off")
actual, err := client.UpdateCacheReserve(context.Background(), ZoneIdentifier("01a7362d577a6c3019a474fd6f485823"), UpdateCacheReserveParams{Value: "off"})

if assert.NoError(t, err) {
assert.Equal(t, want, actual)
Expand Down
73 changes: 0 additions & 73 deletions zone_cache_reserve.go

This file was deleted.

0 comments on commit 5e5c2b2

Please sign in to comment.