move constructor to command base class
[shpub.git] / src / shpub / Command / Like.php
index 26f615a163e8d5e2f7643a71e866b58d70d1c441..65020dc04cd832f57e8d6cc95929729bcccf7486 100644 (file)
@@ -1,42 +1,43 @@
 <?php
 namespace shpub;
 
 <?php
 namespace shpub;
 
-class Command_Like
+class Command_Like extends Command_AbstractProps
 {
 {
-    /**
-     * @var Config
-     */
-    protected $cfg;
-
-    public function __construct($cfg)
+    public static function opts(\Console_CommandLine $optParser)
     {
     {
-        $this->cfg = $cfg;
+        $cmd = $optParser->addCommand('like');
+        static::optsGeneric($cmd);
+        $cmd->addArgument(
+            'url',
+            [
+                'optional'    => false,
+                'description' => 'URL that is liked',
+            ]
+        );
     }
 
     }
 
-    public function run($url)
+    public function run(\Console_CommandLine_Result $cmdRes)
     {
     {
-        $url = Validator::url($url, 'url');
+        $url = Validator::url($cmdRes->args['url'], 'url');
         if ($url === false) {
             exit(10);
         }
 
         if ($url === false) {
             exit(10);
         }
 
-        $body = http_build_query(
-            [
-                'h'       => 'entry',
-                'like-of' => $url,
-            ]
-        );
-
         $req = new Request($this->cfg->host, $this->cfg);
         $req = new Request($this->cfg->host, $this->cfg);
-        $res = $req->send($body);
+        $req->req->addPostParameter('h', 'entry');
+        $req->req->addPostParameter('like-of', $url);
+
+        $this->handleGenericOptions($cmdRes, $req);
+        $res = $req->send();
+
         $postUrl = $res->getHeader('Location');
         if ($postUrl === null) {
             Log::err('Error: Server sent no "Location" header and said:');
             Log::err($res->getBody());
             exit(20);
         } else {
         $postUrl = $res->getHeader('Location');
         if ($postUrl === null) {
             Log::err('Error: Server sent no "Location" header and said:');
             Log::err($res->getBody());
             exit(20);
         } else {
-            echo "Like created at server\n";
-            echo $postUrl . "\n";
+            Log::info('Like created at server');
+            Log::msg($postUrl);
         }
     }
 }
         }
     }
 }