github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/examples/cis/cisv1/ratelimit/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "log" 6 "os" 7 8 "github.com/IBM-Cloud/bluemix-go/api/cis/cisv1" 9 "github.com/IBM-Cloud/bluemix-go/session" 10 "github.com/IBM-Cloud/bluemix-go/trace" 11 ) 12 13 func main() { 14 15 var cis_id string 16 flag.StringVar(&cis_id, "cis_id", "", "CRN of the CIS service instance") 17 var zone_id string 18 flag.StringVar(&zone_id, "zone_id", "", "zone_id for zone") 19 20 flag.Parse() 21 if zone_id == "" || cis_id == "" { 22 flag.Usage() 23 os.Exit(1) 24 } 25 26 trace.Logger = trace.NewLogger("true") 27 sess, err := session.New() 28 if err != nil { 29 log.Fatal(err) 30 } 31 32 cisClient, err := cisv1.New(sess) 33 if err != nil { 34 log.Fatal(err) 35 } 36 rateLimitAPI := cisClient.RateLimit() 37 38 log.Println(">>>>>>>>> RateLimit create") 39 40 params := cisv1.RateLimitRecord{ 41 Description: "test", 42 Threshold: 60, 43 Period: 600, 44 Correlate: &cisv1.RateLimitCorrelate{ 45 By: "nat", 46 }, 47 Action: cisv1.RateLimitAction{ 48 Mode: "simulate", 49 Timeout: 40000, 50 Response: &cisv1.ActionResponse{ 51 ContentType: "text/plain", 52 Body: "custom response body", 53 }, 54 }, 55 Match: cisv1.RateLimitMatch{ 56 Request: cisv1.MatchRequest{ 57 URL: "https", 58 Methods: []string{ 59 "GET", "POST", "PUT", "DELETE", 60 }, 61 Schemes: []string{ 62 "HTTP", "HTTPS", 63 }, 64 }, 65 Response: cisv1.MatchResponse{ 66 Statuses: []int{ 67 200, 201, 202, 68 }, 69 }, 70 }, 71 } 72 73 myRateLimitPtr, err := rateLimitAPI.CreateRateLimit(cis_id, zone_id, params) 74 if err != nil { 75 log.Fatal(err) 76 } 77 78 myRateLimit := *myRateLimitPtr 79 ruleID := myRateLimit.ID 80 81 log.Println(">>>>>>>>> RateLimit Read") 82 myRateLimitPtr, err = rateLimitAPI.GetRateLimit(cis_id, zone_id, ruleID) 83 if err != nil { 84 log.Fatal(err) 85 } 86 myRateLimit = *myRateLimitPtr 87 log.Printf("My Rate Limit %v", myRateLimit) 88 89 log.Println(">>>>>>>>> RateLimit Update") 90 _, err = rateLimitAPI.UpdateRateLimit(cis_id, zone_id, ruleID, params) 91 if err != nil { 92 log.Fatal(err) 93 } 94 95 log.Println(">>>>>>>>> RateLimit Delete") 96 err = rateLimitAPI.DeleteRateLimit(cis_id, zone_id, ruleID) 97 if err != nil { 98 log.Fatal(err) 99 } 100 }