github.com/openshift-online/ocm-sdk-go@v0.1.473/authorizations/v1/terms_review_client.go (about)

     1  /*
     2  Copyright (c) 2020 Red Hat, Inc.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8    http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  // IMPORTANT: This file has been generated automatically, refrain from modifying it manually as all
    18  // your changes will be lost when the file is generated again.
    19  
    20  package v1 // github.com/openshift-online/ocm-sdk-go/authorizations/v1
    21  
    22  import (
    23  	"bufio"
    24  	"bytes"
    25  	"context"
    26  	"io"
    27  	"net/http"
    28  	"net/url"
    29  
    30  	"github.com/openshift-online/ocm-sdk-go/errors"
    31  	"github.com/openshift-online/ocm-sdk-go/helpers"
    32  )
    33  
    34  // TermsReviewClient is the client of the 'terms_review' resource.
    35  //
    36  // Manages Red Hat's Terms and Conditions for using OpenShift Dedicated and Amazon Red Hat OpenShift [Terms]
    37  // review requests.
    38  type TermsReviewClient struct {
    39  	transport http.RoundTripper
    40  	path      string
    41  }
    42  
    43  // NewTermsReviewClient creates a new client for the 'terms_review'
    44  // resource using the given transport to send the requests and receive the
    45  // responses.
    46  func NewTermsReviewClient(transport http.RoundTripper, path string) *TermsReviewClient {
    47  	return &TermsReviewClient{
    48  		transport: transport,
    49  		path:      path,
    50  	}
    51  }
    52  
    53  // Post creates a request for the 'post' method.
    54  //
    55  // Reviews a user's status of Terms.
    56  func (c *TermsReviewClient) Post() *TermsReviewPostRequest {
    57  	return &TermsReviewPostRequest{
    58  		transport: c.transport,
    59  		path:      c.path,
    60  	}
    61  }
    62  
    63  // TermsReviewPostRequest is the request for the 'post' method.
    64  type TermsReviewPostRequest struct {
    65  	transport http.RoundTripper
    66  	path      string
    67  	query     url.Values
    68  	header    http.Header
    69  	request   *TermsReviewRequest
    70  }
    71  
    72  // Parameter adds a query parameter.
    73  func (r *TermsReviewPostRequest) Parameter(name string, value interface{}) *TermsReviewPostRequest {
    74  	helpers.AddValue(&r.query, name, value)
    75  	return r
    76  }
    77  
    78  // Header adds a request header.
    79  func (r *TermsReviewPostRequest) Header(name string, value interface{}) *TermsReviewPostRequest {
    80  	helpers.AddHeader(&r.header, name, value)
    81  	return r
    82  }
    83  
    84  // Impersonate wraps requests on behalf of another user.
    85  // Note: Services that do not support this feature may silently ignore this call.
    86  func (r *TermsReviewPostRequest) Impersonate(user string) *TermsReviewPostRequest {
    87  	helpers.AddImpersonationHeader(&r.header, user)
    88  	return r
    89  }
    90  
    91  // Request sets the value of the 'request' parameter.
    92  func (r *TermsReviewPostRequest) Request(value *TermsReviewRequest) *TermsReviewPostRequest {
    93  	r.request = value
    94  	return r
    95  }
    96  
    97  // Send sends this request, waits for the response, and returns it.
    98  //
    99  // This is a potentially lengthy operation, as it requires network communication.
   100  // Consider using a context and the SendContext method.
   101  func (r *TermsReviewPostRequest) Send() (result *TermsReviewPostResponse, err error) {
   102  	return r.SendContext(context.Background())
   103  }
   104  
   105  // SendContext sends this request, waits for the response, and returns it.
   106  func (r *TermsReviewPostRequest) SendContext(ctx context.Context) (result *TermsReviewPostResponse, err error) {
   107  	query := helpers.CopyQuery(r.query)
   108  	header := helpers.CopyHeader(r.header)
   109  	buffer := &bytes.Buffer{}
   110  	err = writeTermsReviewPostRequest(r, buffer)
   111  	if err != nil {
   112  		return
   113  	}
   114  	uri := &url.URL{
   115  		Path:     r.path,
   116  		RawQuery: query.Encode(),
   117  	}
   118  	request := &http.Request{
   119  		Method: "POST",
   120  		URL:    uri,
   121  		Header: header,
   122  		Body:   io.NopCloser(buffer),
   123  	}
   124  	if ctx != nil {
   125  		request = request.WithContext(ctx)
   126  	}
   127  	response, err := r.transport.RoundTrip(request)
   128  	if err != nil {
   129  		return
   130  	}
   131  	defer response.Body.Close()
   132  	result = &TermsReviewPostResponse{}
   133  	result.status = response.StatusCode
   134  	result.header = response.Header
   135  	reader := bufio.NewReader(response.Body)
   136  	_, err = reader.Peek(1)
   137  	if err == io.EOF {
   138  		err = nil
   139  		return
   140  	}
   141  	if result.status >= 400 {
   142  		result.err, err = errors.UnmarshalErrorStatus(reader, result.status)
   143  		if err != nil {
   144  			return
   145  		}
   146  		err = result.err
   147  		return
   148  	}
   149  	err = readTermsReviewPostResponse(result, reader)
   150  	if err != nil {
   151  		return
   152  	}
   153  	return
   154  }
   155  
   156  // TermsReviewPostResponse is the response for the 'post' method.
   157  type TermsReviewPostResponse struct {
   158  	status   int
   159  	header   http.Header
   160  	err      *errors.Error
   161  	response *TermsReviewResponse
   162  }
   163  
   164  // Status returns the response status code.
   165  func (r *TermsReviewPostResponse) Status() int {
   166  	if r == nil {
   167  		return 0
   168  	}
   169  	return r.status
   170  }
   171  
   172  // Header returns header of the response.
   173  func (r *TermsReviewPostResponse) Header() http.Header {
   174  	if r == nil {
   175  		return nil
   176  	}
   177  	return r.header
   178  }
   179  
   180  // Error returns the response error.
   181  func (r *TermsReviewPostResponse) Error() *errors.Error {
   182  	if r == nil {
   183  		return nil
   184  	}
   185  	return r.err
   186  }
   187  
   188  // Response returns the value of the 'response' parameter.
   189  func (r *TermsReviewPostResponse) Response() *TermsReviewResponse {
   190  	if r == nil {
   191  		return nil
   192  	}
   193  	return r.response
   194  }
   195  
   196  // GetResponse returns the value of the 'response' parameter and
   197  // a flag indicating if the parameter has a value.
   198  func (r *TermsReviewPostResponse) GetResponse() (value *TermsReviewResponse, ok bool) {
   199  	ok = r != nil && r.response != nil
   200  	if ok {
   201  		value = r.response
   202  	}
   203  	return
   204  }