public static AnalyticsCachedAccount Parse(AnalyticsCachedUser user, JObject obj)
        {
            AnalyticsCachedAccount account = new AnalyticsCachedAccount();

            account.User          = user;
            account.Id            = obj.GetString("id");
            account.Name          = obj.GetString("name");
            account.Created       = obj.GetString("created");
            account.Updated       = obj.GetString("updated");
            account.WebProperties = obj.GetArray("properties", x => AnalyticsCachedWebProperty.Parse(account, x));
            return(account);
        }
        public static AnalyticsCachedWebProperty Parse(AnalyticsCachedAccount account, JObject obj)
        {
            AnalyticsCachedWebProperty webProperty = new AnalyticsCachedWebProperty();

            webProperty.Account    = account;
            webProperty.Id         = obj.GetString("id");
            webProperty.Name       = obj.GetString("name");
            webProperty.WebsiteUrl = obj.GetString("websiteUrl");
            webProperty.Created    = obj.GetString("created");
            webProperty.Updated    = obj.GetString("updated");
            webProperty.Profiles   = obj.GetArray("profiles", x => AnalyticsCachedProfile.Parse(webProperty, x));
            return(webProperty);
        }
        public static AnalyticsCachedProfile Parse(AnalyticsCachedWebProperty webProperty, JObject obj)
        {
            AnalyticsCachedProfile profile = new AnalyticsCachedProfile();

            profile.WebProperty = webProperty;
            profile.Id          = obj.GetString("id");
            profile.Currency    = obj.GetString("currency");
            profile.Timezone    = obj.GetString("timezone");
            profile.Name        = obj.GetString("name");
            profile.Type        = obj.GetString("type");
            profile.WebsiteUrl  = obj.GetString("websiteUrl");
            profile.Created     = obj.GetString("created");
            profile.Updated     = obj.GetString("updated");
            return(profile);
        }
Beispiel #4
0
        public static AnalyticsCachedUser GetFromResponses(AnalyticsUserConfiguration user, AnalyticsAccountsResponse response1, AnalyticsWebPropertiesResponse response2, AnalyticsProfilesResponse response3)
        {
            Dictionary <string, List <AnalyticsWebProperty> > webProperties = new Dictionary <string, List <AnalyticsWebProperty> >();
            Dictionary <string, List <AnalyticsProfile> >     profiles      = new Dictionary <string, List <AnalyticsProfile> >();

            // Add the web properties to a dictionary for faster lookups
            foreach (AnalyticsWebProperty webProperty in response2.Body.Items)
            {
                List <AnalyticsWebProperty> list;
                if (!webProperties.TryGetValue(webProperty.AccountId, out list))
                {
                    webProperties.Add(webProperty.AccountId, list = new List <AnalyticsWebProperty>());
                }
                list.Add(webProperty);
            }

            // Add the profiles to a dictionary for faster lookups
            foreach (AnalyticsProfile profile in response3.Body.Items)
            {
                List <AnalyticsProfile> list;
                if (!profiles.TryGetValue(profile.WebPropertyId, out list))
                {
                    profiles.Add(profile.WebPropertyId, list = new List <AnalyticsProfile>());
                }
                list.Add(profile);
            }



            AnalyticsCachedUser cachedUser = new AnalyticsCachedUser {
                Id = user.Id
            };


            List <AnalyticsCachedAccount> cachedAccounts = new List <AnalyticsCachedAccount>();

            foreach (AnalyticsAccount account in response1.Body.Items)
            {
                List <AnalyticsCachedWebProperty> list11 = new List <AnalyticsCachedWebProperty>();

                List <AnalyticsWebProperty> list1;
                if (!webProperties.TryGetValue(account.Id, out list1))
                {
                    list1 = new List <AnalyticsWebProperty>();
                }

                AnalyticsCachedAccount ca = new AnalyticsCachedAccount {
                    User    = null,
                    Id      = account.Id,
                    Name    = account.Name,
                    Created = account.JsonObject.GetString("created"),
                    Updated = account.JsonObject.GetString("updated")
                };

                foreach (AnalyticsWebProperty webProperty in list1)
                {
                    List <AnalyticsProfile> list2;
                    if (!profiles.TryGetValue(webProperty.Id, out list2))
                    {
                        list2 = new List <AnalyticsProfile>();
                    }

                    AnalyticsCachedWebProperty cwp = new AnalyticsCachedWebProperty {
                        Id         = webProperty.Id,
                        Name       = webProperty.Name,
                        WebsiteUrl = webProperty.WebsiteUrl,
                        Created    = webProperty.Created.ToString("r"),
                        Updated    = webProperty.Updated.ToString("r")
                    };

                    cwp.Profiles = list2.Select(profile => new AnalyticsCachedProfile {
                        WebProperty = cwp,
                        Id          = profile.Id,
                        Name        = profile.Name,
                        Currency    = profile.Currency,
                        Timezone    = profile.Timezone,
                        WebsiteUrl  = profile.WebsiteUrl,
                        Type        = profile.Type,
                        Created     = profile.JsonObject.GetString("created"),
                        Updated     = profile.JsonObject.GetString("updated")
                    }).ToArray();

                    list11.Add(cwp);
                }

                ca.WebProperties = list11.ToArray();

                cachedAccounts.Add(ca);
            }

            cachedUser.Accounts = cachedAccounts.ToArray();

            return(cachedUser);
        }