Ejemplo n.º 1
0
        public CommitPointsModule(IBrightstarService brightstarService, AbstractStorePermissionsProvider permissionsProvider)
        {
            this.RequiresBrightstarStorePermission(permissionsProvider, get: StorePermissions.ViewHistory, post: StorePermissions.Admin);

            Get["/{storeName}/commits"] = parameters =>
            {
                int      skip      = Request.Query["skip"].TryParse <int>(0);
                int      take      = Request.Query["take"].TryParse <int>(DefaultPageSize);
                DateTime timestamp = Request.Query["timestamp"].TryParse <DateTime>();
                DateTime earliest  = Request.Query["earliest"].TryParse <DateTime>();
                DateTime latest    = Request.Query["latest"].TryParse <DateTime>();

                var request = this.Bind <CommitPointsRequestModel>();
                ViewBag.Title = request.StoreName + " - Commit History";

                if (timestamp != default(DateTime))
                {
                    // Request for a single commit point
                    var commitPoint = brightstarService.GetCommitPoint(parameters["storeName"], timestamp);
                    return(commitPoint == null ? HttpStatusCode.NotFound : MakeResponseObject(commitPoint));
                }
                if (earliest != default(DateTime) && latest != default(DateTime))
                {
                    IEnumerable <ICommitPointInfo> results =
                        brightstarService.GetCommitPoints(parameters["storeName"], latest, earliest, skip, take + 1);
                    var resourceUri = String.Format("commits?latest={0}&earliest={1}", latest.ToString("s"), earliest.ToString("s"));
                    return(Negotiate.WithPagedList(request, results.Select(MakeResponseObject), skip, take, DefaultPageSize, resourceUri));
                }
                IEnumerable <ICommitPointInfo> commitPointInfos = brightstarService.GetCommitPoints(parameters["storeName"], skip, take + 1);
                return(Negotiate.WithPagedList(request, commitPointInfos.Select(MakeResponseObject), skip, take, DefaultPageSize, "commits"));
            };

            Post["/{storeName}/commits"] = parameters =>
            {
                var commitPoint = this.Bind <CommitPointResponseModel>();
                if (commitPoint == null ||
                    String.IsNullOrEmpty(commitPoint.StoreName) ||
                    !commitPoint.StoreName.Equals(parameters["storeName"]))
                {
                    return(HttpStatusCode.BadRequest);
                }

                var commitPointInfo = brightstarService.GetCommitPoint(parameters["storeName"], commitPoint.Id);
                if (commitPointInfo == null)
                {
                    return(HttpStatusCode.BadRequest);
                }

                brightstarService.RevertToCommitPoint(parameters["storeName"], commitPointInfo);
                return(HttpStatusCode.OK);
            };
        }
Ejemplo n.º 2
0
        public CommitPointsModule(IBrightstarService brightstarService, AbstractStorePermissionsProvider permissionsProvider)
        {
            this.RequiresBrightstarStorePermission(permissionsProvider, get:StorePermissions.ViewHistory, post:StorePermissions.Admin);

            Get["/{storeName}/commits"] = parameters =>
                {
                    int skip = Request.Query["skip"].TryParse<int>(0);
                    int take = Request.Query["take"].TryParse<int>(DefaultPageSize);
                    DateTime timestamp = Request.Query["timestamp"].TryParse<DateTime>();
                    DateTime earliest = Request.Query["earliest"].TryParse<DateTime>();
                    DateTime latest = Request.Query["latest"].TryParse<DateTime>();

                    var request = this.Bind<CommitPointsRequestModel>();
                    ViewBag.Title = request.StoreName + " - Commit History";
                    
                    if (timestamp != default(DateTime))
                    {
                        // Request for a single commit point
                        var commitPoint = brightstarService.GetCommitPoint(parameters["storeName"], timestamp);
                        return commitPoint == null ? HttpStatusCode.NotFound : MakeResponseObject(commitPoint);
                    }
                    if (earliest != default(DateTime) && latest != default(DateTime))
                    {
                        IEnumerable<ICommitPointInfo> results =
                            brightstarService.GetCommitPoints(parameters["storeName"], latest, earliest, skip, take + 1);
                        var resourceUri = String.Format("commits?latest={0}&earliest={1}", latest.ToString("s"), earliest.ToString("s"));
                        return Negotiate.WithPagedList(request, results.Select(MakeResponseObject), skip, take, DefaultPageSize, resourceUri);
                    }
                    IEnumerable<ICommitPointInfo> commitPointInfos = brightstarService.GetCommitPoints(parameters["storeName"], skip, take + 1);
                    return Negotiate.WithPagedList(request, commitPointInfos.Select(MakeResponseObject), skip, take, DefaultPageSize, "commits");
                };

            Post["/{storeName}/commits"] = parameters =>
                {
                    var commitPoint = this.Bind<CommitPointResponseModel>();
                    if (commitPoint == null ||
                        String.IsNullOrEmpty(commitPoint.StoreName) ||
                        !commitPoint.StoreName.Equals(parameters["storeName"]))
                    {
                        return HttpStatusCode.BadRequest;
                    }

                    var commitPointInfo = brightstarService.GetCommitPoint(parameters["storeName"], commitPoint.Id);
                    if (commitPointInfo == null) return HttpStatusCode.BadRequest;

                    brightstarService.RevertToCommitPoint(parameters["storeName"], commitPointInfo);
                    return HttpStatusCode.OK;
                };
        }
