def create_account(email, username, password, learning_language, native_language, invite_code): api_address = CREATE_USER + email resp = post(api_address, payload={ "password": password, "username": username, "invite_code": invite_code }) session = int(resp.text) # What to do when the server crashes here? native = NATIVE_LANGUAGE + native_language learned = LEARNED_LANGUAGE + learning_language resp = post(native, session_needed=True, session=session) resp = post(learned, session_needed=True, session=session) return session
def get_bookmarks_for_article(article_id: int, user_id: int = None): _payload = {"with_context": True, "with_title": True} if user_id: resp = post(BOOKMARKS_FOR_ARTICLE + f'{article_id}/{user_id}', payload=_payload, session_needed=True) else: resp = post(BOOKMARKS_FOR_ARTICLE + f'{article_id}', payload=_payload, session_needed=True) _json = json.loads(resp.content) print(_json) bookmarks = [Bookmark.from_json(each) for each in _json['bookmarks']] dates = [] contexts_for_date = OrderedDict() bookmarks_for_context = {} for each in bookmarks: if each.date not in dates: dates.append(each.date) if each.date not in contexts_for_date: contexts_for_date[each.date] = [] if each.context not in contexts_for_date[each.date]: contexts_for_date[each.date].append(each.context) if each.context not in bookmarks_for_context: bookmarks_for_context[each.context] = [] bookmarks_for_context[each.context].append(each) return { "sorted_dates": dates[::-1], "contexts_for_date": contexts_for_date, "bookmarks_for_context": bookmarks_for_context, "article_title": _json['article_title'], "article_id": article_id }
def set_user_settings(name: str, email: str, native_language_code: str, learned_language_code: str): return post(USER_SETTINGS, payload={ 'name': name, 'native_language_code': native_language_code, 'learned_language_code': learned_language_code, 'email': email }, session_needed=True)
def get_bookmarks_by_date(date=None): _payload = {"with_context": True, "with_title": True} if date: _date_string = date.strftime('%Y-%m-%dT%H:%M:%S') _payload["after_date"] = _date_string resp = post(BOOKMARKS_BY_DATE, payload=_payload, session_needed=True) _json = json.loads(resp.content) sorted_dates = [] urls_for_date = {} contexts_for_url = {} bookmarks_for_context = {} bookmark_counts_by_date = {} article_ids_for_urls = {} for data in _json: each_date = datetime.datetime.strptime(data["date"], "%A, %d %B %Y") sorted_dates.append(each_date) urls_for_date.setdefault(each_date, []) for bookmark_json in data["bookmarks"]: # try: each_bookmark = Bookmark.from_json(bookmark_json) each_bookmark.set_date(each_date) each_context = each_bookmark.context if each_bookmark.url not in urls_for_date[each_date]: urls_for_date[each_date].append(each_bookmark.url) contexts_for_url.setdefault(each_bookmark.url, []) if not each_context in contexts_for_url.get(each_bookmark.url): contexts_for_url[each_bookmark.url].append(each_context) bookmarks_for_context.setdefault(each_context, []) bookmarks_for_context[each_context].append(each_bookmark) article_ids_for_urls[each_bookmark.url] = each_bookmark.article_id # except Exception: # print("Parsing bookmark failed") bookmark_counts_by_date.setdefault(each_date, set()).add(len(data["bookmarks"])) return { "sorted_dates": sorted_dates, "urls_for_date": urls_for_date, "contexts_for_url": contexts_for_url, "bookmarks_for_context": bookmarks_for_context, "bookmark_counts_by_date": bookmark_counts_by_date, "article_ids_for_urls": article_ids_for_urls }
def upload_user_activity_data(data): """ time: '2016-05-05T10:11:12', event: "User Read Article", value: "300s", extra_data: "{article_source: 2, ...}" :return: """ resp = post("upload_user_activity_data", payload={ 'event': 'Aiki Interception', 'value': '', 'extra_data': data }, session_needed=True) return resp.text
def unstar_bookmark(bookmark_id): path = UNSTAR_BOOKMARK + str(bookmark_id) resp = post(path, session_needed=True) return resp.text
def report_learned_bookmark(bookmark_id): path = REPORT_LEARNED_BOOKMARK + str(bookmark_id) resp = post(path, session_needed=True) return resp.text
def delete_bookmark(bookmark_id): path = DELETE_BOOKMARK + str(bookmark_id) resp = post(path, session_needed=True) return resp.text
def report_correct_mini_exercise(bookmark_id): path = REPORT_LEARNED_BOOKMARK + str(bookmark_id) resp = post(path, session_needed=True) return resp.text
def reset_password(code, email, password): api_address = RESET_PASSWORD + email resp = post(api_address, payload={"code": code, "password": password})
def request_code(email): api_addres = REQUEST_CODE + email resp = post(api_addres)
def login(email, password): url = LOGIN + email resp = post(url, payload={"password": password}) return resp.text