1package api 2 3import ( 4 "context" 5 "errors" 6 7 "github.com/mitchellh/mapstructure" 8) 9 10func (c *Sys) CORSStatus() (*CORSResponse, error) { 11 r := c.c.NewRequest("GET", "/v1/sys/config/cors") 12 13 ctx, cancelFunc := context.WithCancel(context.Background()) 14 defer cancelFunc() 15 resp, err := c.c.RawRequestWithContext(ctx, r) 16 if err != nil { 17 return nil, err 18 } 19 defer resp.Body.Close() 20 21 secret, err := ParseSecret(resp.Body) 22 if err != nil { 23 return nil, err 24 } 25 if secret == nil || secret.Data == nil { 26 return nil, errors.New("data from server response is empty") 27 } 28 29 var result CORSResponse 30 err = mapstructure.Decode(secret.Data, &result) 31 if err != nil { 32 return nil, err 33 } 34 35 return &result, err 36} 37 38func (c *Sys) ConfigureCORS(req *CORSRequest) (*CORSResponse, error) { 39 r := c.c.NewRequest("PUT", "/v1/sys/config/cors") 40 if err := r.SetJSONBody(req); err != nil { 41 return nil, err 42 } 43 44 ctx, cancelFunc := context.WithCancel(context.Background()) 45 defer cancelFunc() 46 resp, err := c.c.RawRequestWithContext(ctx, r) 47 if err != nil { 48 return nil, err 49 } 50 defer resp.Body.Close() 51 52 secret, err := ParseSecret(resp.Body) 53 if err != nil { 54 return nil, err 55 } 56 if secret == nil || secret.Data == nil { 57 return nil, errors.New("data from server response is empty") 58 } 59 60 var result CORSResponse 61 err = mapstructure.Decode(secret.Data, &result) 62 if err != nil { 63 return nil, err 64 } 65 66 return &result, err 67} 68 69func (c *Sys) DisableCORS() (*CORSResponse, error) { 70 r := c.c.NewRequest("DELETE", "/v1/sys/config/cors") 71 72 ctx, cancelFunc := context.WithCancel(context.Background()) 73 defer cancelFunc() 74 resp, err := c.c.RawRequestWithContext(ctx, r) 75 if err != nil { 76 return nil, err 77 } 78 defer resp.Body.Close() 79 80 secret, err := ParseSecret(resp.Body) 81 if err != nil { 82 return nil, err 83 } 84 if secret == nil || secret.Data == nil { 85 return nil, errors.New("data from server response is empty") 86 } 87 88 var result CORSResponse 89 err = mapstructure.Decode(secret.Data, &result) 90 if err != nil { 91 return nil, err 92 } 93 94 return &result, err 95} 96 97type CORSRequest struct { 98 AllowedOrigins string `json:"allowed_origins" mapstructure:"allowed_origins"` 99 Enabled bool `json:"enabled" mapstructure:"enabled"` 100} 101 102type CORSResponse struct { 103 AllowedOrigins string `json:"allowed_origins" mapstructure:"allowed_origins"` 104 Enabled bool `json:"enabled" mapstructure:"enabled"` 105} 106