public void Can_Convert_Anonymous_To_Expando()
        {
            var target = new {id = 1};
            var result = DynamicHelpers.IfAnonymousCovertToExpando(target);

            Assert.IsInstanceOf<ExpandoObject>(result);
        }
示例#2
0
        public void ItShouldSupportAnnonymousObjects()
        {
            var obj = new {Count = 1, Item = "apple"};
            var template = Template.Compile("There is @Model.Count @Model.Item in the box.");

            Assert.AreEqual("There is 1 apple in the box.", template.Render(obj));
        }
        public void ToDynamic_ConvertsObjectToExpendo()
        {
            var value = _fixture.Create<string>();
            var expected = new { x = value };

            var result = expected.ToDynamic();

            Assert.AreEqual(expected.x, result.x);
        }
示例#4
0
        public Task Invoke(string method, params object[] args)
        {
            var invocation = new
            {
                Hub = _hubName,
                Method = method,
                Args = args
            };

            return _connection.Send(_hubName, invocation);
        }
示例#5
0
        public static Task Invoke(IConnection connection, string signal, string hubName, string method, object[] args)
        {
            signal = hubName + "." + signal;

            var invocation = new {
                Hub = hubName,
                Method = method,
                Args = args
            };

            return connection.Broadcast(signal, invocation);
        }
示例#6
0
        private Task InvokeWithState(string method, object[] args)
        {
            string signal = _hubName + "." + _signal;

            var invocation = new {
                Hub = _hubName,
                Method = method,
                Args = args,
                State = _state.GetChanges()
            };

            return _connection.Broadcast(signal, invocation);
        }
示例#7
0
		public void ThirdPartyOAuth()
		{
			dynamic response = new ExpandoObject();

			var userId = "users/ayende";
			var certificate = new X509Certificate2();
			var authorizedDatabases = new[] { "*" };
			var key = certificate.Export(X509ContentType.Pkcs12);

			#region authenticate_3
			var token = AccessToken.Create(key, userId, authorizedDatabases);
			response.Write(token.Serialize());

			#endregion
		}
 public void TestFixtureSetUp()
 {
     dynamic = new ExpandoObject();
     dynamic.badger = new ExpandoObject();
     dynamic.badger.name = "Steve";
     dynamic.badger.age = 3;
     dynamic dog1 = new ExpandoObject();
     dog1.name = "Rufus";
     dog1.breed = "labrador";
     dynamic dog2 = new ExpandoObject();
     dog2.name = "Marty";
     dog2.breed = "whippet";
     var dogs = new[] { dog1, dog2 };
     dynamic.dog = dogs;
     dynamic.cat = new ExpandoObject();
     dynamic.cat.name_Attribute = "Matilda";
 }
 public override DYN.DynamicMetaObject FallbackSetMember(DYN.DynamicMetaObject target, DYN.DynamicMetaObject value, DYN.DynamicMetaObject errorSuggestion)
 {
     // NOTE: silently ignore everything for now...
     return null; // TODO: fix this!
 }
示例#10
0
        public AppFunc Index(AppFunc next)
        {
            const string templateName = "index";
            this.template.Compile(service.GetIndexTemplate(), typeof(DynamicObject), templateName);

            return
                async env =>
                {
                    var blog = this.service.GetBlog();

                    int totalPosts;
                    var posts = this.service.GetPosts(1, blog.ArticlesCountPerPage, out totalPosts);

                    var model = new
                                    {
                                        Blog = blog,
                                        Url = new
                                                  {
                                                      RequestPathBase = env.GetRequestPathBase(),
                                                      RequestPath = env.GetRequestPath()
                                                  }.ToDynamicObject(),
                                        Posts = posts
                                    };

                    string html = this.template.Run(templateName, model.ToDynamicObject());

                    env.GetResponseHeaders()
                        .SetHeader("content-type", "text/html");

                    await env.GetResponseBody()
                        .WriteStringAsync(html);
                };
        }
