|
@@ -2,85 +2,98 @@
|
|
|
|
|
|
namespace App\Util\Site;
|
|
namespace App\Util\Site;
|
|
|
|
|
|
-use Cache;
|
|
|
|
-use App\{Like, Profile, Status, User};
|
|
|
|
|
|
+use Illuminate\Support\Facades\Cache;
|
|
|
|
+use App\Like;
|
|
|
|
+use App\Profile;
|
|
|
|
+use App\Status;
|
|
|
|
+use App\User;
|
|
use Illuminate\Support\Str;
|
|
use Illuminate\Support\Str;
|
|
|
|
|
|
-class Nodeinfo {
|
|
|
|
|
|
+class Nodeinfo
|
|
|
|
+{
|
|
|
|
+ public static function get()
|
|
|
|
+ {
|
|
|
|
+ $res = Cache::remember('api:nodeinfo', 900, function () {
|
|
|
|
+ $activeHalfYear = self::activeUsersHalfYear();
|
|
|
|
+ $activeMonth = self::activeUsersMonthly();
|
|
|
|
|
|
- public static function get()
|
|
|
|
- {
|
|
|
|
- $res = Cache::remember('api:nodeinfo', 300, function () {
|
|
|
|
- $activeHalfYear = Cache::remember('api:nodeinfo:ahy', 172800, function() {
|
|
|
|
- return User::select('last_active_at')
|
|
|
|
- ->where('last_active_at', '>', now()->subMonths(6))
|
|
|
|
- ->orWhere('created_at', '>', now()->subMonths(6))
|
|
|
|
- ->count();
|
|
|
|
- });
|
|
|
|
|
|
+ $users = Cache::remember('api:nodeinfo:users', 43200, function() {
|
|
|
|
+ return User::count();
|
|
|
|
+ });
|
|
|
|
|
|
- $activeMonth = Cache::remember('api:nodeinfo:am', 172800, function() {
|
|
|
|
- return User::select('last_active_at')
|
|
|
|
- ->where('last_active_at', '>', now()->subMonths(1))
|
|
|
|
- ->orWhere('created_at', '>', now()->subMonths(1))
|
|
|
|
- ->count();
|
|
|
|
- });
|
|
|
|
|
|
+ $statuses = Cache::remember('api:nodeinfo:statuses', 21600, function() {
|
|
|
|
+ return Status::whereLocal(true)->count();
|
|
|
|
+ });
|
|
|
|
|
|
- $users = Cache::remember('api:nodeinfo:users', 43200, function() {
|
|
|
|
- return User::count();
|
|
|
|
- });
|
|
|
|
|
|
+ $features = [ 'features' => \App\Util\Site\Config::get()['features'] ];
|
|
|
|
|
|
- $statuses = Cache::remember('api:nodeinfo:statuses', 21600, function() {
|
|
|
|
- return Status::whereLocal(true)->count();
|
|
|
|
- });
|
|
|
|
|
|
+ return [
|
|
|
|
+ 'metadata' => [
|
|
|
|
+ 'nodeName' => config_cache('app.name'),
|
|
|
|
+ 'software' => [
|
|
|
|
+ 'homepage' => 'https://pixelfed.org',
|
|
|
|
+ 'repo' => 'https://github.com/pixelfed/pixelfed',
|
|
|
|
+ ],
|
|
|
|
+ 'config' => $features
|
|
|
|
+ ],
|
|
|
|
+ 'protocols' => [
|
|
|
|
+ 'activitypub',
|
|
|
|
+ ],
|
|
|
|
+ 'services' => [
|
|
|
|
+ 'inbound' => [],
|
|
|
|
+ 'outbound' => [],
|
|
|
|
+ ],
|
|
|
|
+ 'software' => [
|
|
|
|
+ 'name' => 'pixelfed',
|
|
|
|
+ 'version' => config('pixelfed.version'),
|
|
|
|
+ ],
|
|
|
|
+ 'usage' => [
|
|
|
|
+ 'localPosts' => (int) $statuses,
|
|
|
|
+ 'localComments' => 0,
|
|
|
|
+ 'users' => [
|
|
|
|
+ 'total' => (int) $users,
|
|
|
|
+ 'activeHalfyear' => (int) $activeHalfYear,
|
|
|
|
+ 'activeMonth' => (int) $activeMonth,
|
|
|
|
+ ],
|
|
|
|
+ ],
|
|
|
|
+ 'version' => '2.0',
|
|
|
|
+ ];
|
|
|
|
+ });
|
|
|
|
+ $res['openRegistrations'] = (bool) config_cache('pixelfed.open_registration');
|
|
|
|
+ return $res;
|
|
|
|
+ }
|
|
|
|
|
|
- $features = [ 'features' => \App\Util\Site\Config::get()['features'] ];
|
|
|
|
|
|
+ public static function wellKnown()
|
|
|
|
+ {
|
|
|
|
+ return [
|
|
|
|
+ 'links' => [
|
|
|
|
+ [
|
|
|
|
+ 'href' => config('pixelfed.nodeinfo.url'),
|
|
|
|
+ 'rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0',
|
|
|
|
+ ],
|
|
|
|
+ ],
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
|
|
|
|
- return [
|
|
|
|
- 'metadata' => [
|
|
|
|
- 'nodeName' => config_cache('app.name'),
|
|
|
|
- 'software' => [
|
|
|
|
- 'homepage' => 'https://pixelfed.org',
|
|
|
|
- 'repo' => 'https://github.com/pixelfed/pixelfed',
|
|
|
|
- ],
|
|
|
|
- 'config' => $features
|
|
|
|
- ],
|
|
|
|
- 'protocols' => [
|
|
|
|
- 'activitypub',
|
|
|
|
- ],
|
|
|
|
- 'services' => [
|
|
|
|
- 'inbound' => [],
|
|
|
|
- 'outbound' => [],
|
|
|
|
- ],
|
|
|
|
- 'software' => [
|
|
|
|
- 'name' => 'pixelfed',
|
|
|
|
- 'version' => config('pixelfed.version'),
|
|
|
|
- ],
|
|
|
|
- 'usage' => [
|
|
|
|
- 'localPosts' => (int) $statuses,
|
|
|
|
- 'localComments' => 0,
|
|
|
|
- 'users' => [
|
|
|
|
- 'total' => (int) $users,
|
|
|
|
- 'activeHalfyear' => (int) $activeHalfYear,
|
|
|
|
- 'activeMonth' => (int) $activeMonth,
|
|
|
|
- ],
|
|
|
|
- ],
|
|
|
|
- 'version' => '2.0',
|
|
|
|
- ];
|
|
|
|
- });
|
|
|
|
- $res['openRegistrations'] = (bool) config_cache('pixelfed.open_registration');
|
|
|
|
- return $res;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static function wellKnown()
|
|
|
|
- {
|
|
|
|
- return [
|
|
|
|
- 'links' => [
|
|
|
|
- [
|
|
|
|
- 'href' => config('pixelfed.nodeinfo.url'),
|
|
|
|
- 'rel' => 'http://nodeinfo.diaspora.software/ns/schema/2.0',
|
|
|
|
- ],
|
|
|
|
- ],
|
|
|
|
- ];
|
|
|
|
- }
|
|
|
|
|
|
+ public static function activeUsersMonthly()
|
|
|
|
+ {
|
|
|
|
+ return Cache::remember('api:nodeinfo:active-users-monthly', 43200, function() {
|
|
|
|
+ return User::withTrashed()
|
|
|
|
+ ->select('last_active_at, updated_at')
|
|
|
|
+ ->where('updated_at', '>', now()->subWeeks(5))
|
|
|
|
+ ->orWhere('last_active_at', '>', now()->subWeeks(5))
|
|
|
|
+ ->count();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ public static function activeUsersHalfYear()
|
|
|
|
+ {
|
|
|
|
+ return Cache::remember('api:nodeinfo:active-users-half-year', 43200, function() {
|
|
|
|
+ return User::withTrashed()
|
|
|
|
+ ->select('last_active_at, updated_at')
|
|
|
|
+ ->where('last_active_at', '>', now()->subMonths(6))
|
|
|
|
+ ->orWhere('updated_at', '>', now()->subMonths(6))
|
|
|
|
+ ->count();
|
|
|
|
+ });
|
|
|
|
+ }
|
|
}
|
|
}
|