public ActionResult Create(ProvisioningRequest provisionRequest) { try { string requestBody = Request.GetBody(); //Emailer.SendEmail("Addon Action", "Create - " + requestBody); provisionRequest = JsonConvert.DeserializeObject<ProvisioningRequest>(requestBody); Plan plan; if (!Enum.TryParse<Plan>(provisionRequest.plan, true, out plan)) { Emailer.SendEmail("Addon Debug Response", "No plan exceptio"); throw new ArgumentException(string.Format("Plan \"{0}\" is not a valid plan", provisionRequest.plan)); } var db = new Database("DefaultConnection"); var purchase = new Purchase() { CreatedBy = string.Format("{0};{1}", Request.GetForwardedHostAddress(), User.Identity.Name), UniqueId = Guid.NewGuid().ToString(), Plan = plan, ProviderId = provisionRequest.heroku_id, ProvisionStatus = ProvisionStatus.Provisioning, ApiKey = Guid.NewGuid().ToString(), ApiSecretKey = Guid.NewGuid().ToString() }; // TODO: Provision the resource purchase.ProvisionStatus = ProvisionStatus.Provisioned; Purchase.Save(db, purchase); var output = new { id = purchase.UniqueId, config = new { CONFIG_ApiKey = purchase.ApiKey, CONFIG_ApiSecretKey = purchase.ApiSecretKey } }; Emailer.SendEmail("Addon Debug Response", output.ToString()); return Json(output, JsonRequestBehavior.AllowGet); } catch(Exception ex) { Emailer.SendEmail("Addon - Error Provisioning Body", ex.Message); } return Json("fail", JsonRequestBehavior.AllowGet); }
public ActionResult Create(ProvisioningRequest provisionRequest) { Plan plan; if (!Enum.TryParse<Plan>(provisionRequest.plan, true, out plan)) { throw new ArgumentException(string.Format("Plan \"{0}\" is not a valid plan", provisionRequest.plan)); } var resource = new Resource { CreatedBy = string.Format("{0};{1}", Request.GetForwardedHostAddress(), User.Identity.Name), Id = Guid.NewGuid(), Plan = plan, ProviderId = provisionRequest.heroku_id, ProvisionStatus = ProvisionStatus.Provisioning, }; // TODO: Persist the resource // TODO: Provision the resource resource.ProvisionStatus = ProvisionStatus.Provisioned; // TODO: Persist the status change var output = new { id = resource.Id, config = new { CONFIG_VAR = "CONFIGURATION_VALUE", } }; return Json(output); }