github.com/openshift-online/ocm-sdk-go@v0.1.473/clustersmgmt/v1/version_gates_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/clustersmgmt/v1
    21  
    22  import (
    23  	"bufio"
    24  	"bytes"
    25  	"context"
    26  	"io"
    27  	"net/http"
    28  	"net/url"
    29  	"path"
    30  
    31  	"github.com/openshift-online/ocm-sdk-go/errors"
    32  	"github.com/openshift-online/ocm-sdk-go/helpers"
    33  )
    34  
    35  // VersionGatesClient is the client of the 'version_gates' resource.
    36  //
    37  // Manages the collection of version gates.
    38  type VersionGatesClient struct {
    39  	transport http.RoundTripper
    40  	path      string
    41  }
    42  
    43  // NewVersionGatesClient creates a new client for the 'version_gates'
    44  // resource using the given transport to send the requests and receive the
    45  // responses.
    46  func NewVersionGatesClient(transport http.RoundTripper, path string) *VersionGatesClient {
    47  	return &VersionGatesClient{
    48  		transport: transport,
    49  		path:      path,
    50  	}
    51  }
    52  
    53  // Add creates a request for the 'add' method.
    54  //
    55  // Adds a new version gate
    56  func (c *VersionGatesClient) Add() *VersionGatesAddRequest {
    57  	return &VersionGatesAddRequest{
    58  		transport: c.transport,
    59  		path:      c.path,
    60  	}
    61  }
    62  
    63  // List creates a request for the 'list' method.
    64  //
    65  // Retrieves a list of version gates.
    66  func (c *VersionGatesClient) List() *VersionGatesListRequest {
    67  	return &VersionGatesListRequest{
    68  		transport: c.transport,
    69  		path:      c.path,
    70  	}
    71  }
    72  
    73  // VersionGate returns the target 'version_gate' resource for the given identifier.
    74  //
    75  // Reference to the resource that manages a specific version gate.
    76  func (c *VersionGatesClient) VersionGate(id string) *VersionGateClient {
    77  	return NewVersionGateClient(
    78  		c.transport,
    79  		path.Join(c.path, id),
    80  	)
    81  }
    82  
    83  // VersionGatesAddRequest is the request for the 'add' method.
    84  type VersionGatesAddRequest struct {
    85  	transport http.RoundTripper
    86  	path      string
    87  	query     url.Values
    88  	header    http.Header
    89  	body      *VersionGate
    90  }
    91  
    92  // Parameter adds a query parameter.
    93  func (r *VersionGatesAddRequest) Parameter(name string, value interface{}) *VersionGatesAddRequest {
    94  	helpers.AddValue(&r.query, name, value)
    95  	return r
    96  }
    97  
    98  // Header adds a request header.
    99  func (r *VersionGatesAddRequest) Header(name string, value interface{}) *VersionGatesAddRequest {
   100  	helpers.AddHeader(&r.header, name, value)
   101  	return r
   102  }
   103  
   104  // Impersonate wraps requests on behalf of another user.
   105  // Note: Services that do not support this feature may silently ignore this call.
   106  func (r *VersionGatesAddRequest) Impersonate(user string) *VersionGatesAddRequest {
   107  	helpers.AddImpersonationHeader(&r.header, user)
   108  	return r
   109  }
   110  
   111  // Body sets the value of the 'body' parameter.
   112  //
   113  // Details of the version gate
   114  func (r *VersionGatesAddRequest) Body(value *VersionGate) *VersionGatesAddRequest {
   115  	r.body = value
   116  	return r
   117  }
   118  
   119  // Send sends this request, waits for the response, and returns it.
   120  //
   121  // This is a potentially lengthy operation, as it requires network communication.
   122  // Consider using a context and the SendContext method.
   123  func (r *VersionGatesAddRequest) Send() (result *VersionGatesAddResponse, err error) {
   124  	return r.SendContext(context.Background())
   125  }
   126  
   127  // SendContext sends this request, waits for the response, and returns it.
   128  func (r *VersionGatesAddRequest) SendContext(ctx context.Context) (result *VersionGatesAddResponse, err error) {
   129  	query := helpers.CopyQuery(r.query)
   130  	header := helpers.CopyHeader(r.header)
   131  	buffer := &bytes.Buffer{}
   132  	err = writeVersionGatesAddRequest(r, buffer)
   133  	if err != nil {
   134  		return
   135  	}
   136  	uri := &url.URL{
   137  		Path:     r.path,
   138  		RawQuery: query.Encode(),
   139  	}
   140  	request := &http.Request{
   141  		Method: "POST",
   142  		URL:    uri,
   143  		Header: header,
   144  		Body:   io.NopCloser(buffer),
   145  	}
   146  	if ctx != nil {
   147  		request = request.WithContext(ctx)
   148  	}
   149  	response, err := r.transport.RoundTrip(request)
   150  	if err != nil {
   151  		return
   152  	}
   153  	defer response.Body.Close()
   154  	result = &VersionGatesAddResponse{}
   155  	result.status = response.StatusCode
   156  	result.header = response.Header
   157  	reader := bufio.NewReader(response.Body)
   158  	_, err = reader.Peek(1)
   159  	if err == io.EOF {
   160  		err = nil
   161  		return
   162  	}
   163  	if result.status >= 400 {
   164  		result.err, err = errors.UnmarshalErrorStatus(reader, result.status)
   165  		if err != nil {
   166  			return
   167  		}
   168  		err = result.err
   169  		return
   170  	}
   171  	err = readVersionGatesAddResponse(result, reader)
   172  	if err != nil {
   173  		return
   174  	}
   175  	return
   176  }
   177  
   178  // VersionGatesAddResponse is the response for the 'add' method.
   179  type VersionGatesAddResponse struct {
   180  	status int
   181  	header http.Header
   182  	err    *errors.Error
   183  	body   *VersionGate
   184  }
   185  
   186  // Status returns the response status code.
   187  func (r *VersionGatesAddResponse) Status() int {
   188  	if r == nil {
   189  		return 0
   190  	}
   191  	return r.status
   192  }
   193  
   194  // Header returns header of the response.
   195  func (r *VersionGatesAddResponse) Header() http.Header {
   196  	if r == nil {
   197  		return nil
   198  	}
   199  	return r.header
   200  }
   201  
   202  // Error returns the response error.
   203  func (r *VersionGatesAddResponse) Error() *errors.Error {
   204  	if r == nil {
   205  		return nil
   206  	}
   207  	return r.err
   208  }
   209  
   210  // Body returns the value of the 'body' parameter.
   211  //
   212  // Details of the version gate
   213  func (r *VersionGatesAddResponse) Body() *VersionGate {
   214  	if r == nil {
   215  		return nil
   216  	}
   217  	return r.body
   218  }
   219  
   220  // GetBody returns the value of the 'body' parameter and
   221  // a flag indicating if the parameter has a value.
   222  //
   223  // Details of the version gate
   224  func (r *VersionGatesAddResponse) GetBody() (value *VersionGate, ok bool) {
   225  	ok = r != nil && r.body != nil
   226  	if ok {
   227  		value = r.body
   228  	}
   229  	return
   230  }
   231  
   232  // VersionGatesListRequest is the request for the 'list' method.
   233  type VersionGatesListRequest struct {
   234  	transport http.RoundTripper
   235  	path      string
   236  	query     url.Values
   237  	header    http.Header
   238  	order     *string
   239  	page      *int
   240  	search    *string
   241  	size      *int
   242  }
   243  
   244  // Parameter adds a query parameter.
   245  func (r *VersionGatesListRequest) Parameter(name string, value interface{}) *VersionGatesListRequest {
   246  	helpers.AddValue(&r.query, name, value)
   247  	return r
   248  }
   249  
   250  // Header adds a request header.
   251  func (r *VersionGatesListRequest) Header(name string, value interface{}) *VersionGatesListRequest {
   252  	helpers.AddHeader(&r.header, name, value)
   253  	return r
   254  }
   255  
   256  // Impersonate wraps requests on behalf of another user.
   257  // Note: Services that do not support this feature may silently ignore this call.
   258  func (r *VersionGatesListRequest) Impersonate(user string) *VersionGatesListRequest {
   259  	helpers.AddImpersonationHeader(&r.header, user)
   260  	return r
   261  }
   262  
   263  // Order sets the value of the 'order' parameter.
   264  //
   265  // Order criteria.
   266  //
   267  // The syntax of this parameter is similar to the syntax of the _order by_ clause of
   268  // an SQL statement, but using the names of the attributes of the version gate instead of
   269  // the names of the columns of a table. For example, in order to sort the version gates
   270  // descending by identifier the value should be:
   271  //
   272  // ```sql
   273  // id desc
   274  // ```
   275  //
   276  // If the parameter isn't provided, or if the value is empty, then the order of the
   277  // results is undefined.
   278  func (r *VersionGatesListRequest) Order(value string) *VersionGatesListRequest {
   279  	r.order = &value
   280  	return r
   281  }
   282  
   283  // Page sets the value of the 'page' parameter.
   284  //
   285  // Index of the requested page, where one corresponds to the first page.
   286  func (r *VersionGatesListRequest) Page(value int) *VersionGatesListRequest {
   287  	r.page = &value
   288  	return r
   289  }
   290  
   291  // Search sets the value of the 'search' parameter.
   292  //
   293  // Search criteria.
   294  //
   295  // The syntax of this parameter is similar to the syntax of the _where_ clause of an
   296  // SQL statement, but using the names of the attributes of the version gate instead of
   297  // the names of the columns of a table.
   298  //
   299  // If the parameter isn't provided, or if the value is empty, then all the version gates
   300  // that the user has permission to see will be returned.
   301  func (r *VersionGatesListRequest) Search(value string) *VersionGatesListRequest {
   302  	r.search = &value
   303  	return r
   304  }
   305  
   306  // Size sets the value of the 'size' parameter.
   307  //
   308  // Maximum number of items that will be contained in the returned page.
   309  //
   310  // Default value is `100`.
   311  func (r *VersionGatesListRequest) Size(value int) *VersionGatesListRequest {
   312  	r.size = &value
   313  	return r
   314  }
   315  
   316  // Send sends this request, waits for the response, and returns it.
   317  //
   318  // This is a potentially lengthy operation, as it requires network communication.
   319  // Consider using a context and the SendContext method.
   320  func (r *VersionGatesListRequest) Send() (result *VersionGatesListResponse, err error) {
   321  	return r.SendContext(context.Background())
   322  }
   323  
   324  // SendContext sends this request, waits for the response, and returns it.
   325  func (r *VersionGatesListRequest) SendContext(ctx context.Context) (result *VersionGatesListResponse, err error) {
   326  	query := helpers.CopyQuery(r.query)
   327  	if r.order != nil {
   328  		helpers.AddValue(&query, "order", *r.order)
   329  	}
   330  	if r.page != nil {
   331  		helpers.AddValue(&query, "page", *r.page)
   332  	}
   333  	if r.search != nil {
   334  		helpers.AddValue(&query, "search", *r.search)
   335  	}
   336  	if r.size != nil {
   337  		helpers.AddValue(&query, "size", *r.size)
   338  	}
   339  	header := helpers.CopyHeader(r.header)
   340  	uri := &url.URL{
   341  		Path:     r.path,
   342  		RawQuery: query.Encode(),
   343  	}
   344  	request := &http.Request{
   345  		Method: "GET",
   346  		URL:    uri,
   347  		Header: header,
   348  	}
   349  	if ctx != nil {
   350  		request = request.WithContext(ctx)
   351  	}
   352  	response, err := r.transport.RoundTrip(request)
   353  	if err != nil {
   354  		return
   355  	}
   356  	defer response.Body.Close()
   357  	result = &VersionGatesListResponse{}
   358  	result.status = response.StatusCode
   359  	result.header = response.Header
   360  	reader := bufio.NewReader(response.Body)
   361  	_, err = reader.Peek(1)
   362  	if err == io.EOF {
   363  		err = nil
   364  		return
   365  	}
   366  	if result.status >= 400 {
   367  		result.err, err = errors.UnmarshalErrorStatus(reader, result.status)
   368  		if err != nil {
   369  			return
   370  		}
   371  		err = result.err
   372  		return
   373  	}
   374  	err = readVersionGatesListResponse(result, reader)
   375  	if err != nil {
   376  		return
   377  	}
   378  	return
   379  }
   380  
   381  // VersionGatesListResponse is the response for the 'list' method.
   382  type VersionGatesListResponse struct {
   383  	status int
   384  	header http.Header
   385  	err    *errors.Error
   386  	items  *VersionGateList
   387  	page   *int
   388  	size   *int
   389  	total  *int
   390  }
   391  
   392  // Status returns the response status code.
   393  func (r *VersionGatesListResponse) Status() int {
   394  	if r == nil {
   395  		return 0
   396  	}
   397  	return r.status
   398  }
   399  
   400  // Header returns header of the response.
   401  func (r *VersionGatesListResponse) Header() http.Header {
   402  	if r == nil {
   403  		return nil
   404  	}
   405  	return r.header
   406  }
   407  
   408  // Error returns the response error.
   409  func (r *VersionGatesListResponse) Error() *errors.Error {
   410  	if r == nil {
   411  		return nil
   412  	}
   413  	return r.err
   414  }
   415  
   416  // Items returns the value of the 'items' parameter.
   417  //
   418  // Retrieved list of version gates.
   419  func (r *VersionGatesListResponse) Items() *VersionGateList {
   420  	if r == nil {
   421  		return nil
   422  	}
   423  	return r.items
   424  }
   425  
   426  // GetItems returns the value of the 'items' parameter and
   427  // a flag indicating if the parameter has a value.
   428  //
   429  // Retrieved list of version gates.
   430  func (r *VersionGatesListResponse) GetItems() (value *VersionGateList, ok bool) {
   431  	ok = r != nil && r.items != nil
   432  	if ok {
   433  		value = r.items
   434  	}
   435  	return
   436  }
   437  
   438  // Page returns the value of the 'page' parameter.
   439  //
   440  // Index of the requested page, where one corresponds to the first page.
   441  func (r *VersionGatesListResponse) Page() int {
   442  	if r != nil && r.page != nil {
   443  		return *r.page
   444  	}
   445  	return 0
   446  }
   447  
   448  // GetPage returns the value of the 'page' parameter and
   449  // a flag indicating if the parameter has a value.
   450  //
   451  // Index of the requested page, where one corresponds to the first page.
   452  func (r *VersionGatesListResponse) GetPage() (value int, ok bool) {
   453  	ok = r != nil && r.page != nil
   454  	if ok {
   455  		value = *r.page
   456  	}
   457  	return
   458  }
   459  
   460  // Size returns the value of the 'size' parameter.
   461  //
   462  // Maximum number of items that will be contained in the returned page.
   463  //
   464  // Default value is `100`.
   465  func (r *VersionGatesListResponse) Size() int {
   466  	if r != nil && r.size != nil {
   467  		return *r.size
   468  	}
   469  	return 0
   470  }
   471  
   472  // GetSize returns the value of the 'size' parameter and
   473  // a flag indicating if the parameter has a value.
   474  //
   475  // Maximum number of items that will be contained in the returned page.
   476  //
   477  // Default value is `100`.
   478  func (r *VersionGatesListResponse) GetSize() (value int, ok bool) {
   479  	ok = r != nil && r.size != nil
   480  	if ok {
   481  		value = *r.size
   482  	}
   483  	return
   484  }
   485  
   486  // Total returns the value of the 'total' parameter.
   487  //
   488  // Total number of items of the collection that match the search criteria,
   489  // regardless of the size of the page.
   490  func (r *VersionGatesListResponse) Total() int {
   491  	if r != nil && r.total != nil {
   492  		return *r.total
   493  	}
   494  	return 0
   495  }
   496  
   497  // GetTotal returns the value of the 'total' parameter and
   498  // a flag indicating if the parameter has a value.
   499  //
   500  // Total number of items of the collection that match the search criteria,
   501  // regardless of the size of the page.
   502  func (r *VersionGatesListResponse) GetTotal() (value int, ok bool) {
   503  	ok = r != nil && r.total != nil
   504  	if ok {
   505  		value = *r.total
   506  	}
   507  	return
   508  }