mirror of
https://github.com/tiennm99/store-scraper-api.git
synced 2026-08-05 14:24:05 +00:00
feat(cloudflare): add worker.js
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import store from 'app-store-scraper';
|
||||
import gplay from 'google-play-scraper';
|
||||
|
||||
export default {
|
||||
async fetch(request) {
|
||||
const url = new URL(request.url);
|
||||
|
||||
if (request.method === 'GET') {
|
||||
if (url.pathname === '/') {
|
||||
return Response.json({
|
||||
message: 'Store Scraper',
|
||||
homepage: 'https://github.com/tiennm99/store-scraper'
|
||||
});
|
||||
} else if (url.pathname === '/apple/') {
|
||||
return Response.json({
|
||||
message: 'App Store Scraper',
|
||||
documentation: 'https://github.com/facundoolano/app-store-scraper'
|
||||
});
|
||||
} else if (url.pathname === '/google/') {
|
||||
return Response.json({
|
||||
message: 'Google Play Scraper',
|
||||
documentation: 'https://github.com/facundoolano/google-play-scraper'
|
||||
});
|
||||
}
|
||||
} else if (request.method === 'POST') {
|
||||
try {
|
||||
const body = await request.json();
|
||||
const action = url.pathname.split('/')[2];
|
||||
|
||||
if (url.pathname.startsWith('/apple/')) {
|
||||
switch (action) {
|
||||
case 'app':
|
||||
return Response.json(await store.app(body));
|
||||
case 'search':
|
||||
return Response.json(await store.search(body));
|
||||
case 'suggest':
|
||||
return Response.json(await store.suggest(body));
|
||||
case 'reviews':
|
||||
return Response.json(await store.reviews(body));
|
||||
case 'similar':
|
||||
return Response.json(await store.similar(body));
|
||||
case 'developer':
|
||||
return Response.json(await store.developer(body));
|
||||
case 'list':
|
||||
return Response.json(await store.list(body));
|
||||
default:
|
||||
return Response.json({ error: 'Invalid Apple Store method' }, { status: 400 });
|
||||
}
|
||||
}
|
||||
|
||||
if (url.pathname.startsWith('/google/')) {
|
||||
switch (action) {
|
||||
case 'app':
|
||||
return Response.json(await gplay.app(body));
|
||||
case 'search':
|
||||
return Response.json(await gplay.search(body));
|
||||
case 'suggest':
|
||||
return Response.json(await gplay.suggest(body));
|
||||
case 'reviews':
|
||||
return Response.json(await gplay.reviews(body));
|
||||
case 'similar':
|
||||
return Response.json(await gplay.similar(body));
|
||||
case 'developer':
|
||||
return Response.json(await gplay.developer(body));
|
||||
case 'permissions':
|
||||
return Response.json(await gplay.permissions(body));
|
||||
case 'categories':
|
||||
return Response.json(await gplay.categories());
|
||||
default:
|
||||
return Response.json({ error: 'Invalid Play Store method' }, { status: 400 });
|
||||
}
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
return Response.json(
|
||||
{ error: error.message },
|
||||
{ status: 400 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
return new Response('Not Found', { status: 404 });
|
||||
}
|
||||
};
|
||||
@@ -1,4 +1,3 @@
|
||||
name = "store-scraper"
|
||||
main = "index.js"
|
||||
compatibility_date = "2024-12-31"
|
||||
compatibility_flags = [ "nodejs_compat" ]
|
||||
|
||||
Reference in New Issue
Block a user