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 }