Last active
July 9, 2016 20:24
-
-
Save lap00zza/f7e22d1a140d097153a8cee737e3b79a to your computer and use it in GitHub Desktop.
Revisions
-
lap00zza revised this gist
Jul 9, 2016 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -117,7 +117,7 @@ def member_count(server_id): return jsonify({"member_count": server.member_count}), 200 except Exception as e: print(e) return jsonify({"member_count": None}), 404 return jsonify({"member_count": None}), 404 except Exception as e: print(e) @@ -185,7 +185,7 @@ def role_list(server_id): return jsonify({"role_list": r_dict}), 200 except Exception as e: print(e) return jsonify({"role_list": None}), 404 return jsonify({"role_list": None}), 404 except Exception as e: print(e) -
lap00zza revised this gist
Jul 9, 2016 . 1 changed file with 30 additions and 27 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ # coding=utf-8 """ LAPZBOT Restful Handles the inter process communications between Lapzbot and the Console, without having to rely on the database for Server / User information. This is intended to be run in a thread. @@ -11,7 +11,6 @@ import discord import threading class Bot(discord.Client): def __init__(self): super().__init__() @@ -34,10 +33,10 @@ def __init__(self): ::Member Endpoints GET /api_v1/member/<member_id>/ :NOTE: Member List, Channel List and User List are kept as separate endpoints by design choice. :LICENSE: Copyright 2016 Jewel Mahanta (@lapoozza, https://github.com/lap00zza) Licensed under the Apache License, Version 2.0 (the "License"); @@ -67,7 +66,8 @@ def server_op(server_id): Returns Server related information. :param server_id: Server ID :return: Server related information containing: name, id, owner etc :rtype: JSON """ try: @@ -91,14 +91,14 @@ def server_op(server_id): "member_count": server.member_count, # "mfa_level": server.mfa_level, "region": region} return jsonify({"server": s_def}), 200 except Exception as e: print(e) return jsonify({"server": None}), 404 return jsonify({"server": None}), 404 except Exception as e: print(e) return jsonify({"server": None}), 404 @app.route('/api_v1/server/<server_id>/member_count/', methods=['GET']) @@ -107,7 +107,8 @@ def member_count(server_id): Returns member count for a server. :param server_id: Server ID :return: The total number of members in the server :rtype: JSON """ try: server = discord.utils.get(context.servers, id=server_id) @@ -120,7 +121,7 @@ def member_count(server_id): return jsonify({"member_count": None}), 404 except Exception as e: print(e) return jsonify({"member_count": None}), 404 @app.route('/api_v1/server/<server_id>/member_list/', methods=['GET']) @@ -129,7 +130,8 @@ def member_list(server_id): Returns member list for a server. :param server_id: Server ID :return: A list of all the members in the server :rtype: JSON """ try: server = discord.utils.get(context.servers, id=server_id) @@ -157,11 +159,11 @@ def member_list(server_id): return jsonify({"member_list": m_dict}), 200 except Exception as e: print(e) return jsonify({"member_list": None}), 404 return jsonify({"member_list": None}), 404 except Exception as e: print(e) return jsonify({"member_list": None}), 404 @app.route('/api_v1/server/<server_id>/role_list/', methods=['GET']) @@ -170,7 +172,8 @@ def role_list(server_id): Returns role list for a server. :param server_id: Server ID :return: A list of all the roles in the server :rtype: JSON """ try: server = discord.utils.get(context.servers, id=server_id) @@ -183,10 +186,10 @@ def role_list(server_id): except Exception as e: print(e) return None return jsonify({"role_list": None}), 404 except Exception as e: print(e) return jsonify({"role_list": None}), 404 @app.route('/api_v1/server/<server_id>/channel_list/', methods=['GET']) @@ -195,7 +198,8 @@ def channel_list(server_id): Returns channel list for a server. :param server_id: Server ID :return: A list of all the channels in the server :rtype: JSON """ try: server = discord.utils.get(context.servers, id=server_id) @@ -208,14 +212,14 @@ def channel_list(server_id): "type": c.type.value, "created_at": c.created_at}) try: return jsonify({"channel_list": c_dict}), 200 except Exception as e: print(e) return jsonify({"channel_list": None}), 404 return jsonify({"channel_list": None}), 404 except Exception as e: print(e) return jsonify({"channel_list": None}), 404 @app.route('/api_v1/member/<member_id>/', methods=['GET']) @@ -224,7 +228,8 @@ def member(member_id): Returns member information :param member_id: Member ID :return: Member related information containing: name, id, avatar etc :rtype: JSON """ try: print(member_id) @@ -242,18 +247,16 @@ def member(member_id): return jsonify({"member": m_def}), 200 except Exception as e: print(e) return jsonify({"member": None}), 404 return jsonify({"member": None}), 404 except Exception as e: print(e) return jsonify({"member": None}), 404 def run_server(ctx): """ This method is called for running the server. """ global context context = ctx -
lap00zza revised this gist
Jul 9, 2016 . 1 changed file with 8 additions and 6 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -9,6 +9,8 @@ ---------------- import lapzbotAPI import discord import threading class Bot(discord.Client): def __init__(self): @@ -65,7 +67,7 @@ def server_op(server_id): Returns Server related information. :param server_id: Server ID :return: JSON containing server information """ try: @@ -105,7 +107,7 @@ def member_count(server_id): Returns member count for a server. :param server_id: Server ID :return: JSON containing member count """ try: server = discord.utils.get(context.servers, id=server_id) @@ -127,7 +129,7 @@ def member_list(server_id): Returns member list for a server. :param server_id: Server ID :return: JSON containing member list """ try: server = discord.utils.get(context.servers, id=server_id) @@ -168,7 +170,7 @@ def role_list(server_id): Returns role list for a server. :param server_id: Server ID :return: JSON containing role list """ try: server = discord.utils.get(context.servers, id=server_id) @@ -193,7 +195,7 @@ def channel_list(server_id): Returns channel list for a server. :param server_id: Server ID :return: JSON containing channel list """ try: server = discord.utils.get(context.servers, id=server_id) @@ -222,7 +224,7 @@ def member(member_id): Returns member information :param member_id: Member ID :return: JSON containing member information """ try: print(member_id) -
lap00zza revised this gist
Jul 9, 2016 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -3,7 +3,7 @@ LAPZBOT API Handles the inter process communications between Lapzbot and the Console, without having to rely on the database for Server / User information. This is intended to be run in a thread. Typical UseCase: ---------------- -
lap00zza renamed this gist
Jul 9, 2016 . 1 changed file with 0 additions and 0 deletions.There are no files selected for viewing
File renamed without changes. -
lap00zza created this gist
Jul 9, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,259 @@ # coding=utf-8 """ LAPZBOT API Handles the inter process communications between Lapzbot and the Console, without having to rely on the database for Server / User information. This is intended to be run as in a thread. Typical UseCase: ---------------- import lapzbotAPI import discord class Bot(discord.Client): def __init__(self): super().__init__() t = threading.Thread(target=lapzbotAPI.run_server, args=[self]) t.start() bot = Bot() bot.run('token') Available Endpoints: ------------------- ::Server Endpoints GET /api_v1/server/<server_id>/ GET /api_v1/server/<server_id>/member_count/ GET /api_v1/server/<server_id>/member_list/ GET /api_v1/server/<server_id>/role_list/ GET /api_v1/server/<server_id>/channel_list/ ::Member Endpoints GET /api_v1/member/<member_id>/ NOTE: Member List, Channel List and User List are kept as separate endpoints by design choice. LICENSE: Copyright 2016 Jewel Mahanta (@lapoozza, https://github.com/lap00zza) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. """ from flask import Flask, jsonify import os import discord app = Flask(__name__) context = None @app.route('/api_v1/server/<server_id>/', methods=['GET']) def server_op(server_id): """ Returns Server related information. :param server_id: Server ID :return: """ try: server = discord.utils.get(context.servers, id=server_id) if server: try: region = server.region.value except AttributeError: region = server.region try: s_def = {"name": server.name, "id": server.id, "owner": {"name": server.owner.name, "id": server.owner.id, "avatar_url": server.owner.avatar_url, "discriminator": server.owner.discriminator}, "large": server.large, "icon_url": server.icon_url, "created_at": server.created_at, "member_count": server.member_count, # "mfa_level": server.mfa_level, "region": region} return jsonify({"member_count": s_def}), 200 except Exception as e: print(e) return None return jsonify({"member_count": None}), 404 except Exception as e: print(e) return None @app.route('/api_v1/server/<server_id>/member_count/', methods=['GET']) def member_count(server_id): """ Returns member count for a server. :param server_id: Server ID :return: """ try: server = discord.utils.get(context.servers, id=server_id) if server: try: return jsonify({"member_count": server.member_count}), 200 except Exception as e: print(e) return None return jsonify({"member_count": None}), 404 except Exception as e: print(e) return None @app.route('/api_v1/server/<server_id>/member_list/', methods=['GET']) def member_list(server_id): """ Returns member list for a server. :param server_id: Server ID :return: """ try: server = discord.utils.get(context.servers, id=server_id) m_dict = [] if server: for m in server.members: r_dict = [] roles = m.roles for r in roles: r_dict.append({"name": r.name, "id": r.id}) m_def = {"name": m.name, "id": m.id, "discriminator": m.discriminator, "bot": m.bot, "avatar_url": m.avatar_url, "default_avatar_url": m.default_avatar_url, "created_at": m.created_at, "display_name": m.display_name, "roles": r_dict, "joined_at": m.joined_at, "colour": m.colour.value, "top_role": {"name": m.top_role.name, "id": m.top_role.id}} m_dict.append(m_def) try: return jsonify({"member_list": m_dict}), 200 except Exception as e: print(e) return None return jsonify({"member_list": None}), 404 except Exception as e: print(e) return None @app.route('/api_v1/server/<server_id>/role_list/', methods=['GET']) def role_list(server_id): """ Returns role list for a server. :param server_id: Server ID :return: """ try: server = discord.utils.get(context.servers, id=server_id) r_dict = [] if server: for r in server.roles: r_dict.append({"name": r.name, "id": r.id, "colour": r.colour.value}) try: return jsonify({"role_list": r_dict}), 200 except Exception as e: print(e) return None return jsonify({"member_list": None}), 404 except Exception as e: print(e) return None @app.route('/api_v1/server/<server_id>/channel_list/', methods=['GET']) def channel_list(server_id): """ Returns channel list for a server. :param server_id: Server ID :return: """ try: server = discord.utils.get(context.servers, id=server_id) c_dict = [] if server: for c in server.channels: c_dict.append({"name": c.name, "id": c.id, "topic": c.topic, "type": c.type.value, "created_at": c.created_at}) try: return jsonify({"member_list": c_dict}), 200 except Exception as e: print(e) return None return jsonify({"member_list": None}), 404 except Exception as e: print(e) return None @app.route('/api_v1/member/<member_id>/', methods=['GET']) def member(member_id): """ Returns member information :param member_id: Member ID :return: """ try: print(member_id) m = discord.utils.get(context.get_all_members(), id=member_id) if m: try: m_def = {"name": m.name, "id": m.id, "discriminator": m.discriminator, "bot": m.bot, "avatar_url": m.avatar_url, "default_avatar_url": m.default_avatar_url, "created_at": m.created_at, "display_name": m.display_name} return jsonify({"member": m_def}), 200 except Exception as e: print(e) return None return jsonify({"member": None}), 404 except Exception as e: print(e) return None def run_server(ctx): """ This method is called for running the server. :return: """ global context context = ctx port = int(os.environ.get("PORT", 4000)) app.run(host='127.0.0.1', port=port)