mirror of
https://github.com/Kovah/LinkAce.git
synced 2025-01-17 21:28:30 +01:00
Add backend fetch endpoint to get html for the html keyword parsing in the frontend (#136)
This commit is contained in:
parent
e6ded95104
commit
c2b513bc28
@ -8,6 +8,8 @@ use App\Models\LinkList;
|
|||||||
use App\Models\Tag;
|
use App\Models\Tag;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
class FetchController extends Controller
|
class FetchController extends Controller
|
||||||
{
|
{
|
||||||
@ -78,6 +80,18 @@ class FetchController extends Controller
|
|||||||
return response()->json(['linkFound' => $linkCount > 0]);
|
return response()->json(['linkFound' => $linkCount > 0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function htmlForUrl(Request $request): Response
|
||||||
|
{
|
||||||
|
$url = $request->input('url');
|
||||||
|
$response = Http::timeout(3)->get($url);
|
||||||
|
|
||||||
|
if ($response->successful()) {
|
||||||
|
return response($response->body());
|
||||||
|
}
|
||||||
|
|
||||||
|
return response(null);
|
||||||
|
}
|
||||||
|
|
||||||
public static function checkForUpdates(): JsonResponse
|
public static function checkForUpdates(): JsonResponse
|
||||||
{
|
{
|
||||||
$updateCheck = UpdateHelper::checkForUpdates();
|
$updateCheck = UpdateHelper::checkForUpdates();
|
||||||
|
18
resources/assets/js/components/UrlField.js
vendored
18
resources/assets/js/components/UrlField.js
vendored
@ -65,9 +65,21 @@ export default class UrlField {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fetch(url)
|
fetch(window.appData.routes.fetch.htmlForUrl, {
|
||||||
|
method: 'POST',
|
||||||
|
credentials: 'same-origin',
|
||||||
|
headers: {'Content-Type': 'application/json'},
|
||||||
|
body: JSON.stringify({
|
||||||
|
_token: window.appData.user.token,
|
||||||
|
url: url
|
||||||
|
})
|
||||||
|
})
|
||||||
.then(response => response.text())
|
.then(response => response.text())
|
||||||
.then(body => this.parseHtmlForKeywords(body));
|
.then(body => {
|
||||||
|
if (body !== null) {
|
||||||
|
this.parseHtmlForKeywords(body)
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
parseHtmlForKeywords (body) {
|
parseHtmlForKeywords (body) {
|
||||||
@ -77,7 +89,7 @@ export default class UrlField {
|
|||||||
if (doc.head.children.length > 0) {
|
if (doc.head.children.length > 0) {
|
||||||
const keywords = doc.head.children.namedItem('keywords');
|
const keywords = doc.head.children.namedItem('keywords');
|
||||||
|
|
||||||
if (keywords !== null) {
|
if (keywords !== null && keywords.content.length > 0) {
|
||||||
this.tagSuggestions.displayNewSuggestions(keywords.content.split(','));
|
this.tagSuggestions.displayNewSuggestions(keywords.content.split(','));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
'searchLists' => route('fetch-lists'),
|
'searchLists' => route('fetch-lists'),
|
||||||
'searchTags' => route('fetch-tags'),
|
'searchTags' => route('fetch-tags'),
|
||||||
'existingLinks' => route('fetch-existing-links'),
|
'existingLinks' => route('fetch-existing-links'),
|
||||||
|
'htmlForUrl' => route('fetch-html-for-url'),
|
||||||
'updateCheck' => route('fetch-update-check'),
|
'updateCheck' => route('fetch-update-check'),
|
||||||
'generateApiToken' => route('generate-api-token'),
|
'generateApiToken' => route('generate-api-token'),
|
||||||
'generateCronToken' => route('generate-cron-token'),
|
'generateCronToken' => route('generate-cron-token'),
|
||||||
|
@ -138,6 +138,8 @@ Route::group(['middleware' => ['auth']], function () {
|
|||||||
->name('fetch-lists');
|
->name('fetch-lists');
|
||||||
Route::post('fetch/existing-links', [FetchController::class, 'searchExistingUrls'])
|
Route::post('fetch/existing-links', [FetchController::class, 'searchExistingUrls'])
|
||||||
->name('fetch-existing-links');
|
->name('fetch-existing-links');
|
||||||
|
Route::post('fetch/html-for-url', [FetchController::class, 'htmlForUrl'])
|
||||||
|
->name('fetch-html-for-url');
|
||||||
Route::get('fetch/update-check', [FetchController::class, 'checkForUpdates'])
|
Route::get('fetch/update-check', [FetchController::class, 'checkForUpdates'])
|
||||||
->name('fetch-update-check');
|
->name('fetch-update-check');
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user