コード例 #1
0
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
コード例 #2
0
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
    }
コード例 #3
0
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)
コード例 #4
0
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
    }
コード例 #5
0
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
コード例 #6
0
def unstar_bookmark(bookmark_id):
    path = UNSTAR_BOOKMARK + str(bookmark_id)
    resp = post(path, session_needed=True)
    return resp.text
コード例 #7
0
def report_learned_bookmark(bookmark_id):
    path = REPORT_LEARNED_BOOKMARK + str(bookmark_id)
    resp = post(path, session_needed=True)
    return resp.text
コード例 #8
0
def delete_bookmark(bookmark_id):
    path = DELETE_BOOKMARK + str(bookmark_id)
    resp = post(path, session_needed=True)
    return resp.text
コード例 #9
0
def report_correct_mini_exercise(bookmark_id):
    path = REPORT_LEARNED_BOOKMARK + str(bookmark_id)
    resp = post(path, session_needed=True)
    return resp.text
コード例 #10
0
def reset_password(code, email, password):
    api_address = RESET_PASSWORD + email
    resp = post(api_address, payload={"code": code, "password": password})
コード例 #11
0
def request_code(email):
    api_addres = REQUEST_CODE + email
    resp = post(api_addres)
コード例 #12
0
def login(email, password):
    url = LOGIN + email
    resp = post(url, payload={"password": password})
    return resp.text