mirror of https://github.com/pixelfed/pixelfed
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
13 KiB
PHP
195 lines
13 KiB
PHP
<?php
|
|
|
|
use App\Http\Controllers\AccountController;
|
|
use App\Http\Controllers\Api\ApiV1Controller;
|
|
use App\Http\Controllers\Api\BaseApiController;
|
|
use App\Http\Controllers\ApiController;
|
|
use App\Http\Controllers\CollectionController;
|
|
use App\Http\Controllers\ComposeController;
|
|
use App\Http\Controllers\DirectMessageController;
|
|
use App\Http\Controllers\DiscoverController;
|
|
use App\Http\Controllers\HashtagFollowController;
|
|
use App\Http\Controllers\ImportPostController;
|
|
use App\Http\Controllers\InternalApiController;
|
|
use App\Http\Controllers\MediaTagController;
|
|
use App\Http\Controllers\NewsroomController;
|
|
use App\Http\Controllers\PollController;
|
|
use App\Http\Controllers\PortfolioController;
|
|
use App\Http\Controllers\ProfileSponsorController;
|
|
use App\Http\Controllers\PublicApiController;
|
|
use App\Http\Controllers\SearchController;
|
|
use App\Http\Controllers\SeasonalController;
|
|
use App\Http\Controllers\SoftwareUpdateController;
|
|
use App\Http\Controllers\SpaController;
|
|
use App\Http\Controllers\StatusController;
|
|
use App\Http\Controllers\StoryController;
|
|
|
|
Route::domain(config('pixelfed.domain.app'))->middleware(['localization'])->group(function () {
|
|
Route::prefix('api')->group(function () {
|
|
Route::get('search', [SearchController::class, 'searchAPI']);
|
|
Route::post('status/view', [StatusController::class, 'storeView']);
|
|
Route::get('v1/polls/{id}', [PollController::class, 'getPoll']);
|
|
Route::post('v1/polls/{id}/votes', [PollController::class, 'vote']);
|
|
|
|
Route::prefix('web-admin')->group(function () {
|
|
Route::get('software-update/check', [SoftwareUpdateController::class, 'getSoftwareUpdateCheck']);
|
|
});
|
|
|
|
Route::prefix('compose')->group(function () {
|
|
Route::prefix('v0')->group(function () {
|
|
Route::post('/media/upload', [ComposeController::class, 'mediaUpload']);
|
|
Route::post('/media/update', [ComposeController::class, 'mediaUpdate']);
|
|
Route::delete('/media/delete', [ComposeController::class, 'mediaDelete']);
|
|
Route::get('/search/tag', [ComposeController::class, 'searchTag']);
|
|
Route::get('/search/location', [ComposeController::class, 'searchLocation']);
|
|
Route::get('/search/mention', [ComposeController::class, 'searchMentionAutocomplete']);
|
|
Route::get('/search/hashtag', [ComposeController::class, 'searchHashtagAutocomplete']);
|
|
|
|
Route::post('/publish', [ComposeController::class, 'store']);
|
|
Route::post('/publish/text', [ComposeController::class, 'storeText']);
|
|
Route::get('/media/processing', [ComposeController::class, 'mediaProcessingCheck']);
|
|
Route::get('/settings', [ComposeController::class, 'composeSettings']);
|
|
Route::post('/poll', [ComposeController::class, 'createPoll']);
|
|
});
|
|
});
|
|
|
|
Route::prefix('direct')->group(function () {
|
|
Route::get('browse', [DirectMessageController::class, 'browse']);
|
|
Route::post('create', [DirectMessageController::class, 'create']);
|
|
Route::get('thread', [DirectMessageController::class, 'thread']);
|
|
Route::post('mute', [DirectMessageController::class, 'mute']);
|
|
Route::post('unmute', [DirectMessageController::class, 'unmute']);
|
|
Route::delete('message', [DirectMessageController::class, 'delete']);
|
|
Route::post('media', [DirectMessageController::class, 'mediaUpload']);
|
|
Route::post('lookup', [DirectMessageController::class, 'composeLookup']);
|
|
Route::post('read', [DirectMessageController::class, 'read']);
|
|
});
|
|
|
|
Route::prefix('v2')->group(function () {
|
|
Route::get('config', [ApiController::class, 'siteConfiguration']);
|
|
Route::get('discover', [InternalApiController::class, 'discover']);
|
|
Route::get('discover/posts', [InternalApiController::class, 'discoverPosts'])->middleware('auth:api');
|
|
Route::get('profile/{username}/status/{postid}', [PublicApiController::class, 'status']);
|
|
Route::get('profile/{username}/status/{postid}/state', [PublicApiController::class, 'statusState']);
|
|
Route::get('comments/{username}/status/{postId}', [PublicApiController::class, 'statusComments']);
|
|
Route::get('status/{id}/replies', [InternalApiController::class, 'statusReplies']);
|
|
Route::post('moderator/action', [InternalApiController::class, 'modAction']);
|
|
Route::get('discover/categories', [InternalApiController::class, 'discoverCategories']);
|
|
Route::get('discover/tag', [DiscoverController::class, 'getHashtags']);
|
|
Route::get('statuses/{id}/replies', [ApiV1Controller::class, 'statusReplies']);
|
|
Route::get('statuses/{id}/state', [ApiV1Controller::class, 'statusState']);
|
|
});
|
|
|
|
Route::prefix('pixelfed')->group(function () {
|
|
Route::prefix('v1')->group(function () {
|
|
Route::get('accounts/verify_credentials', [ApiController::class, 'verifyCredentials']);
|
|
Route::get('accounts/relationships', [ApiV1Controller::class, 'accountRelationshipsById']);
|
|
Route::get('accounts/search', [ApiV1Controller::class, 'accountSearch']);
|
|
Route::get('accounts/{id}/statuses', [PublicApiController::class, 'accountStatuses']);
|
|
Route::post('accounts/{id}/block', [ApiV1Controller::class, 'accountBlockById']);
|
|
Route::post('accounts/{id}/unblock', [ApiV1Controller::class, 'accountUnblockById']);
|
|
Route::post('accounts/{id}/remove_from_followers', [ApiV1Controller::class, 'accountRemoveFollowById']);
|
|
Route::get('statuses/{id}', [PublicApiController::class, 'getStatus']);
|
|
Route::post('statuses/{id}/pin', [PublicApiController::class, 'statusPin']);
|
|
Route::post('statuses/{id}/unpin', [PublicApiController::class, 'statusUnpin']);
|
|
Route::get('accounts/{id}', [PublicApiController::class, 'account']);
|
|
Route::post('avatar/update', [ApiController::class, 'avatarUpdate']);
|
|
Route::get('custom_emojis', [ApiV1Controller::class, 'customEmojis']);
|
|
Route::get('notifications', [ApiController::class, 'notifications']);
|
|
Route::get('timelines/public', [PublicApiController::class, 'publicTimelineApi']);
|
|
Route::get('timelines/home', [PublicApiController::class, 'homeTimelineApi']);
|
|
Route::get('timelines/network', [PublicApiController::class, 'networkTimelineApi']);
|
|
Route::get('newsroom/timeline', [NewsroomController::class, 'timelineApi']);
|
|
Route::post('newsroom/markasread', [NewsroomController::class, 'markAsRead']);
|
|
Route::get('favourites', [BaseApiController::class, 'accountLikes']);
|
|
Route::get('mutes', [AccountController::class, 'accountMutes']);
|
|
Route::get('blocks', [AccountController::class, 'accountBlocks']);
|
|
});
|
|
|
|
Route::prefix('v2')->group(function () {
|
|
Route::get('config', [ApiController::class, 'siteConfiguration']);
|
|
Route::get('discover', [InternalApiController::class, 'discover']);
|
|
Route::get('discover/posts', [InternalApiController::class, 'discoverPosts']);
|
|
Route::get('discover/profiles', [DiscoverController::class, 'profilesDirectoryApi']);
|
|
Route::get('profile/{username}/status/{postid}', [PublicApiController::class, 'status']);
|
|
Route::get('comments/{username}/status/{postId}', [PublicApiController::class, 'statusComments']);
|
|
Route::post('moderator/action', [InternalApiController::class, 'modAction']);
|
|
Route::get('discover/categories', [InternalApiController::class, 'discoverCategories']);
|
|
Route::get('discover/tag', [DiscoverController::class, 'getHashtags']);
|
|
Route::get('discover/posts/trending', [DiscoverController::class, 'trendingApi']);
|
|
Route::get('discover/posts/hashtags', [DiscoverController::class, 'trendingHashtags']);
|
|
Route::get('discover/posts/places', [DiscoverController::class, 'trendingPlaces']);
|
|
Route::get('seasonal/yir', [SeasonalController::class, 'getData']);
|
|
Route::post('seasonal/yir', [SeasonalController::class, 'store']);
|
|
Route::get('mutes', [AccountController::class, 'accountMutesV2']);
|
|
Route::get('blocks', [AccountController::class, 'accountBlocksV2']);
|
|
Route::get('filters', [AccountController::class, 'accountFiltersV2']);
|
|
Route::post('status/compose', [InternalApiController::class, 'composePost']);
|
|
Route::get('status/{id}/replies', [InternalApiController::class, 'statusReplies']);
|
|
Route::post('status/{id}/archive', [ApiController::class, 'archive']);
|
|
Route::post('status/{id}/unarchive', [ApiController::class, 'unarchive']);
|
|
Route::get('statuses/archives', [ApiController::class, 'archivedPosts']);
|
|
Route::get('discover/memories', [DiscoverController::class, 'myMemories']);
|
|
Route::get('discover/account-insights', [DiscoverController::class, 'accountInsightsPopularPosts']);
|
|
Route::get('discover/server-timeline', [DiscoverController::class, 'serverTimeline']);
|
|
Route::get('discover/meta', [DiscoverController::class, 'enabledFeatures']);
|
|
Route::post('discover/admin/features', [DiscoverController::class, 'updateFeatures']);
|
|
});
|
|
|
|
Route::get('discover/accounts/popular', [DiscoverController::class, 'discoverAccountsPopular']);
|
|
Route::post('web/change-language.json', [SpaController::class, 'updateLanguage']);
|
|
});
|
|
|
|
Route::prefix('local')->group(function () {
|
|
// Route::post('status/compose', [InternalApiController::class, 'composePost'])->middleware('throttle:maxPostsPerHour,60')->middleware('throttle:maxPostsPerDay,1440');
|
|
Route::post('discover/tag/subscribe', [HashtagFollowController::class, 'store']);
|
|
Route::get('discover/tag/list', [HashtagFollowController::class, 'getTags']);
|
|
// Route::get('profile/sponsor/{id}', [ProfileSponsorController::class, 'get']);
|
|
Route::get('bookmarks', [InternalApiController::class, 'bookmarks']);
|
|
Route::get('collection/items/{id}', [CollectionController::class, 'getItems']);
|
|
Route::post('collection/item', [CollectionController::class, 'storeId']);
|
|
Route::delete('collection/item', [CollectionController::class, 'deleteId']);
|
|
Route::get('collection/{id}', [CollectionController::class, 'getCollection']);
|
|
Route::post('collection/{id}', [CollectionController::class, 'store']);
|
|
Route::delete('collection/{id}', [CollectionController::class, 'delete']);
|
|
Route::post('collection/{id}/publish', [CollectionController::class, 'publish']);
|
|
Route::get('profile/collections/{id}', [CollectionController::class, 'getUserCollections']);
|
|
|
|
Route::post('compose/tag/untagme', [MediaTagController::class, 'untagProfile']);
|
|
|
|
Route::post('import/ig', [ImportPostController::class, 'store']);
|
|
Route::get('import/ig/config', [ImportPostController::class, 'getConfig']);
|
|
Route::post('import/ig/media', [ImportPostController::class, 'storeMedia']);
|
|
Route::post('import/ig/existing', [ImportPostController::class, 'getImportedFiles']);
|
|
Route::post('import/ig/posts', [ImportPostController::class, 'getImportedPosts']);
|
|
Route::post('import/ig/processing', [ImportPostController::class, 'getProcessingCount']);
|
|
});
|
|
|
|
Route::prefix('web/stories')->group(function () {
|
|
Route::get('v1/recent', [StoryController::class, 'recent']);
|
|
Route::get('v1/viewers', [StoryController::class, 'viewers']);
|
|
Route::get('v1/profile/{id}', [StoryController::class, 'profile']);
|
|
Route::get('v1/exists/{id}', [StoryController::class, 'exists']);
|
|
Route::get('v1/poll/results', [StoryController::class, 'pollResults']);
|
|
Route::post('v1/viewed', [StoryController::class, 'viewed']);
|
|
Route::post('v1/react', [StoryController::class, 'react']);
|
|
Route::post('v1/comment', [StoryController::class, 'comment']);
|
|
Route::post('v1/publish/poll', [StoryController::class, 'publishStoryPoll']);
|
|
Route::post('v1/poll/vote', [StoryController::class, 'storyPollVote']);
|
|
Route::post('v1/report', [StoryController::class, 'storeReport']);
|
|
Route::post('v1/add', [StoryController::class, 'apiV1Add']);
|
|
Route::post('v1/crop', [StoryController::class, 'cropPhoto']);
|
|
Route::post('v1/publish', [StoryController::class, 'publishStory']);
|
|
Route::delete('v1/delete/{id}', [StoryController::class, 'apiV1Delete']);
|
|
});
|
|
|
|
Route::prefix('portfolio')->group(function () {
|
|
Route::post('self/curated.json', [PortfolioController::class, 'storeCurated']);
|
|
Route::post('self/settings.json', [PortfolioController::class, 'getSettings']);
|
|
Route::get('account/settings.json', [PortfolioController::class, 'getAccountSettings']);
|
|
Route::post('self/update-settings.json', [PortfolioController::class, 'storeSettings']);
|
|
Route::get('{username}/feed', [PortfolioController::class, 'getFeed']);
|
|
});
|
|
});
|
|
});
|