| 294 | } |
| 295 | |
| 296 | func (server *ApiServer) ProxyUpdate(response http.ResponseWriter, request *http.Request) { |
| 297 | log := zerolog.Ctx(request.Context()) |
| 298 | if request.Method == "POST" { |
| 299 | log.Warn().Msg("ProxyUpdate: HTTP method POST is depercated. Use HTTP PATCH instead.") |
| 300 | } |
| 301 | |
| 302 | vars := mux.Vars(request) |
| 303 | |
| 304 | proxy, err := server.Collection.Get(vars["proxy"]) |
| 305 | if server.apiError(response, err) { |
| 306 | return |
| 307 | } |
| 308 | |
| 309 | // Default fields are the same as existing proxy |
| 310 | input := Proxy{Listen: proxy.Listen, Upstream: proxy.Upstream, Enabled: proxy.Enabled} |
| 311 | err = json.NewDecoder(request.Body).Decode(&input) |
| 312 | if server.apiError(response, joinError(err, ErrBadRequestBody)) { |
| 313 | return |
| 314 | } |
| 315 | |
| 316 | err = proxy.Update(&input) |
| 317 | if server.apiError(response, err) { |
| 318 | return |
| 319 | } |
| 320 | |
| 321 | data, err := json.Marshal(proxyWithToxics(proxy)) |
| 322 | if server.apiError(response, err) { |
| 323 | return |
| 324 | } |
| 325 | |
| 326 | response.Header().Set("Content-Type", "application/json") |
| 327 | _, err = response.Write(data) |
| 328 | if err != nil { |
| 329 | log.Warn().Err(err).Msg("ProxyUpdate: Failed to write response to client") |
| 330 | } |
| 331 | } |
| 332 | |
| 333 | func (server *ApiServer) ProxyDelete(response http.ResponseWriter, request *http.Request) { |
| 334 | vars := mux.Vars(request) |