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 }