From 3cb8714ad792962c37c054943599ccc5314f465e Mon Sep 17 00:00:00 2001 From: zacharyhampton Date: Mon, 10 Jul 2023 18:04:44 -0500 Subject: [PATCH] - api/jobs/v1 schema change --- api/core/scrapers/__init__.py | 5 ++++- api/v1/jobs/__init__.py | 11 ++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/api/core/scrapers/__init__.py b/api/core/scrapers/__init__.py index b8d8bfd..da3063f 100644 --- a/api/core/scrapers/__init__.py +++ b/api/core/scrapers/__init__.py @@ -10,9 +10,12 @@ class Site(Enum): class ScraperInput(BaseModel): - location: str + site_type: Site + search_term: str + location: str distance: int = 25 + results_wanted: int = 15 #: TODO: implement diff --git a/api/v1/jobs/__init__.py b/api/v1/jobs/__init__.py index dba24a0..089d2f6 100644 --- a/api/v1/jobs/__init__.py +++ b/api/v1/jobs/__init__.py @@ -3,7 +3,7 @@ from fastapi import APIRouter, Depends from api.core.scrapers.indeed import IndeedScraper from api.core.scrapers.ziprecruiter import ZipRecruiterScraper from api.core.scrapers.linkedin import LinkedInScraper -from api.core.scrapers import ScraperInput, Site +from api.core.scrapers import ScraperInput, Site, JobResponse router = APIRouter(prefix="/jobs") @@ -14,16 +14,13 @@ SCRAPER_MAPPING = { } -@router.get("/") +@router.get("/", response_model=JobResponse) async def scrape_jobs( - site_type: Site, search_term: str, location: str, page: int = 1, distance: int = 25 + scraper_input: ScraperInput ): - scraper_class = SCRAPER_MAPPING[site_type] + scraper_class = SCRAPER_MAPPING[scraper_input.site_type] scraper = scraper_class() - scraper_input = ScraperInput( - search_term=search_term, location=location, page=page, distance=distance - ) job_response = scraper.scrape(scraper_input) return job_response