X-Git-Url: https://git.cweiske.de/shpub.git/blobdiff_plain/381a979bd441d8ffbed46807c9f5598987093a49..2fd49930473aa9a46ba5a1755606a51764e5175f:/src/shpub/Command/AbstractProps.php diff --git a/src/shpub/Command/AbstractProps.php b/src/shpub/Command/AbstractProps.php index 0184c10..90cc0ff 100644 --- a/src/shpub/Command/AbstractProps.php +++ b/src/shpub/Command/AbstractProps.php @@ -33,13 +33,22 @@ class Command_AbstractProps 'files', array( 'short_name' => '-f', - 'long_name' => '--files', + 'long_name' => '--file', 'description' => 'Files or URLs to upload', 'help_name' => 'PATH', 'action' => 'StoreArray', 'default' => [], ) ); + $cmd->addOption( + 'direct_upload', + array( + 'long_name' => '--direct-upload', + 'description' => 'Ignore media endpoint at file upload', + 'action' => 'StoreTrue', + 'default' => false, + ) + ); $cmd->addOption( 'name', array( @@ -85,7 +94,7 @@ class Command_AbstractProps $cmd->addOption( 'syndication', array( - 'short_name' => '-s', + 'short_name' => '-u', 'long_name' => '--syndication', 'description' => 'Syndication URL(s)', 'help_name' => 'URL', @@ -104,59 +113,95 @@ class Command_AbstractProps 'default' => [], ) ); + static::addOptJson($cmd); + } + + protected static function addOptHtml(\Console_CommandLine_Command $cmd) + { + $cmd->addOption( + 'html', + array( + 'long_name' => '--html', + 'description' => 'Text content is HTML', + 'action' => 'StoreTrue', + 'default' => false, + ) + ); + } + + protected static function addOptJson(\Console_CommandLine_Command $cmd) + { + $cmd->addOption( + 'json', + array( + 'long_name' => '--json', + 'description' => 'Send request data as JSON', + 'action' => 'StoreTrue', + 'default' => false, + ) + ); } protected function handleGenericOptions( \Console_CommandLine_Result $cmdRes, Request $req ) { + $this->handleOptJson($cmdRes, $req); + if ($cmdRes->options['published'] !== null) { - $req->req->addPostParameter( + $req->addProperty( 'published', $cmdRes->options['published'] ); } if ($cmdRes->options['updated'] !== null) { - $req->req->addPostParameter( + $req->addProperty( 'updated', $cmdRes->options['updated'] ); } if (count($cmdRes->options['categories'])) { - $req->addPostParameter( + $req->addProperty( 'category', $cmdRes->options['categories'] ); } if ($cmdRes->options['name'] !== null) { - $req->req->addPostParameter( + $req->addProperty( 'name', $cmdRes->options['name'] ); } if ($cmdRes->options['slug'] !== null) { - $req->req->addPostParameter( + $req->addProperty( 'slug', $cmdRes->options['slug'] ); } if (count($cmdRes->options['syndication'])) { - $req->addPostParameter( + $req->addProperty( 'syndication', $cmdRes->options['syndication'] ); } + $req->setDirectUpload($cmdRes->options['direct_upload']); $this->handleFiles($cmdRes, $req); if (count($cmdRes->options['x'])) { $postParams = []; foreach ($cmdRes->options['x'] as $xproperty) { list($propkey, $propval) = explode('=', $xproperty, 2); - if (!isset($postParams[$propkey] )) { + if (!isset($postParams[$propkey])) { $postParams[$propkey] = []; } $postParams[$propkey][] = $propval; } foreach ($postParams as $propkey => $propvals) { - $req->addPostParameter($propkey, $propvals); + $req->addProperty($propkey, $propvals); } } } + protected function handleOptJson( + \Console_CommandLine_Result $cmdRes, Request $req + ) { + $req->setSendAsJson($cmdRes->options['json']); + } + protected function handleFiles( \Console_CommandLine_Result $cmdRes, Request $req ) { @@ -170,8 +215,9 @@ class Command_AbstractProps foreach ($files as $filePath) { if (strpos($filePath, '://') !== false) { //url + $urlPath = parse_url($filePath, PHP_URL_PATH); $mte = new \MIME_Type_Extension(); - $mimetype = $mte->getMIMEType($filePath); + $mimetype = $mte->getMIMEType($urlPath); $media = \MIME_Type::getMedia($mimetype); if (!isset($urlList[$media])) { Log::err('File type not allowed: ' . $mimetype); @@ -196,24 +242,15 @@ class Command_AbstractProps if ($type == 'image') { $type = 'photo'; } - if (count($urls) == 1) { - $req->req->addPostParameter($type, reset($urls)); - } else if (count($urls) > 1) { - $n = 0; - foreach ($urls as $url) { - $req->req->addPostParameter( - $type . '[' . $n++ . ']', $url - ); - } + if (count($urls) > 0) { + $req->addProperty($type, $urls); } } foreach ($fileList as $type => $filePaths) { if ($type == 'image') { $type = 'photo'; } - if (count($filePaths) == 1) { - $req->addUpload($type, reset($filePaths)); - } else if (count($filePaths) > 0) { + if (count($filePaths) > 0) { $req->addUpload($type, $filePaths); } }