blueprints: add nodeinfo blueprint

This commit is contained in:
Luna Mendes 2018-11-18 17:04:31 -03:00
parent 3432617988
commit 339d1b0c8b
3 changed files with 59 additions and 2 deletions

View File

@ -10,7 +10,8 @@ from .invites import bp as invites
from .relationships import bp as relationships
from .dms import bp as dms
from .icons import bp as icons
from .nodeinfo import bp as nodeinfo
__all__ = ['gateway', 'auth', 'users', 'guilds', 'channels',
'webhooks', 'science', 'voice', 'invites', 'relationships',
'dms', 'icons']
'dms', 'icons', 'nodeinfo']

View File

@ -0,0 +1,55 @@
from quart import Blueprint, current_app as app, jsonify, request
bp = Blueprint('nodeinfo', __name__)
@bp.route('/.well-known/nodeinfo')
async def _dummy_nodeinfo_index():
proto = 'http' if not app.config['IS_SSL'] else 'https'
return jsonify({
'links': [{
'href': f'{proto}://{request.host}/nodeinfo/2.0.json',
'rel': 'http://nodeinfo.diaspora.software/ns/schema/2.0'
}]
})
@bp.route('/nodeinfo/2.0.json')
async def _dummy_nodeinfo():
usercount = await app.db.fetchval("""
SELECT COUNT(*)
FROM users
""")
return jsonify({
'metadata': {
'features': [
'discord_api'
],
'nodeDescription': 'A Litecord instance',
'nodeName': 'Litecord/Nya',
'private': False,
'federation': {}
},
'openRegistrations': app.config['REGISTRATIONS'],
'protocols': [],
'software': {
'name': 'litecord',
'version': 'litecord v0',
},
'services': {
'inbound': [],
'outbound': [],
},
'usage': {
'localPosts': -1,
'users': {
'total': usercount
}
},
'version': '2.0',
})

3
run.py
View File

@ -14,7 +14,7 @@ import config
from litecord.blueprints import (
gateway, auth, users, guilds, channels, webhooks, science,
voice, invites, relationships, dms, icons
voice, invites, relationships, dms, icons, nodeinfo
)
# those blueprints are separated from the "main" ones
@ -104,6 +104,7 @@ def set_blueprints(app_):
dms: '/users',
icons: -1,
nodeinfo: -1,
}
for bp, suffix in bps.items():