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  }