$data['url'] = $this->url;
}
if ($this->type !== null) {
- $data['type'] = 'h-' . $this->type;
+ $data['type'] = array('h-' . $this->type);
}
if (count($this->properties)) {
$data['properties'] = $this->properties;
$cp = new CurlPrinter();
$cp->show($this->req, $this->uploadsInfo, $this->dedicatedBody);
}
+
+ if ($this->cfg->dryRun && $this->req->getMethod() != 'GET') {
+ //do not run any modifying queries
+ //fake a successful response
+ $res = new \HTTP_Request2_Response('HTTP/1.1 200 OK', false);
+ $res->parseHeaderLine('Content-type: text/plain');
+ $res->parseHeaderLine('Location: http://example.org/fake-response');
+ $res->appendBody('Fake --dry-run response');
+ return $res;
+ }
+
$res = $this->req->send();
if (intval($res->getStatus() / 100) != 2) {
- Log::err(
- 'Server returned an error status code ' . $res->getStatus()
- );
- Log::err($res->getBody());
- exit(11);
+ $this->displayErrorResponse($res);
}
return $res;
}
+ protected function displayErrorResponse($res)
+ {
+ Log::err(
+ 'Server returned an error status code ' . $res->getStatus()
+ );
+
+ $shown = false;
+ if (Util::getMimeType($res) == 'application/json') {
+ $errData = json_decode($res->getBody());
+ if (!isset($errData->error)) {
+ Log::err('Error response does not contain "error" property');
+ } else if (isset($errData->error_description)) {
+ Log::err($errData->error . ': ' . $errData->error_description);
+ $shown = true;
+ } else {
+ Log::err($errData->error);
+ $shown = true;
+ }
+ }
+
+ if (!$shown) {
+ Log::err($res->getBody());
+ }
+ exit(11);
+ }
+
public function setAction($action)
{
$this->action = $action;
}
/**
+ * Add file upload
+ *
* @param string $fieldName name of file-upload field
* @param array $fileNames list of local file paths
+ *
+ * @return void
*/
public function addUpload($fieldName, $fileNames)
{
+ if ($this->directUpload && $this->sendAsJson) {
+ throw new \Exception(
+ 'Cannot do direct upload with JSON requests'
+ );
+ }
+
if ($this->host->endpoints->media === null
|| $this->directUpload
) {
}
/**
+ * Execute the file upload
+ *
+ * @param string $fileName File path
+ *
* @return string URL at media endpoint
*/
- protected function uploadToMediaEndpoint($fileName)
+ public function uploadToMediaEndpoint($fileName)
{
$httpReq = $this->getHttpRequest(
$this->host->endpoints->media, $this->host->token
{
if ($isHtml) {
$this->addProperty(
- 'content', ['html' => $text]
+ 'content', [['html' => $text]]
);
} else {
$this->addProperty('content', $text);
*
* @param string $key Parameter name
* @param string|array $values One or multiple values
+ *
+ * @return void
*/
public function addProperty($key, $values)
{