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