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 }