(name, credType string, value, cred interface{}, options ...SetOption)
| 92 | } |
| 93 | |
| 94 | func (ch *CredHub) setCredential(name, credType string, value, cred interface{}, options ...SetOption) error { |
| 95 | request := &setRequest{ |
| 96 | Name: name, |
| 97 | Type: credType, |
| 98 | Value: value, |
| 99 | } |
| 100 | |
| 101 | serverVersion, err := ch.ServerVersion() |
| 102 | if err != nil { |
| 103 | return err |
| 104 | } |
| 105 | if serverVersion.Segments()[0] < 2 { |
| 106 | request.Mode = "overwrite" |
| 107 | } |
| 108 | |
| 109 | for _, option := range options { |
| 110 | if err := option(&request.SetOptions); err != nil { |
| 111 | return err |
| 112 | } |
| 113 | } |
| 114 | |
| 115 | if request.Metadata != nil && !supportsMetadata(serverVersion) { |
| 116 | return ServerDoesNotSupportMetadataError |
| 117 | } |
| 118 | |
| 119 | resp, err := ch.Request(http.MethodPut, "/api/v1/data", nil, request, true) |
| 120 | if err != nil { |
| 121 | return err |
| 122 | } |
| 123 | |
| 124 | defer resp.Body.Close() |
| 125 | defer io.Copy(io.Discard, resp.Body) |
| 126 | |
| 127 | return json.NewDecoder(resp.Body).Decode(cred) |
| 128 | } |
| 129 | |
| 130 | func supportsMetadata(v *version.Version) bool { |
| 131 | supportedVersion := version.Must(version.NewVersion("2.6.0")) |
no test coverage detected