<?php
/**
- * @copyright Copyright (C) 2010-2021, the Friendica project
+ * @copyright Copyright (C) 2010-2022, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
namespace Friendica\Module\Api\Mastodon;
+use Friendica\Core\Logger;
use Friendica\Core\System;
use Friendica\DI;
use Friendica\Model\Photo;
*/
class Media extends BaseApi
{
- public static function put(array $parameters = [])
+ protected function post(array $request = [])
{
- $data = self::getPutData();
- self::unsupported('put');
+ self::checkAllowedScope(self::SCOPE_WRITE);
+ $uid = self::getCurrentUserID();
+
+ Logger::info('Photo post', ['request' => $request, 'files' => $_FILES]);
+
+ if (empty($_FILES['file'])) {
+ DI::mstdnError()->UnprocessableEntity();
+ }
+
+ $media = Photo::upload($uid, $_FILES['file']);
+ if (empty($media)) {
+ DI::mstdnError()->UnprocessableEntity();
+ }
+
+ Logger::info('Uploaded photo', ['media' => $media]);
+
+ System::jsonExit(DI::mstdnAttachment()->createFromPhoto($media['id']));
+ }
+
+ public function put(array $request = [])
+ {
+ self::checkAllowedScope(self::SCOPE_WRITE);
+ $uid = self::getCurrentUserID();
+
+ $request = $this->getRequest([
+ 'file' => [], // The file to be attached, using multipart form data.
+ 'thumbnail' => [], // The custom thumbnail of the media to be attached, using multipart form data.
+ 'description' => '', // A plain-text description of the media, for accessibility purposes.
+ 'focus' => '', // Two floating points (x,y), comma-delimited ranging from -1.0 to 1.0
+ ], $request);
+
+ if (empty($this->parameters['id'])) {
+ DI::mstdnError()->UnprocessableEntity();
+ }
+
+ $photo = Photo::selectFirst(['resource-id'], ['id' => $this->parameters['id'], 'uid' => $uid]);
+ if (empty($photo['resource-id'])) {
+ DI::mstdnError()->RecordNotFound();
+ }
+
+ Photo::update(['desc' => $request['description']], ['resource-id' => $photo['resource-id']]);
+
+ System::jsonExit(DI::mstdnAttachment()->createFromPhoto($this->parameters['id']));
}
/**
- * @param array $parameters
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
- public static function rawContent(array $parameters = [])
+ protected function rawContent(array $request = [])
{
- self::login();
+ self::checkAllowedScope(self::SCOPE_READ);
$uid = self::getCurrentUserID();
- if (empty($parameters['id'])) {
+ if (empty($this->parameters['id'])) {
DI::mstdnError()->UnprocessableEntity();
}
- $id = $parameters['id'];
+ $id = $this->parameters['id'];
if (!Photo::exists(['id' => $id, 'uid' => $uid])) {
DI::mstdnError()->RecordNotFound();
}