forked from joey/godottest
68 lines
1.8 KiB
GDScript
68 lines
1.8 KiB
GDScript
## recursive remove directory
|
|
static func rrm_dir(dir_path: String) -> Error:
|
|
var dir: DirAccess = DirAccess.open(dir_path)
|
|
if !dir:
|
|
return DirAccess.get_open_error()
|
|
|
|
var err: Error = dir.list_dir_begin()
|
|
if err != Error.OK:
|
|
return err
|
|
var file_name: String = dir.get_next()
|
|
while file_name != "":
|
|
err = Error.OK
|
|
if dir.current_is_dir():
|
|
err = rrm_dir(dir_path.path_join(file_name))
|
|
else:
|
|
err = dir.remove(file_name)
|
|
if err != Error.OK:
|
|
dir.list_dir_end()
|
|
return err
|
|
file_name = dir.get_next()
|
|
dir.list_dir_end()
|
|
dir = null
|
|
err = DirAccess.remove_absolute(dir_path)
|
|
if err != Error.OK:
|
|
return err
|
|
return Error.OK
|
|
|
|
|
|
class Downloader:
|
|
extends RefCounted
|
|
|
|
var result: int
|
|
var response_code: int
|
|
var headers: PackedStringArray
|
|
var body: PackedByteArray
|
|
|
|
var _http: HTTPRequest
|
|
var _sema: Semaphore
|
|
|
|
func _init(http: HTTPRequest) -> void:
|
|
self._http = http
|
|
self._sema = Semaphore.new()
|
|
|
|
func from_array(res_arr: Array):
|
|
self.result = res_arr[0]
|
|
self.response_code = res_arr[1]
|
|
self.headers = res_arr[2]
|
|
self.body = res_arr[3]
|
|
return self
|
|
|
|
# call on main thread
|
|
func request(uri: String) -> void:
|
|
var err: Error = self._http.request(uri)
|
|
if err != Error.OK:
|
|
self.from_array([err, 0, [], []])
|
|
self._sema.post()
|
|
return
|
|
var res: Array = await self._http.request_completed
|
|
self.from_array(res)
|
|
self._sema.post()
|
|
|
|
func await_request(uri: String) -> void:
|
|
self.request.bind(uri).call_deferred()
|
|
self.wait()
|
|
|
|
func wait() -> void:
|
|
self._sema.wait()
|