Add ScrapingDog API integration for LinkedIn job search#2
Merged
Conversation
- Add ScrapingDog API key storage in Keychain - Create ScrapingDogService actor for API communication with rate limiting - Add search UI with filters for job type, experience level, work type - Map ScrapingDog response to JobPosting model - Store jobs via existing JobRepository for deduplication - Add database migration for source_type tracking - Add comprehensive unit tests for models and conversion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change endpoint from /linkedin/jobs to /jobs/ - Update job_type values: full_time, part_time, contract, etc. - Update exp_level values: internship, entry_level, mid_senior_level, etc. - Update work_type values: at_work, remote, hybrid - Add tests for direct JSON array response format - Remove unsupported internship job type (use exp_level instead) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add SourceFilter enum with All/LinkedIn/GitHub options - Add source filter picker in the toolbar filter row - Filter jobs by aggregatorName to show LinkedIn-only or GitHub-only Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add showGitHubSearch state variable - Add GitHub button in toolbar with branch icon - Hide GitHub URL input by default, show when button clicked - Add green background tint to GitHub panel (matches LinkedIn's blue) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add has_easy_apply column to job_postings table (migration 014) - Add hasEasyApply field to JobPosting and PersistedJobPosting models - Add setEasyApply method to JobRepository - Add LinkedIn rate limit setting in SettingsView (default 10 req/min) - Modify JobAnalysisService to use ScrapingDog job details API for LinkedIn jobs - Add rate-limited LinkedIn page fetching for Easy Apply detection - Add Easy Apply indicator (bolt icon) in job table first column - Detect Easy Apply via EASY_APPLY_DOCUMENT marker in LinkedIn HTML Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Owner
Author
Latest Updates (Easy Apply Detection)Added the following enhancements: New Features
Database
Settings
UI
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Changes
New Files
ScrapingDogModels.swift- Codable models for API request/responseScrapingDogService.swift- Actor-based API serviceScrapingDogSearchView.swift- SwiftUI search controlsScrapingDogTests.swift- Unit tests (18 tests)Modified Files
KeychainService.swift- ScrapingDog API key storageSettingsView.swift- API key input sectionContentView.swift- Search UI integrationDatabaseManager.swift- Migration 013 for source_typeTest plan
xcodebuild test)🤖 Generated with Claude Code