Files
store-scraper-api/worker.js
T

85 lines
2.9 KiB
JavaScript

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