github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/waf_hw/v1/webtamperprotection_rules/requests.go (about) 1 /* 2 Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved. 3 */ 4 5 package webtamperprotection_rules 6 7 import ( 8 "github.com/chnsz/golangsdk" 9 "github.com/chnsz/golangsdk/openstack/utils" 10 ) 11 12 var RequestOpts golangsdk.RequestOpts = golangsdk.RequestOpts{ 13 MoreHeaders: map[string]string{"Content-Type": "application/json", "X-Language": "en-us"}, 14 } 15 16 // CreateOptsBuilder allows extensions to add additional parameters to the 17 // Create request. 18 type CreateOptsBuilder interface { 19 ToWebTamperCreateMap() (map[string]interface{}, error) 20 } 21 22 // CreateOpts contains all the values needed to create a new web tamper protection rule. 23 type CreateOpts struct { 24 Hostname string `json:"hostname" required:"true"` 25 Url string `json:"url" required:"true"` 26 Description string `json:"description,omitempty"` 27 EnterpriseProjectId string `q:"enterprise_project_id" json:"-"` 28 } 29 30 // ToWebTamperCreateMap builds a create request body from CreateOpts. 31 func (opts CreateOpts) ToWebTamperCreateMap() (map[string]interface{}, error) { 32 return golangsdk.BuildRequestBody(opts, "") 33 } 34 35 // Create will create a new web tamper protection rule based on the values in CreateOpts. 36 func Create(c *golangsdk.ServiceClient, policyID string, opts CreateOptsBuilder) (r CreateResult) { 37 b, err := opts.ToWebTamperCreateMap() 38 if err != nil { 39 r.Err = err 40 return 41 } 42 query, err := golangsdk.BuildQueryString(opts) 43 if err != nil { 44 r.Err = err 45 return 46 } 47 48 reqOpt := &golangsdk.RequestOpts{OkCodes: []int{200}} 49 _, r.Err = c.Post(rootURL(c, policyID)+query.String(), b, &r.Body, reqOpt) 50 return 51 } 52 53 // Get retrieves a particular web tamper protection rule based on its unique ID. 54 func Get(c *golangsdk.ServiceClient, policyID, ruleID string) (r GetResult) { 55 return GetWithEpsID(c, policyID, ruleID, "") 56 } 57 58 func GetWithEpsID(c *golangsdk.ServiceClient, policyID, ruleID, epsID string) (r GetResult) { 59 reqOpt := &golangsdk.RequestOpts{ 60 MoreHeaders: RequestOpts.MoreHeaders, 61 } 62 63 _, r.Err = c.Get(resourceURL(c, policyID, ruleID)+utils.GenerateEpsIDQuery(epsID), &r.Body, reqOpt) 64 return 65 } 66 67 // Delete will permanently delete a particular web tamper protection rule based on its unique ID. 68 func Delete(c *golangsdk.ServiceClient, policyID, ruleID string) (r DeleteResult) { 69 return DeleteWithEpsID(c, policyID, ruleID, "") 70 } 71 72 func DeleteWithEpsID(c *golangsdk.ServiceClient, policyID, ruleID, epsID string) (r DeleteResult) { 73 reqOpt := &golangsdk.RequestOpts{ 74 OkCodes: []int{200}, 75 MoreHeaders: RequestOpts.MoreHeaders, 76 } 77 78 _, r.Err = c.Delete(resourceURL(c, policyID, ruleID)+utils.GenerateEpsIDQuery(epsID), reqOpt) 79 return 80 }