diff --git a/worker.js b/worker.js new file mode 100644 index 0000000..c704d63 --- /dev/null +++ b/worker.js @@ -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 }); + } +}; diff --git a/wrangler.toml b/wrangler.toml index 4355241..c281196 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -1,4 +1,3 @@ name = "store-scraper" main = "index.js" compatibility_date = "2024-12-31" -compatibility_flags = [ "nodejs_compat" ]