class ResumeBumpService: RANGE_BUMP = 14400 config = None def __init__(self): self.config = Config() def isReadyToBump(self, date: datetime) -> bool: unix_date = int(date.timestamp()) return (DateHelper.getCurrentUnixDate() - unix_date) > self.RANGE_BUMP def bump(self, resume_id: str) -> None: try: requests.post( f"{self.config.getApiUrl()}resumes/{resume_id}/publish", headers=self.config.getAuthHeader()) logger.info(f'Bumped resume: {resume_id}') except Exception as e: logger.error(e)
class HeadHunterRepository: config = None def __init__(self): self.config = Config() def get_resumes(self): try: response = requests.get(self.config.getMyResumesEndpoint(), headers=self.config.getAuthHeader()) except Exception as e: logger.error(e, exc_info=True) return [] response_dict = json.loads(response.text) if 'items' not in response_dict: logger.error(response_dict, exc_info=True) return [] logger.info('Got resumes') return response_dict['items'] def get_black_list_companies_by_resume_id(self, resume_id): try: response = requests.get( self.config.getResumeBlackListEndpoint(resume_id), headers=self.config.getAuthHeader()) except Exception as e: logger.error(e, exc_info=True) return [] response_dict = json.loads(response.text) if 'items' not in response_dict: logger.error(response_dict) return [] logger.info(f'Got black_list companies for resumeId: {resume_id}') return response_dict['items'] def get_black_list_companies_count_by_resume_id(self, resume_id: str) -> int: try: response = requests.get( self.config.getResumeBlackListEndpoint(resume_id), headers=self.config.getAuthHeader()) except Exception as e: logger.error(e, exc_info=True) return 0 response_dict = json.loads(response.text) if 'found' not in response_dict: logger.error(response_dict) return 0 logger.info( f'Got {response_dict.get("found")} black_listed companies for resumeId: {resume_id}' ) return response_dict.get('found') def set_black_list_companies_by_resume_id(self, resumeId, data: dict) -> bool: try: requests.post(self.config.getResumeBlackListEndpoint(resumeId), json=data, headers=self.config.getAuthHeader()) logger.info(f'Updated black_list for: {resumeId}') except Exception as e: logger.error(e) return False return True """ TODO: Return only unique list """ def get_views_history_by_resume_id(self, resume_id: str): while True: try: response = requests.get( self.config.get_resume_views_history(resume_id), headers=self.config.getAuthHeader()) if response.ok: logger.info( f'Got views_history for resume_id: {resume_id}') return response.json() except Exception as e: logger.error(e) time.sleep(10) def get_employer_by_id(self, employer_id: str): while True: try: logger.info(f'Try to get info about employer_id {employer_id}') url = self.config.get_employer_by_id(employer_id) response = requests.get(url, headers=self.config.getAuthHeader()) if response.status_code == 200 and response.ok: logger.info(f'Got employer_id {employer_id}') return response.json() logger.warn( f'Employer {employer_id} not found. This is weird! {response.status_code} ({url})' ) return {} except Exception as e: logger.error(e, exc_info=True) time.sleep(10) def set_resume_description_by_id(self, resume_id: str, description: str): try: logger.info(f'Try to update resume description {resume_id}') url = self.config.get_resume_id_endpoint(resume_id) response = requests.put(url, json={'skills': description}, headers=self.config.getAuthHeader()) if response.status_code == 204 and response.ok: logger.info(f'Successful update resume {resume_id}') return response.status_code logger.error( f'Resume {resume_id} not found. This is weird! {response.status_code} ({url})' ) return response.status_code except Exception as e: logger.error(e, exc_info=True)