github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/api/servicekeys.go (about) 1 package api 2 3 import ( 4 "encoding/json" 5 "net/http" 6 7 log "github.com/Sirupsen/logrus" 8 "github.com/shipyard/shipyard/auth" 9 ) 10 11 func (a *Api) addServiceKey(w http.ResponseWriter, r *http.Request) { 12 var k *auth.ServiceKey 13 if err := json.NewDecoder(r.Body).Decode(&k); err != nil { 14 http.Error(w, err.Error(), http.StatusInternalServerError) 15 return 16 } 17 key, err := a.manager.NewServiceKey(k.Description) 18 if err != nil { 19 http.Error(w, err.Error(), http.StatusInternalServerError) 20 return 21 } 22 log.Infof("created service key key=%s description=%s", key.Key, key.Description) 23 if err := json.NewEncoder(w).Encode(key); err != nil { 24 log.Error(err) 25 } 26 } 27 28 func (a *Api) serviceKeys(w http.ResponseWriter, r *http.Request) { 29 w.Header().Set("content-type", "application/json") 30 31 keys, err := a.manager.ServiceKeys() 32 if err != nil { 33 log.Error(err) 34 http.Error(w, err.Error(), http.StatusBadRequest) 35 return 36 } 37 if err := json.NewEncoder(w).Encode(keys); err != nil { 38 log.Error(err) 39 http.Error(w, err.Error(), http.StatusBadRequest) 40 return 41 } 42 } 43 44 func (a *Api) removeServiceKey(w http.ResponseWriter, r *http.Request) { 45 var key *auth.ServiceKey 46 if err := json.NewDecoder(r.Body).Decode(&key); err != nil { 47 http.Error(w, err.Error(), http.StatusInternalServerError) 48 return 49 } 50 if err := a.manager.RemoveServiceKey(key.Key); err != nil { 51 http.Error(w, err.Error(), http.StatusInternalServerError) 52 return 53 } 54 log.Infof("removed service key %s", key.Key) 55 w.WriteHeader(http.StatusNoContent) 56 }