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()
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))
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)