github.com/ravendb/ravendb-go-client@v0.0.0-20240229102137-4474ee7aa0fa/serverwide/certificates/operation_put_certificate.go (about) 1 package certificates 2 3 import ( 4 "bytes" 5 "encoding/base64" 6 "encoding/json" 7 "github.com/ravendb/ravendb-go-client" 8 "net/http" 9 ) 10 11 type OperationPutCertificate struct { 12 CertName string `json:"CertName,omitempty"` 13 CertBytes []byte `json:"CertBytes,omitempty"` 14 SecurityClearance string `json:"SecurityClearance,omitempty"` 15 Permissions map[string]string `json:"Permissions,omitempty"` 16 } 17 18 func (operation *OperationPutCertificate) GetCommand(conventions *ravendb.DocumentConventions) (ravendb.RavenCommand, error) { 19 return &putCertificateCommand{ 20 RaftCommandBase: ravendb.RaftCommandBase{ 21 RavenCommandBase: ravendb.RavenCommandBase{ 22 ResponseType: ravendb.RavenCommandResponseTypeObject, 23 }, 24 }, 25 parent: operation, 26 }, nil 27 } 28 29 type putCertificateCommand struct { 30 ravendb.RaftCommandBase 31 parent *OperationPutCertificate 32 } 33 34 func (c *putCertificateCommand) CreateRequest(node *ravendb.ServerNode) (*http.Request, error) { 35 raftUniqueRequestId, err := c.RaftCommandBase.RaftUniqueRequestId() 36 if err != nil { 37 return nil, err 38 } 39 url := node.URL + "/admin/certificates?raft-request-id=" + raftUniqueRequestId 40 41 var body map[string]interface{} 42 body = make(map[string]interface{}) 43 body["Name"] = c.parent.CertName 44 body["Certificate"] = base64.StdEncoding.EncodeToString(c.parent.CertBytes) 45 body["SecurityClearance"] = c.parent.SecurityClearance 46 body["Permissions"] = c.parent.Permissions 47 48 bodyMarshalled, err := json.MarshalIndent(body, "", "\t") 49 if err != nil { 50 return nil, err 51 } 52 53 req, err := http.NewRequest(http.MethodPut, url, bytes.NewBuffer(bodyMarshalled)) 54 if err != nil { 55 return nil, err 56 } 57 req.Header.Add("Content-Type", "application/json; charset=UTF-8") 58 return req, nil 59 60 } 61 62 func (c *putCertificateCommand) SetResponse(response []byte, fromCache bool) error { 63 return json.Unmarshal(response, c.parent) 64 }