From 16e7f3bdecfab087377e87d65b90219cae262553 Mon Sep 17 00:00:00 2001 From: Paddy Foran Date: Wed, 28 Nov 2012 19:23:37 -0500 Subject: [PATCH] Implemented getting a subscription by its ID. Fixes #38. --- subscriptions.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/subscriptions.go b/subscriptions.go index 9612e70..d6796c7 100644 --- a/subscriptions.go +++ b/subscriptions.go @@ -78,6 +78,26 @@ func getUserSubscription(w http.ResponseWriter, r *twocloud.RequestBundle) { } func getSubscription(w http.ResponseWriter, r *twocloud.RequestBundle) { + requestedSubscription := r.Request.URL.Query().Get(":subscription") + subscriptionID, err := ruid.RUIDFromString(requestedSubscription) + if err != nil { + Respond(w, r, http.StatusBadRequest, "Invalid subscription ID", []interface{}{}) + return + } + subscription := *r.AuthUser.Subscription + if r.AuthUser.Subscription.ID != subscriptionID { + if !r.AuthUser.IsAdmin { + Respond(w, r, http.StatusUnauthorized, "You don't have access to that subscription.", []interface{}{}) + return + } + subscription, err = r.GetSubscription(subscriptionID) + if err != nil { + Respond(w, r, http.StatusInternalServerError, "Internal server error", []interface{}{}) + return + } + } + Respond(w, r, http.StatusOK, "Successfully retrieved subscription information", []interface{}{subscription}) + return } func startSubscription(w http.ResponseWriter, r *twocloud.RequestBundle) {