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}"
 | |
|             ];
 | |
|         });
 | |
|     });
 | |
| });
 |