Skip to content

Commit 43c0ccc

Browse files
author
Roberto De Ioris
committed
improved http support
1 parent e8fffbe commit 43c0ccc

File tree

12 files changed

+75
-43
lines changed

12 files changed

+75
-43
lines changed

Source/UnrealEnginePython/Private/UEPyEditor.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,20 @@ PyObject *py_unreal_engine_import_asset(PyObject * self, PyObject * args) {
322322
return Py_None;
323323
}
324324

325+
326+
PyObject *py_unreal_engine_editor_tick(PyObject * self, PyObject * args) {
327+
float delta_seconds;
328+
PyObject *py_bool;
329+
if (!PyArg_ParseTuple(args, "fO:editor_tick", &delta_seconds, &py_bool)) {
330+
return NULL;
331+
}
332+
333+
GEditor->Tick(delta_seconds, PyObject_IsTrue(py_bool) ? true : false);
334+
335+
Py_INCREF(Py_None);
336+
return Py_None;
337+
}
338+
325339
PyObject *py_unreal_engine_message_dialog_open(PyObject * self, PyObject * args) {
326340

327341
if (!GEditor)

Source/UnrealEnginePython/Private/UEPyEditor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ PyObject *py_unreal_engine_get_assets_by_class(PyObject *, PyObject *);
2020
PyObject *py_unreal_engine_get_assets_by_filter(PyObject *, PyObject *, PyObject *);
2121
PyObject *py_unreal_engine_set_fbx_import_option(PyObject *, PyObject *);
2222

23+
PyObject *py_unreal_engine_editor_tick(PyObject *, PyObject *);
24+
2325
PyObject *py_unreal_engine_get_discovered_plugins(PyObject *, PyObject *);
2426
PyObject *py_unreal_engine_get_enabled_plugins(PyObject *, PyObject *);
2527
PyObject *py_unreal_engine_find_plugin(PyObject *, PyObject *);

Source/UnrealEnginePython/Private/UEPyEngine.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,19 @@ PyObject *py_unreal_engine_string_to_guid(PyObject * self, PyObject * args) {
317317
}
318318

319319
return PyErr_Format(PyExc_Exception, "unable to build FGuid");
320+
}
321+
322+
PyObject *py_unreal_engine_engine_tick(PyObject * self, PyObject * args) {
323+
float delta_seconds;
324+
PyObject *py_bool;
325+
if (!PyArg_ParseTuple(args, "fO:engine_tick", &delta_seconds, &py_bool)) {
326+
return NULL;
327+
}
320328

329+
GEngine->Tick(delta_seconds, PyObject_IsTrue(py_bool) ? true : false);
330+
331+
Py_INCREF(Py_None);
332+
return Py_None;
321333
}
322334

323335

Source/UnrealEnginePython/Private/UEPyEngine.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ PyObject *py_unreal_engine_load_enum(PyObject *, PyObject *);
2727

2828
PyObject *py_unreal_engine_string_to_guid(PyObject *, PyObject *);
2929

30+
PyObject *py_unreal_engine_engine_tick(PyObject *, PyObject *);
31+
3032
PyObject *py_unreal_engine_find_object(PyObject *, PyObject *);
3133

3234
PyObject *py_unreal_engine_all_classes(PyObject *, PyObject *);