示例#11
0
        public ManageSitesModule(ISessionProvider sessionProvider, IDispatchEvents eventDispatcher, IProvideClientSettings clientSettings)
            : base(sessionProvider, eventDispatcher, "/manage/clients/{id}/sites")
        {
            _clientSettings = clientSettings;
            Before += ctx =>
            {
                if (string.IsNullOrEmpty(ctx.Parameters["siteId"]) == false)
                    SiteId = string.Format("{1}/sites/{0}", ctx.Parameters["siteId"], ClientId);

                return null;
            };

            Get["/autoCompleteList"] = parameters =>
            {
                var sites = RavenSession.Query<Site>()
                                        .Where(x => x.ClientId == ClientId)
                                        .ToList();

                var viewModel =
                    new
                        {
                            data = sites.OrderBy(x => x.Name).Select(x => new
                                {
                                    value = x.Id,
                                    label = x.Name,
                                }).ToList(),
                        };

                return Response.AsJson(viewModel);
            };

            Get["/list"] = parameters =>
                {
                    int startIndex = Request.Query.skip.HasValue ? Request.Query.skip : 0;
                    int size = Request.Query.take.HasValue ? Request.Query.take : 20;

                    RavenQueryStatistics stats;
                    var sites = RavenSession.Query<Site>()
                                            .Statistics(out stats)
                                            .Where(x => x.ClientId == ClientId)
                                            .OrderBy(x => x.Name)
                                            .Skip(startIndex)
                                            .Take(size)
                                            .ToList();

                    var viewModel =
                        new
                            {
                                data = sites.OrderBy(x => x.Name).Select(x => new {x.Id, title = x.Id, content = x.Name, heading = ""}),
                                totalCount = stats.TotalResults,
                            };

                    return Response.AsJson(viewModel);
                };

            Get["/{siteId}"] = parameters =>
                {
                    var site = RavenSession.Load<Site>(SiteId);

                    var viewModel = new
                        {
                            site = new
                                {
                                    siteId = site.Id,
                                    name = site.Name,
                                    address = site.Address,
                                    postCode = site.PostCode,
                                    city = site.City,
                                    country = site.Country,
                                    description = site.Description,
                                    content = site.Content,
                                    url = site.Url,
                                    estimatedMinutesToService = site.EstimatedMinutesToService,
                                    minuteToServiceFactor = site.MinuteToServiceFactor,
                                }
                        };

                    return Response.AsJson(viewModel);
                };

            Get["/{siteId}/edit"] = parameters => View["views/manage/_editSite.html", new {ClientId}];

            Put["/{siteId}"] = parameters =>
                {
                    var site = RavenSession.Load<Site>(SiteId);

                    var serviceUnitsChanged = new ServiceUnitsChanged
                        {
                            EstimatedMinutesToService = site.EstimatedMinutesToService,
                            MinuteToServiceFactor = site.MinuteToServiceFactor,
                            ClientId = ClientId,
                            Site = DomainReference<Site>.Create(site.Id, site.Name),
                        };

                    this.BindTo(site, "Id");

                    UncommitedEvents.Add(new SiteUpdated
                        {
                            ClientId = ClientId,
                            SiteId = SiteId,
                            Name = site.Name,
                            Description = site.Description,
                            Address = site.Address,
                            PostCode = site.PostCode,
                            City = site.City,
                            Content = site.Content,
                            Country = site.Country,
                            EndTime = site.EndTime,
                            StartTime = site.StartTime,
                            Latitude = site.Latitude,
                            Longitude = site.Longitude,
                        });

                    if (serviceUnitsChanged.AreEqual(site) == false)
                    {
                        serviceUnitsChanged.MinuteToServiceFactor = site.MinuteToServiceFactor;
                        serviceUnitsChanged.EstimatedMinutesToService = site.EstimatedMinutesToService;
                        UncommitedEvents.Add(serviceUnitsChanged);
                    }

                    return HttpStatusCode.Created;
                };

            Get["/create"] = parameters => View["views/manage/_createSite.html", new {ClientId}];

            Post["/create"] = parameters =>
                {
                    var site = new Site
                        {
                            ClientId = ClientId,
                            Name = Request.Form["Name"],
                            Description = Request.Form["Description"],
                        };

                    var defaultServiceUnits = _clientSettings.DefaultServiceUnits(ClientId);
                    site.EstimatedMinutesToService = defaultServiceUnits.EstimatedMinutesToService;
                    site.MinuteToServiceFactor = defaultServiceUnits.MinuteToServiceFactor;

                    RavenSession.Store(site);

                    UncommitedEvents.Add(new SiteCreated
                        {
                            SiteId = site.Id,
                            Name = site.Name,
                            Description = site.Description,
                        });

                    return HttpStatusCode.NoContent;
                };
        }