Пример #1
0
async def webfinger(request):
    resource = request.args.get('resource')
    if request.app.config.DOMAIN not in resource:
        return response.json({"error": "wrong domain"}, status=404)

    user_id = resource.split(":")[1].split("@")[0]
    user = await User.find_one(dict(name=user_id))
    if not user:
        return response.json({"error": "no such user"}, status=404)

    return response.json(
        Actor(user).webfinger(resource),
        headers={'Content-Type': 'application/jrd+json; charset=utf-8'})
Пример #2
0
async def user_create(request):

    if request.app.config.REGISTRATION == "closed":
        return response.json({'error': 'registration closed'})

    invite = request.json.pop("invite", None)
    if request.app.config.REGISTRATION == "invite":
        if not invite or invite != request.app.config.INVITE_CODE:
            return response.json({'error': 'need valid invite'})

    username = request.json["username"]
    password = request.json["password"]
    if username and password:
        is_uniq = await User.is_unique(doc=dict(name=username))
        if is_uniq in (True, None):
            user = await User.create(request.json, request.app.base_url)
            return response.json({'profile': Actor(user).render}, status=201)
        else:
            return response.json({'error': 'username n/a'})
Пример #3
0
async def user_get(request, user):
    return response.json(
        Actor(user).render,
        headers={'Content-Type': 'application/activity+json; charset=utf-8'})