Source/UnrealEnginePython/Private/UEPyIHttpBase.cpp

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ static PyObject *py_ue_ihttp_base_get_url_parameter(ue_PyIHttpBase *self, PyObje
4242
static PyObject *py_ue_ihttp_base_get_all_headers(ue_PyIHttpBase *self, PyObject * args) {
4343
TArray<FString> headers = self->http_base->GetAllHeaders();
4444
PyObject *py_headers = PyList_New(0);
45-
return PyUnicode_FromString(TCHAR_TO_UTF8(*self->http_base->GetContentType()));
4645
for (FString item : headers) {
4746
PyObject *py_header = PyUnicode_FromString(TCHAR_TO_UTF8(*item));
4847
PyList_Append(py_headers, py_header);
@@ -65,13 +64,8 @@ static PyMethodDef ue_PyIHttpBase_methods[] = {
6564

6665
static PyObject *ue_PyIHttpBase_str(ue_PyIHttpBase *self)
6766
{
68-
char *s = (char*)"";
69-
FString url = self->http_base->GetURL();
70-
if (!url.IsEmpty()) {
71-
s = TCHAR_TO_UTF8(*url);
72-
}
73-
return PyUnicode_FromFormat("<unreal_engine.IHttpBase {'url': '%s'}>",
74-
PyUnicode_FromString(s));
67+
return PyUnicode_FromFormat("<unreal_engine.IHttpBase '%p'>",
68+
self->http_base);
7569
}
7670

7771
PyTypeObject ue_PyIHttpBaseType = {

Source/UnrealEnginePython/Private/UEPyIHttpBase.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
typedef struct {
88
PyObject_HEAD
99
/* Type-specific fields go here. */
10-
TSharedRef<IHttpBase> http_base;
10+
IHttpBase *http_base;
1111
} ue_PyIHttpBase;
1212

1313

Source/UnrealEnginePython/Private/UEPyIHttpRequest.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11

22
#include "UnrealEnginePythonPrivatePCH.h"
33

4+
#include "Runtime/Online/HTTP/Public/HttpManager.h"
5+
46
static PyObject *py_ue_ihttp_request_set_verb(ue_PyIHttpRequest *self, PyObject * args) {
57

68
char *verb;
@@ -85,6 +87,8 @@ static PyObject *py_ue_ihttp_request_tick(ue_PyIHttpRequest *self, PyObject * ar
8587
return NULL;
8688
}
8789

90+
FHttpModule::Get().GetHttpManager().Tick(delta_seconds);
91+
8892
self->http_request->Tick(delta_seconds);
8993

9094
Py_INCREF(Py_None);
@@ -122,7 +126,7 @@ static PyObject *py_ue_ihttp_request_get_response(ue_PyIHttpRequest *self, PyObj
122126
if (!response.IsValid()) {
123127
return PyErr_Format(PyExc_Exception, "unable to retrieve IHttpResponse");
124128
}
125-
return py_ue_new_ihttp_response(response);
129+
return py_ue_new_ihttp_response(response.Get());
126130
}
127131

128132
static PyMethodDef ue_PyIHttpRequest_methods[] = {
@@ -145,13 +149,8 @@ static PyMethodDef ue_PyIHttpRequest_methods[] = {
145149

146150
static PyObject *ue_PyIHttpRequest_str(ue_PyIHttpRequest *self)
147151
{
148-
char *s = (char*)"";
149-
FString url = self->http_request->GetURL();
150-
if (!url.IsEmpty()) {
151-
s = TCHAR_TO_UTF8(*url);
152-
}
153-
return PyUnicode_FromFormat("<unreal_engine.IHttpRequest {'url': '%s'}>",
154-
PyUnicode_FromString(s));
152+
return PyUnicode_FromFormat("<unreal_engine.IHttpRequest '%p'>",
153+
self->http_request.Get());
155154
}
156155

157156
static PyTypeObject ue_PyIHttpRequestType = {
@@ -203,7 +202,7 @@ static int ue_py_ihttp_request_init(ue_PyIHttpRequest *self, PyObject *args, PyO
203202
self->http_request->SetURL(UTF8_TO_TCHAR(url));
204203
}
205204

206-
self->base.http_base = self->http_request;
205+
self->base.http_base = &self->http_request.Get();
207206
return 0;
208207
}
209208

Source/UnrealEnginePython/Private/UEPyIHttpRequest.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "Runtime/Online/HTTP/Public/Interfaces/IHttpRequest.h"
66
#include "Runtime/Online/HTTP/Public/HttpModule.h"
77

8+
89
struct ue_PyIHttpBaseType;
910

1011
typedef struct {

Source/UnrealEnginePython/Private/UEPyIHttpResponse.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,8 @@ static PyMethodDef ue_PyIHttpResponse_methods[] = {
2020

2121
static PyObject *ue_PyIHttpResponse_str(ue_PyIHttpResponse *self)
2222
{
23-
char *s = (char*)"";
24-
FString url = self->http_response->GetURL();
25-
if (!url.IsEmpty()) {
26-
s = TCHAR_TO_UTF8(*url);
27-
}
28-
return PyUnicode_FromFormat("<unreal_engine.IHttpResponse {'url': '%s'}>",
29-
PyUnicode_FromString(s));
23+
return PyUnicode_FromFormat("<unreal_engine.IHttpResponse '%p'>",
24+
self->http_response);
3025
}
3126

3227
static PyTypeObject ue_PyIHttpResponseType = {
@@ -74,10 +69,10 @@ void ue_python_init_ihttp_response(PyObject *ue_module) {
7469
PyModule_AddObject(ue_module, "IHttpResponse", (PyObject *)&ue_PyIHttpResponseType);
7570
}
7671

77-
PyObject *py_ue_new_ihttp_response(FHttpResponsePtr response) {
72+
PyObject *py_ue_new_ihttp_response(IHttpResponse *response) {
7873
ue_PyIHttpResponse *ret = (ue_PyIHttpResponse *)PyObject_New(ue_PyIHttpResponse, &ue_PyIHttpResponseType);
7974
ret->http_response = response;
80-
TSharedRef<IHttpBase> ref(response.Get());
81-
ret->base.http_base = ref;
75+
//TSharedRef<IHttpBase> ref(response);
76+
//ret->base.http_base = ref;
8277
return (PyObject *)ret;
8378
}

Source/UnrealEnginePython/Private/UEPyIHttpResponse.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ struct ue_PyIHttpBaseType;
1010
typedef struct {
1111
ue_PyIHttpBase base;
1212
/* Type-specific fields go here. */
13-
FHttpResponsePtr http_response;
13+
IHttpResponse *http_response;
1414
} ue_PyIHttpResponse;
1515

1616

1717
void ue_python_init_ihttp_response(PyObject *);
18-
PyObject *py_ue_new_ihttp_response(FHttpResponsePtr);
18+
PyObject *py_ue_new_ihttp_response(IHttpResponse *);

0 commit comments

Comments
 (0)