github.com/pivotal-cf/go-pivnet/v6@v6.0.2/eulas.go (about)

     1  package pivnet
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"net/http"
     7  	"strings"
     8  )
     9  
    10  type EULAsService struct {
    11  	client Client
    12  }
    13  
    14  type EULA struct {
    15  	Slug        string  `json:"slug,omitempty" yaml:"slug,omitempty"`
    16  	ID          int     `json:"id,omitempty" yaml:"id,omitempty"`
    17  	Name        string  `json:"name,omitempty" yaml:"name,omitempty"`
    18  	Content     string  `json:"content,omitempty" yaml:"content,omitempty"`
    19  	ArchivedAt  string  `json:"archived_at,omitempty" yaml:"archived_at,omitempty"`
    20  	Links       *Links  `json:"_links,omitempty" yaml:"_links,omitempty"`
    21  }
    22  
    23  type EULAsResponse struct {
    24  	EULAs []EULA `json:"eulas,omitempty"`
    25  	Links *Links `json:"_links,omitempty"`
    26  }
    27  
    28  type EULAAcceptanceResponse struct {
    29  	AcceptedAt string `json:"accepted_at,omitempty"`
    30  	Links      *Links `json:"_links,omitempty"`
    31  }
    32  
    33  func (e EULAsService) List() ([]EULA, error) {
    34  	url := "/eulas"
    35  
    36  	var response EULAsResponse
    37  	resp, err := e.client.MakeRequest(
    38  		"GET",
    39  		url,
    40  		http.StatusOK,
    41  		nil,
    42  	)
    43  	if err != nil {
    44  		return nil, err
    45  	}
    46  	defer resp.Body.Close()
    47  
    48  	err = json.NewDecoder(resp.Body).Decode(&response)
    49  	if err != nil {
    50  		return nil, err
    51  	}
    52  
    53  	return response.EULAs, nil
    54  }
    55  
    56  func (e EULAsService) Get(eulaSlug string) (EULA, error) {
    57  	url := fmt.Sprintf("/eulas/%s", eulaSlug)
    58  
    59  	var response EULA
    60  	resp, err := e.client.MakeRequest(
    61  		"GET",
    62  		url,
    63  		http.StatusOK,
    64  		nil,
    65  	)
    66  	if err != nil {
    67  		return EULA{}, err
    68  	}
    69  	defer resp.Body.Close()
    70  
    71  	err = json.NewDecoder(resp.Body).Decode(&response)
    72  	if err != nil {
    73  		return EULA{}, err
    74  	}
    75  
    76  	return response, nil
    77  }
    78  
    79  func (e EULAsService) Accept(productSlug string, releaseID int) error {
    80  	url := fmt.Sprintf(
    81  		"/products/%s/releases/%d/pivnet_resource_eula_acceptance",
    82  		productSlug,
    83  		releaseID,
    84  	)
    85  
    86  	resp, err := e.client.MakeRequest(
    87  		"POST",
    88  		url,
    89  		http.StatusOK,
    90  		strings.NewReader(`{}`),
    91  	)
    92  	if err != nil {
    93  		return err
    94  	}
    95  	defer resp.Body.Close()
    96  
    97  	return nil
    98  }