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