57 lines
2.4 KiB
PHP
57 lines
2.4 KiB
PHP
<?php
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Route;
|
|
use App\Http\Controllers\API\ArticlesAPIController;
|
|
use App\Http\Controllers\API\SourcesAPIController;
|
|
use App\Http\Controllers\API\TopicsAPIController;
|
|
use App\Http\Controllers\API\MyListAPIController;
|
|
use App\Http\Controllers\API\NewsLetterAPIController;
|
|
use App\Article;
|
|
use Illuminate\Support\Facades\Cache;
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| API Routes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here is where you can register API routes for your application. These
|
|
| routes are loaded by the RouteServiceProvider within a group which
|
|
| is assigned the "api" middleware group. Enjoy building your API!
|
|
|
|
|
*/
|
|
|
|
Route::get('today', \API\TodaysPick::class)->name('api.today');
|
|
Route::get('recent', \API\RecentArticles::class)->name('api.recent');
|
|
|
|
Route::get('topic_filter', \API\TopicFilter::class)->name('api.topic_filter');
|
|
Route::get('article_filter', \API\ArticleFilter::class)->name('api.article_filter');
|
|
|
|
Route::get('topics', [TopicsAPIController::class, 'index'])->name('api.topics.index');
|
|
Route::get('topic/{topic:slug}', [TopicsAPIController::class, 'show'])->name('api.topics.show');
|
|
|
|
Route::get('sources', [SourcesAPIController::class, 'index'])->name('api.sources.index');
|
|
Route::get('source/{source:slug}', [SourcesAPIController::class, 'show'])->name('api.sources.show');
|
|
|
|
Route::get('article/{article:id}', [ArticlesAPIController::class, 'show'])->name('api.article.show');
|
|
Route::post('newsletter/subscribe', [NewsLetterAPIController::class, 'store'])->name('api.newsletter.store');
|
|
|
|
Route::get('/ping/{source}', \API\MonitorAPIController::class);
|
|
|
|
Route::get('/latest/webhook', function () {
|
|
return Cache::remember('webhooks.latest', 60, function () {
|
|
return Article::latest()->limit(20)->get()->transform(function ($article) {
|
|
return [
|
|
"id" => $article->id,
|
|
"title" => $article->title,
|
|
"original" => $article->url,
|
|
"author" => $article->author,
|
|
"featured_image" => $article->featured_image,
|
|
"published_date" => $article->published_date,
|
|
"source" => $article->source->slug,
|
|
"link" => "https://karudhaas.net/article/{$article->source->slug}/{$article->guid}"
|
|
];
|
|
});
|
|
});
|
|
});
|