浏览代码

Federate Media Licenses

Daniel Supernault 4 年之前
父节点
当前提交
14a1367a8f
共有 3 个文件被更改,包括 28 次插入9 次删除
  1. 21 0
      app/Services/MediaService.php
  2. 2 9
      app/Transformer/ActivityPub/StatusTransformer.php
  3. 5 0
      app/Util/ActivityPub/Helpers.php

+ 21 - 0
app/Services/MediaService.php

@@ -10,6 +10,7 @@ use League\Fractal;
 use League\Fractal\Serializer\ArraySerializer;
 use League\Fractal\Pagination\IlluminatePaginatorAdapter;
 use App\Transformer\Api\MediaTransformer;
+use App\Util\Media\License;
 
 class MediaService
 {
@@ -37,4 +38,24 @@ class MediaService
 	{
 		return Cache::forget(self::CACHE_KEY . $statusId);
 	}
+
+	public static function activitypub($statusId)
+	{
+		$status = self::get($statusId);
+		if(!$status) {
+			return [];
+		}
+
+		return collect($status)->map(function($s) use($license) {
+			$license = isset($s['license']) && $s['license']['title'] ? $s['license']['title'] : null;
+			return [
+				'type'      => 'Document',
+				'mediaType' => $s['mime'],
+				'url'       => $s['url'],
+				'name'      => $s['description'],
+				'blurhash'  => $s['blurhash'],
+				'license'   => $license
+			];
+		});
+	}
 }

+ 2 - 9
app/Transformer/ActivityPub/StatusTransformer.php

@@ -4,6 +4,7 @@ namespace App\Transformer\ActivityPub;
 
 use App\Status;
 use League\Fractal;
+use App\Services\MediaService;
 
 class StatusTransformer extends Fractal\TransformerAbstract
 {
@@ -45,15 +46,7 @@ class StatusTransformer extends Fractal\TransformerAbstract
           'sensitive'        => (bool) $status->is_nsfw,
           'atomUri'          => $status->url(),
           'inReplyToAtomUri' => null,
-          'attachment'       => $status->media->map(function ($media) {
-              return [
-              'type'      => 'Document',
-              'mediaType' => $media->mime,
-              'url'       => $media->url(),
-              'name'      => $media->caption,
-              'blurhash'  => $media->blurhash
-            ];
-          }),
+          'attachment'       => MediaService::activitypub($status->id),
           'tag' => [],
           'location' => $status->place_id ? [
               'type' => 'Place',

+ 5 - 0
app/Util/ActivityPub/Helpers.php

@@ -32,6 +32,7 @@ use App\Services\MediaPathService;
 use App\Services\MediaStorageService;
 use App\Jobs\MediaPipeline\MediaStoragePipeline;
 use App\Jobs\AvatarPipeline\RemoteAvatarFetch;
+use App\Util\Media\License;
 
 class Helpers {
 
@@ -428,6 +429,7 @@ class Helpers {
 			$type = $media['mediaType'];
 			$url = $media['url'];
 			$blurhash = isset($media['blurhash']) ? $media['blurhash'] : null;
+			$license = isset($media['license']) ? License::nameToId($media['license']) : null;
 			$valid = self::validateUrl($url);
 			if(in_array($type, $allowed) == false || $valid == false) {
 				continue;
@@ -441,6 +443,9 @@ class Helpers {
 			$media->user_id = null;
 			$media->media_path = $url;
 			$media->remote_url = $url;
+			if($license) {
+				$media->license = $license;
+			}
 			$media->mime = $type;
 			$media->version = 3;
 			$media->save();