Merge "Adding Listsecret capability"
[aaf/sms.git] / sms-service / src / sms / handler / handler.go
index ed68c81..f5a0a0d 100644 (file)
@@ -102,8 +102,35 @@ func (h handler) getSecretHandler(w http.ResponseWriter, r *http.Request) {
        domName := vars["domName"]
        secName := vars["secretName"]
 
-       h.secretBackend.GetSecret(domName, secName)
-       //encode and return response
+       sec, err := h.secretBackend.GetSecret(domName, secName)
+       if err != nil {
+               http.Error(w, err.Error(), 500)
+               return
+       }
+
+       err = json.NewEncoder(w).Encode(sec)
+       if err != nil {
+               http.Error(w, err.Error(), 400)
+               return
+       }
+}
+
+// listSecretHandler handles listing all secrets under a particular domain name
+func (h handler) listSecretHandler(w http.ResponseWriter, r *http.Request) {
+       vars := mux.Vars(r)
+       domName := vars["domName"]
+
+       sec, err := h.secretBackend.ListSecret(domName)
+       if err != nil {
+               http.Error(w, err.Error(), http.StatusInternalServerError)
+               return
+       }
+
+       err = json.NewEncoder(w).Encode(sec)
+       if err != nil {
+               http.Error(w, err.Error(), http.StatusInternalServerError)
+               return
+       }
 }
 
 // deleteSecretHandler handles deleting a secret by given domain name and secret name
@@ -112,7 +139,11 @@ func (h handler) deleteSecretHandler(w http.ResponseWriter, r *http.Request) {
        domName := vars["domName"]
        secName := vars["secretName"]
 
-       h.secretBackend.DeleteSecret(domName, secName)
+       err := h.secretBackend.DeleteSecret(domName, secName)
+       if err != nil {
+               http.Error(w, err.Error(), http.StatusInternalServerError)
+               return
+       }
 }
 
 // struct that tracks various status items for SMS and backend
@@ -172,6 +203,7 @@ func CreateRouter(b smsbackend.SecretBackend) http.Handler {
        router.HandleFunc("/v1/sms/domain/{domName}", h.deleteSecretDomainHandler).Methods("DELETE")
 
        router.HandleFunc("/v1/sms/domain/{domName}/secret", h.createSecretHandler).Methods("POST")
+       router.HandleFunc("/v1/sms/domain/{domName}/secret", h.listSecretHandler).Methods("GET")
        router.HandleFunc("/v1/sms/domain/{domName}/secret/{secretName}", h.getSecretHandler).Methods("GET")
        router.HandleFunc("/v1/sms/domain/{domName}/secret/{secretName}", h.deleteSecretHandler).Methods("DELETE")