github.com/clerkinc/clerk-sdk-go@v1.49.1/clerk/jwt_templates.go (about) 1 package clerk 2 3 import ( 4 "encoding/json" 5 "fmt" 6 "net/http" 7 ) 8 9 type JWTTemplatesService service 10 11 type JWTTemplate struct { 12 ID string `json:"id"` 13 Object string `json:"object"` 14 Name string `json:"name"` 15 Claims json.RawMessage `json:"claims"` 16 Lifetime int `json:"lifetime"` 17 AllowedClockSkew int `json:"allowed_clock_skew"` 18 CustomSigningKey bool `json:"custom_signing_key"` 19 SigningAlgorithm string `json:"signing_algorithm"` 20 CreatedAt int64 `json:"created_at"` 21 UpdatedAt int64 `json:"updated_at"` 22 } 23 24 type CreateUpdateJWTTemplate struct { 25 Name string `json:"name"` 26 Claims map[string]interface{} `json:"claims"` 27 Lifetime *int `json:"lifetime"` 28 AllowedClockSkew *int `json:"allowed_clock_skew"` 29 30 CustomSigningKey bool `json:"custom_signing_key"` 31 SigningAlgorithm *string `json:"signing_algorithm"` 32 SigningKey *string `json:"signing_key"` 33 } 34 35 func (t CreateUpdateJWTTemplate) toRequest() (*createUpdateJWTTemplateRequest, error) { 36 claimsBytes, err := json.Marshal(t.Claims) 37 if err != nil { 38 return nil, err 39 } 40 41 return &createUpdateJWTTemplateRequest{ 42 Claims: string(claimsBytes), 43 Name: t.Name, 44 Lifetime: t.Lifetime, 45 AllowedClockSkew: t.AllowedClockSkew, 46 CustomSigningKey: t.CustomSigningKey, 47 SigningAlgorithm: t.SigningAlgorithm, 48 SigningKey: t.SigningKey, 49 }, nil 50 } 51 52 type createUpdateJWTTemplateRequest struct { 53 Claims string `json:"claims"` 54 Name string `json:"name"` 55 Lifetime *int `json:"lifetime,omitempty"` 56 AllowedClockSkew *int `json:"allowed_clock_skew,omitempty"` 57 CustomSigningKey bool `json:"custom_signing_key"` 58 SigningAlgorithm *string `json:"signing_algorithm,omitempty"` 59 SigningKey *string `json:"signing_key,omitempty"` 60 } 61 62 func (s JWTTemplatesService) ListAll() ([]JWTTemplate, error) { 63 req, err := s.client.NewRequest(http.MethodGet, JWTTemplatesUrl) 64 if err != nil { 65 return nil, err 66 } 67 68 jwtTemplates := make([]JWTTemplate, 0) 69 if _, err = s.client.Do(req, &jwtTemplates); err != nil { 70 return nil, err 71 } 72 73 return jwtTemplates, nil 74 } 75 76 func (s JWTTemplatesService) Read(id string) (*JWTTemplate, error) { 77 reqURL := fmt.Sprintf("%s/%s", JWTTemplatesUrl, id) 78 req, err := s.client.NewRequest(http.MethodGet, reqURL) 79 if err != nil { 80 return nil, err 81 } 82 83 jwtTemplate := &JWTTemplate{} 84 if _, err = s.client.Do(req, jwtTemplate); err != nil { 85 return nil, err 86 } 87 88 return jwtTemplate, nil 89 } 90 91 func (s JWTTemplatesService) Create(params *CreateUpdateJWTTemplate) (*JWTTemplate, error) { 92 reqBody, err := params.toRequest() 93 if err != nil { 94 return nil, err 95 } 96 97 req, err := s.client.NewRequest(http.MethodPost, JWTTemplatesUrl, reqBody) 98 if err != nil { 99 return nil, err 100 } 101 102 resp := JWTTemplate{} 103 if _, err = s.client.Do(req, &resp); err != nil { 104 return nil, err 105 } 106 107 return &resp, nil 108 } 109 110 func (s JWTTemplatesService) Update(id string, params *CreateUpdateJWTTemplate) (*JWTTemplate, error) { 111 reqURL := fmt.Sprintf("%s/%s", JWTTemplatesUrl, id) 112 113 reqBody, err := params.toRequest() 114 if err != nil { 115 return nil, err 116 } 117 118 req, err := s.client.NewRequest(http.MethodPatch, reqURL, reqBody) 119 if err != nil { 120 return nil, err 121 } 122 123 resp := JWTTemplate{} 124 if _, err = s.client.Do(req, &resp); err != nil { 125 return nil, err 126 } 127 128 return &resp, nil 129 } 130 131 func (s JWTTemplatesService) Delete(id string) (*DeleteResponse, error) { 132 reqURL := fmt.Sprintf("%s/%s", JWTTemplatesUrl, id) 133 req, err := s.client.NewRequest(http.MethodDelete, reqURL) 134 if err != nil { 135 return nil, err 136 } 137 138 resp := &DeleteResponse{} 139 if _, err = s.client.Do(req, resp); err != nil { 140 return nil, err 141 } 142 return resp, nil 143 }