def execute(self): while True: try: expired = self.accessToken.isTokenExpired() break except Exception as e: logger.info('Access key is not found') time.sleep(10) if expired: logger.info('Access token expired. Try to get new') self.accessToken.handleRefreshToken(self.config.getAccessToken().getRefreshToken()) resumes = self.resumeService.get_published_resumes() # Resumes read for resume in resumes: # Who watched our resume self.resume_check_views_handler.handle(resume.get_id()) # Bump if it is possibly self.resume_bump_handler.handle(resume) # Collect black list self.resume_collect_black_list_handler.handle(resume) # Resumes write for resume in resumes: self.resume_update_black_list_handler.handle(resume) # Update resume description for resume in resumes: self.resume_update_description_handler.handle(resume)
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)
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
def handleRefreshToken(self, refresh_token: str) -> None: try: response = requests.post(self.config.getOauthTokenEndpoint(), { 'grant_type': 'refresh_token', 'refresh_token': refresh_token, }) result = json.loads(response.text) if 'access_token' in result: logger.info('Refresh access_token') self.config.setAccessToken(AccessTokenEntity(result)) except Exception as e: logger.error(e)
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_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 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)
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 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')
import time import locale from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv()) from classes.refresher import Refresher from classes.utils.logger import logger locale.setlocale(locale.LC_ALL, 'ru_RU.UTF-8') if __name__ == "__main__": logger.info('Server was started') while True: client = Refresher() client.execute() logger.info('Wait next iteration') time.sleep(60 * 5)