예제 #1
0
    def do_GET(self):
        code = dict(parse.parse_qsl(parse.urlsplit(self.path).query)).get(
            'code', None)

        if code:
            response = requests.post(
                'https://hh.ru/oauth/token', {
                    'grant_type': 'authorization_code',
                    'client_id': os.getenv('APP_ID'),
                    'client_secret': os.getenv('APP_SECRET'),
                    'code': code,
                    'redirect_uri': redirect_uri
                })

            result = json.loads(response.text)

            if 'access_token' in result:
                c = Config()
                c.setAccessToken(AccessTokenEntity(result))
                print(c.getAccessToken().getAccessToken())
            exit()

        self.send_response(200)
        self.end_headers()

        return
예제 #2
0
class Refresher:
    config = None
    accessToken = None
    resumeService = None
    resume_bump_handler = ResumeBumpHandler()
    resume_check_views_handler = ResumeCheckViewsHandler()
    resume_collect_black_list_handler = ResumeCollectBlackListHandler()
    resume_update_black_list_handler = ResumeUpdateBlackListHandler()
    resume_update_description_handler = ResumeUpdateDescriptionHandler()

    def __init__(self):
        self.config = Config()
        self.accessToken = AccessToken()
        self.resumeService = ResumeService()

    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)
예제 #3
0
class AccessToken:
    config = None

    def __init__(self):
        self.config = Config()

    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 isTokenExpired(self) -> bool:
        return DateHelper.getCurrentUnixDate() > self.config.getAccessToken(
        ).getExpiresAt()