예제 #1
0
    def setUp(self):
        super(TestFirstAidApiClient, self).setUp()

        services.config.FIRST_AID_AUTH_ID = '1234'
        services.config.FIRST_AID_AUTH_PW = 'password'
        services.config.FIRST_AID_AUTH_URL_PATTERN = (
            'https://api.usmle-rx.com/v1/user/%s/login')
        services.config.FIRST_AID_REPORT_URL_PATTERN = (
            'https://api.usmle-rx.com/v1/report/123/execute?%s')

        self.client = FirstAidApiClient()
예제 #2
0
def topic_handler(data):
    _, url = data
    try:
        topics = FirstAidApiClient().fetch(url)
    except ServiceRequestError:
        raise FailJobError()
    except ServiceResponseError:
        raise RetrySliceError()

    for topic_data in topics:
        yield op.db.Put(
            FirstAidActivityTopic.new_topic(topic_data, commit=False))
    yield op.counters.Increment('Topics', len(topic_data))
예제 #3
0
def query_handler(data):
    _, url = data
    try:
        session_user_topic_stats = FirstAidApiClient().fetch(url)
    except ServiceRequestError:
        raise FailJobError()
    except ServiceResponseError:
        raise RetrySliceError()

    for session_data in session_user_topic_stats:
        try:
            education.api.validate('FirstAidSessionRowData', session_data)
        except ValidationError:
            logging.error('Invalid session stats: %s', session_data)
            continue
        yield op.db.Put(FirstAidActivity.from_data(session_data, commit=False))
        yield op.counters.Increment('Session stats', 1)