| OLD | NEW |
| 1 #include <iostream> | 1 #include <iostream> |
| 2 #include <sstream> | 2 #include <sstream> |
| 3 | 3 |
| 4 #include "SubscriptionsCommand.h" | 4 #include "SubscriptionsCommand.h" |
| 5 | 5 |
| 6 namespace | 6 namespace |
| 7 { | 7 { |
| 8 typedef std::vector<AdblockPlus::Subscription> SubscriptionList; | 8 typedef std::vector<AdblockPlus::Subscription*> SubscriptionList; |
| 9 | 9 |
| 10 void ShowSubscriptionList(const SubscriptionList& subscriptions) | 10 void ShowSubscriptionList(const SubscriptionList& subscriptions) |
| 11 { | 11 { |
| 12 for (SubscriptionList::const_iterator it = subscriptions.begin(); | 12 for (SubscriptionList::const_iterator it = subscriptions.begin(); |
| 13 it != subscriptions.end(); it++) | 13 it != subscriptions.end(); it++) |
| 14 std::cout << it->title << " - " << it->url << std::endl; | 14 std::cout << (*it)->GetProperty("title") << " - " << (*it)->GetProperty("u
rl") << std::endl; |
| 15 } | 15 } |
| 16 } | 16 } |
| 17 | 17 |
| 18 SubscriptionsCommand::SubscriptionsCommand( | 18 SubscriptionsCommand::SubscriptionsCommand( |
| 19 AdblockPlus::FilterEngine& filterEngine) | 19 AdblockPlus::FilterEngine& filterEngine) |
| 20 : Command("subscriptions"), filterEngine(filterEngine) | 20 : Command("subscriptions"), filterEngine(filterEngine) |
| 21 { | 21 { |
| 22 } | 22 } |
| 23 | 23 |
| 24 void SubscriptionsCommand::operator()(const std::string& arguments) | 24 void SubscriptionsCommand::operator()(const std::string& arguments) |
| 25 { | 25 { |
| 26 std::istringstream argumentStream(arguments); | 26 std::istringstream argumentStream(arguments); |
| 27 std::string action; | 27 std::string action; |
| 28 argumentStream >> action; | 28 argumentStream >> action; |
| 29 if (!action.size()) | 29 if (!action.size()) |
| 30 { | 30 { |
| 31 ShowSubscriptions(); | 31 ShowSubscriptions(); |
| 32 return; | 32 return; |
| 33 } | 33 } |
| 34 | 34 |
| 35 if (action == "add") | 35 if (action == "add") |
| 36 { | 36 { |
| 37 std::string url; | 37 std::string url; |
| 38 argumentStream >> url; | 38 argumentStream >> url; |
| 39 std::string title; | 39 std::string title; |
| 40 std::getline(argumentStream, title); | 40 std::getline(argumentStream, title); |
| 41 if (url.size() || title.size()) | 41 if (url.size()) |
| 42 AddSubscription(url, title); | 42 AddSubscription(url, title); |
| 43 else | 43 else |
| 44 ShowUsage(); | 44 ShowUsage(); |
| 45 } | 45 } |
| 46 else if (action == "remove") | 46 else if (action == "remove") |
| 47 { | 47 { |
| 48 std::string url; | 48 std::string url; |
| 49 argumentStream >> url; | 49 argumentStream >> url; |
| 50 if (url.size()) | 50 if (url.size()) |
| 51 RemoveSubscription(url); | 51 RemoveSubscription(url); |
| 52 else | 52 else |
| 53 ShowUsage(); | 53 ShowUsage(); |
| 54 } | 54 } |
| 55 else if (action == "update") | 55 else if (action == "update") |
| 56 UpdateSubscriptions(); | 56 UpdateSubscriptions(); |
| 57 else if (action == "fetch") | 57 else if (action == "fetch") |
| 58 FetchSubscriptions(); | 58 FetchSubscriptions(); |
| 59 else | 59 else |
| 60 throw NoSuchCommandError(name + " " + action); | 60 throw NoSuchCommandError(name + " " + action); |
| 61 } | 61 } |
| 62 | 62 |
| 63 std::string SubscriptionsCommand::GetDescription() const | 63 std::string SubscriptionsCommand::GetDescription() const |
| 64 { | 64 { |
| 65 return "List and manage subscriptions"; | 65 return "List and manage subscriptions"; |
| 66 } | 66 } |
| 67 | 67 |
| 68 std::string SubscriptionsCommand::GetUsage() const | 68 std::string SubscriptionsCommand::GetUsage() const |
| 69 { | 69 { |
| 70 return name + " [add URL TITLE|remove URL|update|fetch]"; | 70 return name + " [add URL [TITLE]|remove URL|update|fetch]"; |
| 71 } | 71 } |
| 72 | 72 |
| 73 void SubscriptionsCommand::ShowSubscriptions() | 73 void SubscriptionsCommand::ShowSubscriptions() |
| 74 { | 74 { |
| 75 ShowSubscriptionList(filterEngine.GetSubscriptions()); | 75 ShowSubscriptionList(filterEngine.GetListedSubscriptions()); |
| 76 } | 76 } |
| 77 | 77 |
| 78 void SubscriptionsCommand::AddSubscription(const std::string& url, | 78 void SubscriptionsCommand::AddSubscription(const std::string& url, |
| 79 const std::string& title) | 79 const std::string& title) |
| 80 { | 80 { |
| 81 filterEngine.AddSubscription(AdblockPlus::Subscription(url, title)); | 81 AdblockPlus::Subscription& subscription = filterEngine.GetSubscription(url); |
| 82 if (title.size()) |
| 83 subscription.SetProperty("title", title); |
| 84 subscription.AddToList(); |
| 82 } | 85 } |
| 83 | 86 |
| 84 void SubscriptionsCommand::RemoveSubscription(const std::string& url) | 87 void SubscriptionsCommand::RemoveSubscription(const std::string& url) |
| 85 { | 88 { |
| 86 const AdblockPlus::Subscription* const subscription = | 89 AdblockPlus::Subscription& subscription = filterEngine.GetSubscription(url); |
| 87 filterEngine.FindSubscription(url); | 90 if (!subscription.IsListed()) |
| 88 if (!subscription) | |
| 89 { | 91 { |
| 90 std::cout << "No subscription with URL '" << url << "'" << std::endl; | 92 std::cout << "No subscription with URL '" << url << "'" << std::endl; |
| 91 return; | 93 return; |
| 92 } | 94 } |
| 93 filterEngine.RemoveSubscription(*subscription); | 95 subscription.RemoveFromList(); |
| 94 } | 96 } |
| 95 | 97 |
| 96 void SubscriptionsCommand::UpdateSubscriptions() | 98 void SubscriptionsCommand::UpdateSubscriptions() |
| 97 { | 99 { |
| 98 const SubscriptionList& subscriptions = filterEngine.GetSubscriptions(); | 100 const SubscriptionList& subscriptions = filterEngine.GetListedSubscriptions(); |
| 99 for (SubscriptionList::const_iterator it = subscriptions.begin(); | 101 for (SubscriptionList::const_iterator it = subscriptions.begin(); |
| 100 it != subscriptions.end(); it++) | 102 it != subscriptions.end(); it++) |
| 101 filterEngine.UpdateSubscriptionFilters(*it); | 103 (*it)->UpdateFilters(); |
| 102 } | 104 } |
| 103 | 105 |
| 104 void SubscriptionsCommand::FetchSubscriptions() | 106 void SubscriptionsCommand::FetchSubscriptions() |
| 105 { | 107 { |
| 106 ShowSubscriptionList(filterEngine.FetchAvailableSubscriptions()); | 108 filterEngine.FetchAvailableSubscriptions(&ShowSubscriptionList); |
| 107 } | 109 } |
| OLD | NEW |