Просмотр исходного кода

Add FederationController

Closes #8
Daniel Supernault 7 лет назад
Родитель
Сommit
ad657b7fdc
1 измененных файлов с 84 добавлено и 0 удалено
  1. 84 0
      app/Http/Controllers/FederationController.php

+ 84 - 0
app/Http/Controllers/FederationController.php

@@ -0,0 +1,84 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use Illuminate\Http\Request;
+use App\Profile;
+use Auth;
+
+class FederationController extends Controller
+{
+    public function authCheck()
+    {
+      if(!Auth::check()) { 
+        abort(403); 
+      }
+      return;
+    }
+
+    public function remoteFollow()
+    {
+      $this->authCheck();
+      return view('federation.remotefollow');
+    }
+
+    public function nodeinfoWellKnown()
+    {
+      $res = [
+        'links' => [
+          [
+            'href' => config('pixelfed.nodeinfo.url'),
+            'rel'  => 'http://nodeinfo.diaspora.software/ns/schema/2.0'
+          ]
+        ]
+      ];
+      return response()->json($res);
+    }
+
+    public function nodeinfo()
+    {
+      $res =  [
+        'metadata' => [
+          'nodeName' => config('app.name'),
+          'software' => [
+            'homepage' => 'https://pixelfed.org',
+            'github' => 'https://github.com/pixelfed',
+            'follow' => 'https://mastodon.social/@pixelfed'
+          ],
+          /*
+          TODO: Custom Features for Trending
+          'customFeatures' => [
+            'trending' => [
+              'description' => 'Trending API for federated discovery',
+              'api' => [
+                'url' => null,
+                'docs' => null
+              ],
+            ],
+          ],
+          */
+        ],
+        'openRegistrations' => config('pixelfed.open_registration'),
+        'protocols' => [
+          'activitypub'
+        ],
+        'services' => [
+          'inbound' => [],
+          'outbound' => []
+        ],
+        'software' => [
+          'name' => 'PixelFed',
+          'version' => config('pixelfed.version')
+        ],
+        'usage' => [
+          'localPosts' => \App\Status::whereLocal(true)->count(),
+          'users' => [
+            'total' => \App\User::count()
+          ]
+        ],
+        'version' => '2.0'
+      ];
+
+      return response()->json($res);
+    }
+}