public object Post([FromBody] dynamic model) { // Create Site Site site = SiteHelper.CreateSite(model, _fileProvider); // Check if site with name already exists if (ManagementUnit.ServerManager.Sites.Any(s => s.Name.Equals(site.Name, StringComparison.OrdinalIgnoreCase))) { throw new AlreadyExistsException("name"); } // Save it ManagementUnit.ServerManager.Sites.Add(site); ManagementUnit.Current.Commit(); // Refresh site = SiteHelper.GetSite(site.Id); WaitForSiteStatusResolve(site); // // Create response dynamic website = (dynamic)SiteHelper.ToJsonModel(site, Context.Request.GetFields()); return(Created((string)SiteHelper.GetLocation(website.id), website)); }
public object Get(string id) { Site site = SiteHelper.GetSite(new SiteId(id).Id); if (site == null) { return(NotFound()); } return(SiteHelper.ToJsonModel(site, Context.Request.GetFields())); }
public object Patch(string id, [FromBody] dynamic model) { // Set settings Site site = SiteHelper.UpdateSite(new SiteId(id).Id, model, _fileProvider); if (site == null) { return(NotFound()); } // Start/Stop if (model.status != null) { Status status = DynamicHelper.To <Status>(model.status); try { switch (status) { case Status.Stopped: site.Stop(); break; case Status.Started: site.Start(); break; } } catch (COMException e) { // If site is fresh and status is still unknown then COMException will be thrown when manipulating status throw new ApiException("Error setting site status", e); } catch (ServerManagerException e) { throw new ApiException(e.Message, e); } } // Update changes ManagementUnit.Current.Commit(); // Refresh data site = ManagementUnit.ServerManager.Sites[site.Name]; // // Create response dynamic sModel = SiteHelper.ToJsonModel(site, Context.Request.GetFields()); // The Id could change by changing the sites key if (sModel.id != id) { return(LocationChanged(SiteHelper.GetLocation(sModel.id), sModel)); } return(sModel); }