mod_rest/example/app.py
changeset 3867 45b04f05d624
parent 3865 ede3d1724dd1
child 4250 53ae1df31950
equal deleted inserted replaced
3866:3b6b8dcff78e 3867:45b04f05d624
     3 app = Flask("echobot")
     3 app = Flask("echobot")
     4 
     4 
     5 
     5 
     6 @app.route("/api", methods=["OPTIONS"])
     6 @app.route("/api", methods=["OPTIONS"])
     7 def options():
     7 def options():
       
     8     """
       
     9     Startup check. Return an appropriate Accept header to confirm the
       
    10     data type to use.
       
    11     """
       
    12 
     8     return Response(status=200, headers={"accept": "application/json"})
    13     return Response(status=200, headers={"accept": "application/json"})
     9 
    14 
    10 
    15 
    11 @app.route("/api", methods=["POST"])
    16 @app.route("/api", methods=["POST"])
    12 def hello():
    17 def hello():
       
    18     """
       
    19     Example RESTful JSON format stanza handler.
       
    20     """
       
    21 
    13     print(request.data)
    22     print(request.data)
    14     if request.is_json:
    23     if request.is_json:
    15         data = request.get_json()
    24         data = request.get_json()
    16 
    25 
    17         if "kind" not in data:
    26         if "kind" not in data:
    18             return Response(status=400)
    27             return Response(status=400)
    19 
    28 
    20         if data["kind"] == "message" and "body" in data:
    29         if data["kind"] == "message" and "body" in data:
       
    30             # Reply to a message
    21             return jsonify({"body": "Yes this is flask app"})
    31             return jsonify({"body": "Yes this is flask app"})
    22 
    32 
    23         elif data["kind"] == "iq" and data["type"] == "get":
    33         elif data["kind"] == "iq" and data["type"] == "get":
    24             if "ping" in data:
    34             if "ping" in data:
       
    35                 # Respond to ping
    25                 return Response(status=204)
    36                 return Response(status=204)
    26 
    37 
    27             elif "disco" in data:
    38             elif "disco" in data:
       
    39                 # Return supported features
    28                 return jsonify(
    40                 return jsonify(
    29                     {
    41                     {
    30                         "disco": {
    42                         "disco": {
    31                             "identities": [
    43                             "identities": [
    32                                 {
    44                                 {
    43                         }
    55                         }
    44                     }
    56                     }
    45                 )
    57                 )
    46 
    58 
    47             elif "items" in data:
    59             elif "items" in data:
       
    60                 # Disco items
    48                 return jsonify(
    61                 return jsonify(
    49                     {"items": [{"jid": "example.org", "name": "Example Dot Org"}]}
    62                     {"items": [{"jid": "example.org", "name": "Example Dot Org"}]}
    50                 )
    63                 )
    51 
    64 
    52             elif "version" in data:
    65             elif "version" in data:
       
    66                 # Version info
    53                 return jsonify({"version": {"name": "app.py", "version": "0"}})
    67                 return jsonify({"version": {"name": "app.py", "version": "0"}})
    54 
    68 
    55     return Response(status=501)
    69     return Response(status=501)
    56 
    70 
    57 
    71