mirror of https://github.com/arendst/Tasmota.git
Merge pull request #17339 from s-hadinger/berry_webclient_refactor_PUT
Berry refactor webclient POST/PUT/PATCH/DELETE
This commit is contained in:
commit
7f29840bb0
|
@ -405,9 +405,15 @@ extern "C" {
|
||||||
be_return(vm); /* return code */
|
be_return(vm); /* return code */
|
||||||
}
|
}
|
||||||
|
|
||||||
// wc.POST(string | bytes) -> httpCode:int
|
// Combined function for POST/PUT/PATCH/DELETE
|
||||||
int32_t wc_POST(struct bvm *vm);
|
enum {
|
||||||
int32_t wc_POST(struct bvm *vm) {
|
wc_POST_op,
|
||||||
|
wc_PUT_op,
|
||||||
|
wc_PATCH_op,
|
||||||
|
wc_DELETE_op
|
||||||
|
};
|
||||||
|
int32_t wc_PostPutPatchDelete(struct bvm *vm, int32_t op);
|
||||||
|
int32_t wc_PostPutPatchDelete(struct bvm *vm, int32_t op) {
|
||||||
int32_t argc = be_top(vm);
|
int32_t argc = be_top(vm);
|
||||||
if (argc >= 2 && (be_isstring(vm, 2) || be_isbytes(vm, 2))) {
|
if (argc >= 2 && (be_isstring(vm, 2) || be_isbytes(vm, 2))) {
|
||||||
HTTPClientLight * cl = wc_getclient(vm);
|
HTTPClientLight * cl = wc_getclient(vm);
|
||||||
|
@ -420,7 +426,22 @@ extern "C" {
|
||||||
buf = (const char*) be_tobytes(vm, 2, &buf_len);
|
buf = (const char*) be_tobytes(vm, 2, &buf_len);
|
||||||
}
|
}
|
||||||
uint32_t http_connect_time = millis();
|
uint32_t http_connect_time = millis();
|
||||||
int32_t httpCode = cl->POST((uint8_t*)buf, buf_len);
|
int32_t httpCode;
|
||||||
|
switch (op) {
|
||||||
|
case wc_PUT_op:
|
||||||
|
httpCode = cl->PUT((uint8_t*)buf, buf_len);
|
||||||
|
break;
|
||||||
|
case wc_PATCH_op:
|
||||||
|
httpCode = cl->PATCH((uint8_t*)buf, buf_len);
|
||||||
|
break;
|
||||||
|
case wc_DELETE_op:
|
||||||
|
httpCode = cl->DELETE((uint8_t*)buf, buf_len);
|
||||||
|
break;
|
||||||
|
case wc_POST_op:
|
||||||
|
default:
|
||||||
|
httpCode = cl->POST((uint8_t*)buf, buf_len);
|
||||||
|
break;
|
||||||
|
}
|
||||||
wc_errorCodeMessage(httpCode, http_connect_time);
|
wc_errorCodeMessage(httpCode, http_connect_time);
|
||||||
be_pushint(vm, httpCode);
|
be_pushint(vm, httpCode);
|
||||||
be_return(vm); /* return code */
|
be_return(vm); /* return code */
|
||||||
|
@ -428,73 +449,29 @@ extern "C" {
|
||||||
be_raise(vm, kTypeError, nullptr);
|
be_raise(vm, kTypeError, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// wc.POST(string | bytes) -> httpCode:int
|
||||||
|
int32_t wc_POST(struct bvm *vm);
|
||||||
|
int32_t wc_POST(struct bvm *vm) {
|
||||||
|
return wc_PostPutPatchDelete(vm, wc_POST_op);
|
||||||
|
}
|
||||||
|
|
||||||
// wc.PUT(string | bytes) -> httpCode:int
|
// wc.PUT(string | bytes) -> httpCode:int
|
||||||
int32_t wc_PUT(struct bvm *vm);
|
int32_t wc_PUT(struct bvm *vm);
|
||||||
int32_t wc_PUT(struct bvm *vm) {
|
int32_t wc_PUT(struct bvm *vm) {
|
||||||
int32_t argc = be_top(vm);
|
return wc_PostPutPatchDelete(vm, wc_PUT_op);
|
||||||
if (argc >= 2 && (be_isstring(vm, 2) || be_isbytes(vm, 2))) {
|
|
||||||
HTTPClientLight * cl = wc_getclient(vm);
|
|
||||||
const char * buf = nullptr;
|
|
||||||
size_t buf_len = 0;
|
|
||||||
if (be_isstring(vm, 2)) { // string
|
|
||||||
buf = be_tostring(vm, 2);
|
|
||||||
buf_len = strlen(buf);
|
|
||||||
} else { // bytes
|
|
||||||
buf = (const char*) be_tobytes(vm, 2, &buf_len);
|
|
||||||
}
|
|
||||||
uint32_t http_connect_time = millis();
|
|
||||||
int32_t httpCode = cl->PUT((uint8_t*)buf, buf_len);
|
|
||||||
wc_errorCodeMessage(httpCode, http_connect_time);
|
|
||||||
be_pushint(vm, httpCode);
|
|
||||||
be_return(vm); /* return code */
|
|
||||||
}
|
|
||||||
be_raise(vm, kTypeError, nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// wc.PATCH(string | bytes) -> httpCode:int
|
// wc.PATCH(string | bytes) -> httpCode:int
|
||||||
int32_t wc_PATCH(struct bvm *vm);
|
int32_t wc_PATCH(struct bvm *vm);
|
||||||
int32_t wc_PATCH(struct bvm *vm) {
|
int32_t wc_PATCH(struct bvm *vm) {
|
||||||
int32_t argc = be_top(vm);
|
return wc_PostPutPatchDelete(vm, wc_PATCH_op);
|
||||||
if (argc >= 2 && (be_isstring(vm, 2) || be_isbytes(vm, 2))) {
|
|
||||||
HTTPClientLight * cl = wc_getclient(vm);
|
|
||||||
const char * buf = nullptr;
|
|
||||||
size_t buf_len = 0;
|
|
||||||
if (be_isstring(vm, 2)) { // string
|
|
||||||
buf = be_tostring(vm, 2);
|
|
||||||
buf_len = strlen(buf);
|
|
||||||
} else { // bytes
|
|
||||||
buf = (const char*) be_tobytes(vm, 2, &buf_len);
|
|
||||||
}
|
|
||||||
uint32_t http_connect_time = millis();
|
|
||||||
int32_t httpCode = cl->PATCH((uint8_t*)buf, buf_len);
|
|
||||||
wc_errorCodeMessage(httpCode, http_connect_time);
|
|
||||||
be_pushint(vm, httpCode);
|
|
||||||
be_return(vm); /* return code */
|
|
||||||
}
|
|
||||||
be_raise(vm, kTypeError, nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// wc.DELETE(string | bytes) -> httpCode:int
|
// wc.DELETE(string | bytes) -> httpCode:int
|
||||||
int32_t wc_DELETE(struct bvm *vm);
|
int32_t wc_DELETE(struct bvm *vm);
|
||||||
int32_t wc_DELETE(struct bvm *vm) {
|
int32_t wc_DELETE(struct bvm *vm) {
|
||||||
int32_t argc = be_top(vm);
|
return wc_PostPutPatchDelete(vm, wc_DELETE_op);
|
||||||
if (argc >= 2 && (be_isstring(vm, 2) || be_isbytes(vm, 2))) {
|
|
||||||
HTTPClientLight * cl = wc_getclient(vm);
|
|
||||||
const char * buf = nullptr;
|
|
||||||
size_t buf_len = 0;
|
|
||||||
if (be_isstring(vm, 2)) { // string
|
|
||||||
buf = be_tostring(vm, 2);
|
|
||||||
buf_len = strlen(buf);
|
|
||||||
} else { // bytes
|
|
||||||
buf = (const char*) be_tobytes(vm, 2, &buf_len);
|
|
||||||
}
|
|
||||||
uint32_t http_connect_time = millis();
|
|
||||||
int32_t httpCode = cl->DELETE((uint8_t*)buf, buf_len);
|
|
||||||
wc_errorCodeMessage(httpCode, http_connect_time);
|
|
||||||
be_pushint(vm, httpCode);
|
|
||||||
be_return(vm); /* return code */
|
|
||||||
}
|
|
||||||
be_raise(vm, kTypeError, nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t wc_getstring(struct bvm *vm);
|
int32_t wc_getstring(struct bvm *vm);
|
||||||
|
|
Loading…
Reference in New Issue