Beispiel #1
0
        static int DoSubscribe(ParsedOpts args)
        {
            string user      = args["user"].Value;
            string feed      = args["feed"].Value;
            string riverName = args["river"].Value;

            // Check feed.
            var   parser    = new RiverLoader();
            var   feedStore = new RiverFeedStore();
            River feedRiver = parser.FetchAndUpdateRiver(new Uri(feed)).Result;

            if (feedRiver.Metadata.LastStatus < (HttpStatusCode)200 ||
                feedRiver.Metadata.LastStatus >= (HttpStatusCode)400)
            {
                Console.Error.WriteLine("Could not fetch feed {0}", feed);
                return(-1);
            }

            var             subscriptionStore = new UserProfileStore();
            UserProfile     profile           = subscriptionStore.GetProfileFor(user).Result;
            RiverDefinition river             = profile.Rivers.FirstOrDefault(r => r.Name == riverName);

            UserProfile newProfile;

            if (river == null)
            {
                newProfile = profile.With(
                    rivers: profile.Rivers.Add(
                        new RiverDefinition(
                            name: riverName,
                            id: SyndicationUtil.MakeID(),
                            feeds: new Uri[] { feedRiver.Metadata.OriginUrl })));
            }
            else
            {
                var newRiver = river.With(feeds: river.Feeds.Add(feedRiver.Metadata.OriginUrl));
                newProfile = profile.With(rivers: profile.Rivers.Replace(river, newRiver));
            }

            subscriptionStore.SaveProfileFor(user, newProfile).Wait();

            Console.WriteLine("OK");
            return(0);
        }
Beispiel #2
0
        static int DoUnsubscribe(ParsedOpts args)
        {
            string user      = args["user"].Value;
            Uri    feed      = new Uri(args["feed"].Value);
            string riverName = args["river"].Value;

            var             subscriptionStore = new UserProfileStore();
            UserProfile     profile           = subscriptionStore.GetProfileFor(user).Result;
            RiverDefinition river             = profile.Rivers.FirstOrDefault(r => r.Name == riverName);

            if (river == null)
            {
                Console.WriteLine("River {0} not found.", riverName);
                return(0);
            }

            RiverDefinition newRiver   = river.With(feeds: river.Feeds.Remove(feed));
            UserProfile     newProfile = profile.With(rivers: profile.Rivers.Replace(river, newRiver));

            subscriptionStore.SaveProfileFor(user, newProfile).Wait();
            Console.WriteLine("OK");
            return(0);
        }