Spaces:
Build error
Build error
Validify-testbot-1
/
botbuilder-python
/libraries
/botframework-streaming
/botframework
/streaming
/streaming_request.py
# Copyright (c) Microsoft Corporation. All rights reserved. | |
# Licensed under the MIT License. | |
import json | |
from uuid import UUID, uuid4 | |
from typing import List, Union | |
from msrest.serialization import Model | |
from botframework.streaming.payloads import ResponseMessageStream | |
from botframework.streaming.payloads.models import Serializable | |
class StreamingRequest: | |
GET = "GET" | |
POST = "POST" | |
PUT = "PUT" | |
DELETE = "DELETE" | |
def __init__( | |
self, | |
*, | |
verb: str = None, | |
path: str = None, | |
streams: List[ResponseMessageStream] = None, | |
): | |
self.verb = verb | |
self.path = path | |
self.streams = streams | |
def create_request( | |
method: str, path: str = None, body: object = None | |
) -> "StreamingRequest": | |
if not method: | |
return None | |
request = StreamingRequest( | |
verb=method, | |
path=path, | |
) | |
if body: | |
request.add_stream(body) | |
return request | |
def create_get(path: str = None, body: object = None) -> "StreamingRequest": | |
return StreamingRequest.create_request("GET", path, body) | |
def create_post(path: str = None, body: object = None) -> "StreamingRequest": | |
return StreamingRequest.create_request("POST", path, body) | |
def create_put(path: str = None, body: object = None) -> "StreamingRequest": | |
return StreamingRequest.create_request("PUT", path, body) | |
def create_delete(path: str = None, body: object = None) -> "StreamingRequest": | |
return StreamingRequest.create_request("DELETE", path, body) | |
def set_body(self, body: Union[str, Serializable, Model, bytes]): | |
# TODO: verify if msrest.serialization.Model is necessary | |
if not body: | |
return | |
if isinstance(body, bytes): | |
pass | |
else: | |
if isinstance(body, Serializable): | |
body = body.to_json() | |
elif isinstance(body, Model): | |
body = json.dumps(body.as_dict()) | |
body = body.encode("ascii") | |
self.add_stream(list(body)) | |
def add_stream(self, content: object, stream_id: UUID = None): | |
if not content: | |
raise TypeError( | |
f"'content: {content.__class__.__name__}' argument can't be None" | |
) | |
if not self.streams: | |
self.streams = [] | |
self.streams.append( | |
ResponseMessageStream(id=stream_id or uuid4(), content=content) | |
) | |