Ejemplo n.º 3
0
        public StoreModule(IBrightstarService brightstarService, AbstractStorePermissionsProvider storePermissionsProvider)
        {
            this.RequiresBrightstarStorePermission(storePermissionsProvider, get:StorePermissions.Read, delete:StorePermissions.Admin);

            Get["/{storeName}"] = parameters =>
            {
                var storeName = parameters["storeName"];
                ViewBag.Title = storeName;

                if (!brightstarService.DoesStoreExist(storeName)) return HttpStatusCode.NotFound;
                if (Request.Method.ToUpperInvariant() == "HEAD")
                {
                    IEnumerable < ICommitPointInfo > commitPoints = brightstarService.GetCommitPoints(storeName, 0, 1);
                    var commit = commitPoints.First();
                    return
                        Negotiate.WithHeader("Last-Modified", commit.CommitTime.ToUniversalTime().ToString("r"))
                            .WithStatusCode(HttpStatusCode.OK)
                            .WithModel(new StoreResponseModel(parameters["storeName"]));
                }
                return new StoreResponseModel(parameters["storeName"]);
            };

            Delete["/{storeName}"] = parameters =>
                {
                    var storeName = parameters["storeName"];
                    ViewBag.Title = "Deleted - " + storeName;
                    if (brightstarService.DoesStoreExist(storeName))
                    {
                        brightstarService.DeleteStore(storeName);
                    }
                    return Negotiate.WithMediaRangeModel(new MediaRange("text/html"), 
                                                         new StoreDeletedModel {StoreName = storeName});
                };
        }
Ejemplo n.º 4
0
        private static List <ICommitPointInfo> ListCommitPoints(IBrightstarService client, string storeName)
        {
            var ret = new List <ICommitPointInfo>();
            int commitPointNumber = 0;

            // Retrieve 10 most recent commit point info from the store
            foreach (var commitPointInfo in client.GetCommitPoints(storeName, 0, 10))
            {
                ret.Add(commitPointInfo);
                Console.WriteLine("#{0}: ID: {1} Commited at: {2}", commitPointNumber++, commitPointInfo.Id, commitPointInfo.CommitTime);
                // Query this commit point
                QueryCommitPoint(client, commitPointInfo);
            }
            return(ret);
        }
Ejemplo n.º 5
0
        public StoreModule(IBrightstarService brightstarService, AbstractStorePermissionsProvider storePermissionsProvider)
        {
            this.RequiresBrightstarStorePermission(storePermissionsProvider, get: StorePermissions.Read, delete: StorePermissions.Admin);

            Get["/{storeName}"] = parameters =>
            {
                var storeName = parameters["storeName"];
                ViewBag.Title = storeName;

                if (!brightstarService.DoesStoreExist(storeName))
                {
                    return(HttpStatusCode.NotFound);
                }
                if (Request.Method.ToUpperInvariant() == "HEAD")
                {
                    IEnumerable <ICommitPointInfo> commitPoints = brightstarService.GetCommitPoints(storeName, 0, 1);
                    var commit = commitPoints.First();
                    return
                        (Negotiate.WithHeader("Last-Modified", commit.CommitTime.ToUniversalTime().ToString("r"))
                         .WithStatusCode(HttpStatusCode.OK)
                         .WithModel(new StoreResponseModel(parameters["storeName"])));
                }
                return(new StoreResponseModel(parameters["storeName"]));
            };

            Delete["/{storeName}"] = parameters =>
            {
                var storeName = parameters["storeName"];
                ViewBag.Title = "Deleted - " + storeName;
                if (brightstarService.DoesStoreExist(storeName))
                {
                    brightstarService.DeleteStore(storeName);
                }
                return(Negotiate.WithMediaRangeModel(new MediaRange("text/html"),
                                                     new StoreDeletedModel {
                    StoreName = storeName
                }));
            };
        }
Ejemplo n.º 6
0
 private static List<ICommitPointInfo> ListCommitPoints(IBrightstarService client, string storeName)
 {
     var ret = new List<ICommitPointInfo>();
     int commitPointNumber = 0;
     // Retrieve 10 most recent commit point info from the store
     foreach(var commitPointInfo in client.GetCommitPoints(storeName, 0, 10))
     {
         ret.Add(commitPointInfo);
         Console.WriteLine("#{0}: ID: {1} Commited at: {2}", commitPointNumber++, commitPointInfo.Id, commitPointInfo.CommitTime);
         // Query this commit point
         QueryCommitPoint(client, commitPointInfo);
     }
     return ret;
 }