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

     1  package hapi
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"fmt"
     7  	"net/http"
     8  )
     9  
    10  type (
    11  	// ChangeRequests contains operations to query for Change Requests.
    12  	ChangeRequests interface {
    13  		// GetChangeRequest request status and details specified by the change ID
    14  		// that is provided when you make a change request.
    15  		//
    16  		// See: https://techdocs.akamai.com/edge-hostnames/reference/get-changeid
    17  		GetChangeRequest(context.Context, GetChangeRequest) (*ChangeRequest, error)
    18  	}
    19  
    20  	// GetChangeRequest is a request struct
    21  	GetChangeRequest struct {
    22  		ChangeID int
    23  	}
    24  
    25  	// ChangeRequest represents change response from api
    26  	ChangeRequest struct {
    27  		Action            string         `json:"action"`
    28  		ChangeID          int64          `json:"changeId"`
    29  		Comments          string         `json:"comments"`
    30  		EdgeHostnames     []EdgeHostname `json:"edgeHostnames"`
    31  		Status            string         `json:"status"`
    32  		StatusMessage     string         `json:"statusMessage"`
    33  		StatusUpdateEmail string         `json:"statusUpdateEmail"`
    34  		StatusUpdateDate  string         `json:"statusUpdateDate"`
    35  		SubmitDate        string         `json:"submitDate"`
    36  		Submitter         string         `json:"submitter"`
    37  		SubmitterEmail    string         `json:"submitterEmail"`
    38  	}
    39  )
    40  
    41  // ErrGetChangeRequest returned when get change request fails
    42  var ErrGetChangeRequest = errors.New("get change request")
    43  
    44  func (h *hapi) GetChangeRequest(ctx context.Context, prop GetChangeRequest) (*ChangeRequest, error) {
    45  	logger := h.Log(ctx)
    46  	logger.Debug("GetChangeRequest")
    47  
    48  	uri := fmt.Sprintf("/hapi/v1/change-requests/%d", prop.ChangeID)
    49  	req, err := http.NewRequestWithContext(ctx, http.MethodGet, uri, nil)
    50  	if err != nil {
    51  		return nil, fmt.Errorf("%w: failed to create request: %s", ErrGetChangeRequest, err)
    52  	}
    53  
    54  	var rval ChangeRequest
    55  
    56  	resp, err := h.Exec(req, &rval)
    57  	if err != nil {
    58  		return nil, fmt.Errorf("%w: request failed: %s", ErrGetChangeRequest, err)
    59  	}
    60  
    61  	if resp.StatusCode != http.StatusOK {
    62  		return nil, fmt.Errorf("%s: %w", ErrGetChangeRequest, h.Error(resp))
    63  	}
    64  
    65  	return &rval, nil
    66  }