github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/waf_hw/v1/valuelists/requests.go (about)

     1  /*
     2   Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved.
     3  */
     4  
     5  package valuelists
     6  
     7  import (
     8  	"github.com/chnsz/golangsdk"
     9  	"github.com/chnsz/golangsdk/openstack/utils"
    10  )
    11  
    12  var requestOpts = golangsdk.RequestOpts{
    13  	MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"},
    14  }
    15  
    16  // CreateOpts the options to create reference table.
    17  type CreateOpts struct {
    18  	Name                string   `json:"name" required:"true"`
    19  	Type                string   `json:"type" required:"true"`
    20  	Values              []string `json:"values,omitempty"`
    21  	Description         string   `json:"description,omitempty"`
    22  	EnterpriseProjectId string   `q:"enterprise_project_id" json:"-"`
    23  }
    24  
    25  // Create a reference table.
    26  func Create(c *golangsdk.ServiceClient, opts CreateOpts) (*WafValueList, error) {
    27  	b, err := golangsdk.BuildRequestBody(opts, "")
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  	query, err := golangsdk.BuildQueryString(opts)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  
    36  	var rst golangsdk.Result
    37  	_, err = c.Post(rootURL(c)+query.String(), b, &rst.Body, &golangsdk.RequestOpts{
    38  		OkCodes:     []int{200},
    39  		MoreHeaders: requestOpts.MoreHeaders,
    40  	})
    41  	if err == nil {
    42  		var r WafValueList
    43  		rst.ExtractInto(&r)
    44  		return &r, nil
    45  	}
    46  	return nil, err
    47  }
    48  
    49  //UpdateValueListOpts the options to update reference table.
    50  type UpdateValueListOpts struct {
    51  	Name                string   `json:"name" required:"true"`
    52  	Values              []string `json:"values,omitempty"`
    53  	Type                string   `json:"type,omitempty"`
    54  	Description         *string  `json:"description,omitempty"`
    55  	EnterpriseProjectId string   `q:"enterprise_project_id" json:"-"`
    56  }
    57  
    58  // Update reference table according options and id.
    59  func Update(c *golangsdk.ServiceClient, id string, opts UpdateValueListOpts) (*WafValueList, error) {
    60  	b, err := golangsdk.BuildRequestBody(opts, "")
    61  	if err != nil {
    62  		return nil, err
    63  	}
    64  	query, err := golangsdk.BuildQueryString(opts)
    65  	if err != nil {
    66  		return nil, err
    67  	}
    68  
    69  	var rst golangsdk.Result
    70  	_, err = c.Put(resourceURL(c, id)+query.String(), b, &rst.Body, &golangsdk.RequestOpts{
    71  		OkCodes:     []int{200},
    72  		MoreHeaders: requestOpts.MoreHeaders,
    73  	})
    74  	if err == nil {
    75  		var r WafValueList
    76  		rst.ExtractInto(&r)
    77  		return &r, nil
    78  	}
    79  	return nil, err
    80  }
    81  
    82  // Get a reference table by id.
    83  func Get(c *golangsdk.ServiceClient, id string) (*WafValueList, error) {
    84  	return GetWithEpsID(c, id, "")
    85  }
    86  
    87  func GetWithEpsID(c *golangsdk.ServiceClient, id, epsID string) (*WafValueList, error) {
    88  	var rst golangsdk.Result
    89  	_, err := c.Get(resourceURL(c, id)+utils.GenerateEpsIDQuery(epsID), &rst.Body, &golangsdk.RequestOpts{
    90  		OkCodes:     []int{200},
    91  		MoreHeaders: requestOpts.MoreHeaders,
    92  	})
    93  	if err == nil {
    94  		var r WafValueList
    95  		rst.ExtractInto(&r)
    96  		return &r, nil
    97  	}
    98  	return nil, err
    99  }
   100  
   101  // ListValueListOpts the options to query a list of reference tables.
   102  type ListValueListOpts struct {
   103  	Page                int    `q:"page"`
   104  	Pagesize            int    `q:"pagesize"`
   105  	EnterpriseProjectId string `q:"enterprise_project_id"`
   106  }
   107  
   108  // List : Query a list of reference tables according to the options.
   109  func List(c *golangsdk.ServiceClient, opts ListValueListOpts) (*ListValueListRst, error) {
   110  	url := rootURL(c)
   111  	query, err := golangsdk.BuildQueryString(opts)
   112  	if err != nil {
   113  		return nil, err
   114  	}
   115  	url += query.String()
   116  
   117  	var rst golangsdk.Result
   118  	_, err = c.Get(url, &rst.Body, &golangsdk.RequestOpts{
   119  		OkCodes:     []int{200},
   120  		MoreHeaders: requestOpts.MoreHeaders,
   121  	})
   122  	if err == nil {
   123  		var r ListValueListRst
   124  		rst.ExtractInto(&r)
   125  		return &r, nil
   126  	}
   127  	return nil, err
   128  }
   129  
   130  // Delete reference table by id.
   131  func Delete(c *golangsdk.ServiceClient, id string) (*WafValueList, error) {
   132  	return DeleteWithEpsID(c, id, "")
   133  }
   134  
   135  func DeleteWithEpsID(c *golangsdk.ServiceClient, id, epsID string) (*WafValueList, error) {
   136  	var rst golangsdk.Result
   137  	_, err := c.DeleteWithResponse(resourceURL(c, id)+utils.GenerateEpsIDQuery(epsID), &rst.Body, &golangsdk.RequestOpts{
   138  		OkCodes:     []int{200},
   139  		MoreHeaders: requestOpts.MoreHeaders,
   140  	})
   141  	if err == nil {
   142  		var r WafValueList
   143  		rst.ExtractInto(&r)
   144  		return &r, nil
   145  	}
   146  	return nil, err
   147  }