code.vegaprotocol.io/vega@v0.79.0/wallet/service/v2/endpoint_list_methods.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package v2 17 18 import ( 19 "encoding/json" 20 "net/http" 21 "sort" 22 23 vfmt "code.vegaprotocol.io/vega/libs/fmt" 24 "code.vegaprotocol.io/vega/logging" 25 26 "github.com/julienschmidt/httprouter" 27 ) 28 29 type ListMethodsResponse struct { 30 RegisteredMethods []string `json:"registeredMethods"` 31 } 32 33 func (a *API) ListMethods(w http.ResponseWriter, r *http.Request, _ httprouter.Params) { 34 a.log.Info("New request", 35 logging.String("url", vfmt.Escape(r.URL.String())), 36 ) 37 38 registeredMethods := make([]string, 0, len(a.commands)) 39 for method := range a.commands { 40 registeredMethods = append(registeredMethods, method) 41 } 42 43 sort.Strings(registeredMethods) 44 45 body, _ := json.Marshal(Response{ 46 Result: ListMethodsResponse{ 47 RegisteredMethods: registeredMethods, 48 }, 49 }) 50 51 w.WriteHeader(http.StatusOK) 52 if _, err := w.Write(body); err != nil { 53 w.WriteHeader(http.StatusInternalServerError) 54 a.log.Info("Internal error", 55 logging.Int("http-status", http.StatusInternalServerError), 56 logging.Error(err), 57 ) 58 return 59 } 60 61 a.log.Info("Success", 62 logging.Int("http-status", http.StatusOK), 63 ) 64 }