patch http_server and add mimetypes
This commit is contained in:
parent
c7392c4d96
commit
85cdaca6f8
8694
addons/http_server/mimetypes.gd
Normal file
8694
addons/http_server/mimetypes.gd
Normal file
File diff suppressed because it is too large
Load Diff
@ -5,12 +5,13 @@ const Status = preload("res://addons/http_server/status.gd")
|
|||||||
|
|
||||||
# Private variables
|
# Private variables
|
||||||
|
|
||||||
var __data = "" # variant
|
var __data: Variant = "" # variant
|
||||||
var __headers: Dictionary = {
|
var __headers: Dictionary = {
|
||||||
# key: String, header name
|
# key: String, header name
|
||||||
# value: Variant, header value
|
# value: Variant, header value
|
||||||
}
|
}
|
||||||
var __status: int = 200
|
var __status: int = 200
|
||||||
|
var __type: MimeTypeHelper.MimeType
|
||||||
|
|
||||||
|
|
||||||
# Public methods
|
# Public methods
|
||||||
@ -19,11 +20,11 @@ func data(data) -> void: # data: Variant
|
|||||||
__data = data
|
__data = data
|
||||||
|
|
||||||
|
|
||||||
func header(name: String, value) -> void: # value: Variant
|
func header(name: String, value: Variant) -> void:
|
||||||
__headers[name.to_lower()] = value
|
__headers[name.to_lower()] = value
|
||||||
|
|
||||||
|
|
||||||
func json(data) -> void: # data: Variant
|
func json(data: Variant) -> void:
|
||||||
header("content-type", "application/json")
|
header("content-type", "application/json")
|
||||||
__data = data
|
__data = data
|
||||||
|
|
||||||
@ -32,6 +33,10 @@ func status(status: int) -> void:
|
|||||||
__status = status
|
__status = status
|
||||||
|
|
||||||
|
|
||||||
|
func type(type: MimeTypeHelper.MimeType) -> void:
|
||||||
|
__type = type
|
||||||
|
|
||||||
|
|
||||||
func to_utf8_buffer() -> PackedByteArray:
|
func to_utf8_buffer() -> PackedByteArray:
|
||||||
var content = PackedStringArray()
|
var content = PackedStringArray()
|
||||||
|
|
||||||
@ -55,3 +60,49 @@ func to_utf8_buffer() -> PackedByteArray:
|
|||||||
content.append(data)
|
content.append(data)
|
||||||
|
|
||||||
return "\r\n".join(content).to_utf8_buffer()
|
return "\r\n".join(content).to_utf8_buffer()
|
||||||
|
|
||||||
|
|
||||||
|
func get_data() -> PackedByteArray:
|
||||||
|
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 PackedByteArray
|
||||||
|
data = data.to_utf8()
|
||||||
|
|
||||||
|
res.append_array(data)
|
||||||
|
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
# Private methods
|
||||||
|
|
||||||
|
func __response_headers() -> PackedByteArray:
|
||||||
|
var res = PackedStringArray()
|
||||||
|
|
||||||
|
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")
|
||||||
|
var s = ("\r\n").join(res)
|
||||||
|
s = s + "\r\n"
|
||||||
|
|
||||||
|
return s.to_utf8_buffer()
|
||||||
|
Loading…
Reference in New Issue
Block a user