예제 #1
0
def messages_delete(request):
    """
    Delete message from history and emit changes
    ---
    delete:
      security:
        - APIKeyHeader: []
      tags:
      - "Legacy API"
      summary: "Delete message from history and  emit changes"
      description: ""
      operationId: "messages_delete"
      consumes:
      - "application/json"
      produces:
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "Request JSON body"
        required: true
        schema:
          $ref: "#/definitions/MessagesDeleteBody"
      responses:
        422:
          description: "Unprocessable Entity"
        200:
          description: "Success"
    """

    schema = schemas.MessagesDeleteBodySchema(context={"request": request},
                                              many=True)
    data = schema.load(request.json_body).data
    for msg in data:
        gevent.spawn(operations.delete_message, msg)
    return data
예제 #2
0
    def api_spec(self):
        """
        OpenApi 2.0 spec
        ---
        get:
          tags:
          - "OpenApi 2.0 spec"
          summary: "Return openapi spec
          purposes"
          description: ""
          operationId: "api_spec"
          consumes:
          - "application/json"
          produces:
          - "application/json"
          parameters:
          responses:
            200:
              description: "Success"
        """
        spec = APISpec(title="Channelstream API",
                       version="0.7.0",
                       plugins=(MarshmallowPlugin(), ))
        spec.definition("ConnectBody", schema=schemas.ConnectBodySchema)
        spec.definition("SubscribeBody", schema=schemas.SubscribeBodySchema)
        spec.definition("UnsubscribeBody",
                        schema=schemas.UnsubscribeBodySchema)
        spec.definition("UserStateBody", schema=schemas.UserStateBodySchema)
        spec.definition("MessagesBody",
                        schema=schemas.MessageBodySchema(many=True))
        spec.definition("MessageBody", schema=schemas.MessageBodySchema())
        spec.definition("MessageEditBody",
                        schema=schemas.MessageEditBodySchema(many=True))
        spec.definition("MessagesDeleteBody",
                        schema=schemas.MessagesDeleteBodySchema(many=True))
        spec.definition("DisconnectBody", schema=schemas.DisconnectBodySchema)
        spec.definition("ChannelConfigBody",
                        schema=schemas.ChannelConfigSchema)
        spec.definition("ChannelInfoBody",
                        schema=schemas.ChannelInfoBodySchema)

        # legacy api
        add_pyramid_paths(spec, "legacy_connect", request=self.request)
        add_pyramid_paths(spec, "legacy_subscribe", request=self.request)
        add_pyramid_paths(spec, "legacy_unsubscribe", request=self.request)
        add_pyramid_paths(spec, "legacy_user_state", request=self.request)
        add_pyramid_paths(spec, "legacy_message", request=self.request)
        add_pyramid_paths(spec, "legacy_channel_config", request=self.request)
        add_pyramid_paths(spec, "legacy_info", request=self.request)

        add_pyramid_paths(spec, "api_listen", request=self.request)
        add_pyramid_paths(spec, "api_listen_ws", request=self.request)
        add_pyramid_paths(spec, "api_disconnect", request=self.request)

        # v1 api
        # do not expose this yet
        # add_pyramid_paths(spec, "api_v1_messages", request=self.request)

        add_pyramid_paths(spec, "admin_json", request=self.request)
        spec_dict = spec.to_dict()
        spec_dict["securityDefinitions"] = {
            "APIKeyHeader": {
                "type": "apiKey",
                "name": "X-Channelstream-Secret",
                "in": "header",
            }
        }
        return spec_dict