github.com/akamai/AkamaiOPEN-edgegrid-golang/v8@v8.1.0/pkg/edgeworkers/edgekv_initialize.go (about)

     1  package edgeworkers
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"fmt"
     7  	"net/http"
     8  )
     9  
    10  // EdgeKVInitialize is EdgeKV Initialize API interface
    11  type (
    12  	EdgeKVInitialize interface {
    13  		// InitializeEdgeKV Initialize the EdgeKV database
    14  		//
    15  		// See: https://techdocs.akamai.com/edgekv/reference/put-initialize
    16  		InitializeEdgeKV(ctx context.Context) (*EdgeKVInitializationStatus, error)
    17  
    18  		// GetEdgeKVInitializationStatus is used to check on the current initialization status
    19  		//
    20  		// See: https://techdocs.akamai.com/edgekv/reference/get-initialize
    21  		GetEdgeKVInitializationStatus(ctx context.Context) (*EdgeKVInitializationStatus, error)
    22  	}
    23  
    24  	// EdgeKVInitializationStatus represents a response object returned by InitializeEdgeKV and GetEdgeKVInitializeStatus
    25  	EdgeKVInitializationStatus struct {
    26  		AccountStatus    string `json:"accountStatus"`
    27  		CPCode           string `json:"cpcode"`
    28  		ProductionStatus string `json:"productionStatus"`
    29  		StagingStatus    string `json:"stagingStatus"`
    30  	}
    31  )
    32  
    33  var (
    34  	// ErrInitializeEdgeKV is returned in case an error occurs on InitializeEdgeKV operation
    35  	ErrInitializeEdgeKV = errors.New("initialize EdgeKV")
    36  
    37  	// ErrGetEdgeKVInitialize is returned in case an error occurs on GetEdgeKVInitializeStatus operation
    38  	ErrGetEdgeKVInitialize = errors.New("get EdgeKV initialization status")
    39  )
    40  
    41  func (e *edgeworkers) InitializeEdgeKV(ctx context.Context) (*EdgeKVInitializationStatus, error) {
    42  	logger := e.Log(ctx)
    43  	logger.Debug("InitializeEdgeKV")
    44  
    45  	uri := "/edgekv/v1/initialize"
    46  	req, err := http.NewRequestWithContext(ctx, http.MethodPut, uri, nil)
    47  	if err != nil {
    48  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrInitializeEdgeKV, err)
    49  	}
    50  
    51  	var result EdgeKVInitializationStatus
    52  	resp, err := e.Exec(req, &result)
    53  	if err != nil {
    54  		return nil, fmt.Errorf("%w: request failed: %s", ErrInitializeEdgeKV, err)
    55  	}
    56  
    57  	if resp.StatusCode != http.StatusCreated {
    58  		return nil, fmt.Errorf("%s: %w", ErrInitializeEdgeKV, e.Error(resp))
    59  	}
    60  
    61  	return &result, nil
    62  }
    63  
    64  func (e *edgeworkers) GetEdgeKVInitializationStatus(ctx context.Context) (*EdgeKVInitializationStatus, error) {
    65  	logger := e.Log(ctx)
    66  	logger.Debug("GetEdgeKVInitializationStatus")
    67  
    68  	uri := "/edgekv/v1/initialize"
    69  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
    70  	if err != nil {
    71  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrGetEdgeKVInitialize, err)
    72  	}
    73  
    74  	var result EdgeKVInitializationStatus
    75  	resp, err := e.Exec(req, &result)
    76  	if err != nil {
    77  		return nil, fmt.Errorf("%w: request failed: %s", ErrGetEdgeKVInitialize, err)
    78  	}
    79  
    80  	if resp.StatusCode != http.StatusOK {
    81  		return nil, fmt.Errorf("%s: %w", ErrGetEdgeKVInitialize, e.Error(resp))
    82  	}
    83  
    84  	return &result, nil
    85  }