Changeset - 470153f64737
[Not reviewed]
version_5
0 1 0
Dennis Fink - 9 years ago 2015-10-19 01:31:13
dennis.fink@c3l.lu
Added new fingerprint api endpoint for the auto config script
1 file changed with 13 insertions and 0 deletions:
0 comments (0 inline, 0 general)
ennstatus/api/views.py
Show inline comments
 
@@ -116,48 +116,61 @@ def update():
 
    return (
 
        server.json(), 201,
 
        {
 
            'Location': '/api/export/json/single?server_name={}'.format(
 
                server.name
 
            )
 
        }
 
    )
 

	
 

	
 
@api_page.route('/export', defaults={'server_type': 'all'})
 
@api_page.route(('/export/<any("all", "exit", "bridge", "relay", "single")'
 
                 ':server_type>'))
 
def export(server_type):
 

	
 
    current_app.logger.info('Handling export')
 
    if server_type == 'single':
 
        server_name = request.args.get('server_name', None)
 
        if server_name is not None:
 
            server = single_server(server_name)
 
            if server:
 
                return server.json(), 200, {'Content-Type': 'application/json'}
 
            else:
 
                current_app.logger.warning('Server not found!')
 
                return ('Server not found!\n',
 
                        404, {'Content-Type': 'text/plain'})
 
        else:
 
            current_app.logger.warning('No server_name specified!')
 
            return ('No server_name specified!\n',
 
                    400, {'Content-Type': 'text/plain'})
 

	
 
    else:
 
        if server_type == 'all':
 
            current_app.logger.info('Getting all servers!')
 
            servers = [
 
                json.loads(
 
                    server.json()
 
                ) for server in all_servers()
 
            ]
 
        else:
 
            current_app.logger.info('Getting all {}!'.format(server_type))
 
            servers = [
 
                json.loads(
 
                    server.json()
 
                ) for server in all_servers_by_type(server_type.lower())
 
            ]
 

	
 
        return json.dumps(servers), 200, {'Content-Type': 'application/json'}
 

	
 

	
 
@api_page.route('/fingerprints', defaults={'server_type': 'all'})
 
@api_page.route('/fingerprints/<any("all", "exit", "relay"):server_type>')
 
def fingerprint(server_type):
 
    if server_type == 'all':
 
        servers = [server.fingerprint for server in all_servers()
 
                   if server.type != 'bridge']
 
    else:
 
        servers = [server.fingerprint
 
                   for server in all_servers_by_type(server_type.lower())]
 

	
 
    return '\n'.join(servers), 200, {'Content-Type': 'text/plain'}
0 comments (0 inline, 0 general)