add proper image handling to http server
This commit is contained in:
@ -106,7 +106,7 @@ func __process_connection(connection: StreamPeerTCP) -> void:
|
||||
body = PoolStringArray(body_parts).join("\r\n")
|
||||
|
||||
var response: Response = __process_request(method, endpoint, headers, body)
|
||||
connection.put_data(response.to_utf8())
|
||||
connection.put_data(response.get_data())
|
||||
|
||||
|
||||
func __process_request(method: String, endpoint: String, headers: Dictionary, body: String) -> Response:
|
||||
|
@ -11,6 +11,7 @@ var __headers: Dictionary = {
|
||||
# value: Variant, header value
|
||||
}
|
||||
var __status: int = 200
|
||||
var __type: MimeTypeHelper.MimeType
|
||||
|
||||
|
||||
# Public methods
|
||||
@ -32,6 +33,10 @@ func status(status: int) -> void:
|
||||
__status = status
|
||||
|
||||
|
||||
func type(type: MimeTypeHelper.MimeType) -> void:
|
||||
__type = type
|
||||
|
||||
|
||||
func to_utf8() -> PoolByteArray:
|
||||
var content = PoolStringArray()
|
||||
|
||||
@ -45,6 +50,7 @@ func to_utf8() -> PoolByteArray:
|
||||
data = JSON.print(data)
|
||||
|
||||
__headers['content-length'] = len(data)
|
||||
__headers["content-type"] = "application/octet-stream" if !__type else __type.full_type
|
||||
|
||||
for header in __headers:
|
||||
content.append("%s: %s" % [header, String(__headers[header])])
|
||||
@ -55,3 +61,48 @@ func to_utf8() -> PoolByteArray:
|
||||
content.append(data)
|
||||
|
||||
return content.join("\r\n").to_utf8()
|
||||
|
||||
|
||||
func get_data() -> PoolByteArray:
|
||||
var res = __response_headers()
|
||||
|
||||
var data = __data
|
||||
if !data:
|
||||
return res
|
||||
|
||||
var type: MimeTypeHelper.MimeType = __type
|
||||
if !type:
|
||||
type = MimeTypeHelper.MimeType.new()
|
||||
|
||||
if data is String: # else, assume data is PoolByteArray
|
||||
data = data.to_utf8()
|
||||
|
||||
res.append_array(data)
|
||||
|
||||
return res
|
||||
|
||||
|
||||
# Private methods
|
||||
|
||||
func __response_headers() -> PoolByteArray:
|
||||
var res = PoolStringArray()
|
||||
|
||||
res.append(Status.code_to_status_line(__status))
|
||||
|
||||
var data = __data
|
||||
if !data:
|
||||
data = Status.code_to_description(__status)
|
||||
|
||||
__headers["content-length"] = len(data)
|
||||
|
||||
__headers["content-type"] = "application/octet-stream" if !__type else __type.full_type
|
||||
|
||||
for header in __headers:
|
||||
res.append("%s: %s" % [header, String(__headers[header])])
|
||||
|
||||
res.append("")
|
||||
|
||||
var s = res.join("\r\n")
|
||||
s = s + "\r\n"
|
||||
|
||||
return s.to_utf8()
|
||||
|
Reference in New Issue
Block a user