From 83d0a84a6d5da716e272e2310814c5197aaf9ece Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sat, 18 Jun 2022 21:53:05 +0900 Subject: [PATCH 01/11] =?UTF-8?q?=E3=81=A8=E3=82=8A=E3=81=82=E3=81=88?= =?UTF-8?q?=E3=81=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 01b8fd05f..36dc9ee25 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -30,6 +30,23 @@ export function createAiScriptEnv(opts) { const res = await os.api(ep.value, utils.valToJs(param), token ? token.value : (opts.token || null)); return utils.jsToVal(res); }), + 'Mk:restApi': values.FN_NATIVE(async ([url, method, body, headers]) => { + utils.assertString(url); + utils.assertString(method); + utils.assertString(body); + utils.assertObject(headers); + + const typedHeaders = new Headers(); + headers.value.forEach((value, key) => { + typedHeaders.set(key, utils.valToString(value)); + }); + const response = await fetch(url.value, { + method: method.value, + headers: typedHeaders, + body: body.value, + }); + return utils.jsToVal(response.json()); + }), 'Mk:save': values.FN_NATIVE(([key, value]) => { utils.assertString(key); localStorage.setItem('aiscript:' + opts.storageKey + ':' + key.value, JSON.stringify(utils.valToJs(value))); From 8bc8f5551cd731c4db6615e30eba435c1b754fe8 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 00:27:06 +0900 Subject: [PATCH 02/11] add response parser --- packages/client/src/scripts/aiscript/api.ts | 44 ++++++++++++++------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 36dc9ee25..66aac9986 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -31,21 +31,37 @@ export function createAiScriptEnv(opts) { return utils.jsToVal(res); }), 'Mk:restApi': values.FN_NATIVE(async ([url, method, body, headers]) => { + const init: {method?: string, body?: string, headers?: Headers} = new Object(); utils.assertString(url); - utils.assertString(method); - utils.assertString(body); - utils.assertObject(headers); - - const typedHeaders = new Headers(); - headers.value.forEach((value, key) => { - typedHeaders.set(key, utils.valToString(value)); - }); - const response = await fetch(url.value, { - method: method.value, - headers: typedHeaders, - body: body.value, - }); - return utils.jsToVal(response.json()); + if (method) { + utils.assertString(method); + init.method = method.value; + } + if (body) { + utils.assertString(body); + init.body = body.value; + } + if (headers) { + utils.assertObject(headers); + const typedHeaders = new Headers(); + headers.value.forEach((value, key) => { + typedHeaders.set(key, utils.valToString(value)); + }); + init.headers = typedHeaders; + } + const response = await fetch(url.value, init); + const contentType = response.headers.get('Content-Type'); + if (contentType === null) { + return utils.jsToVal(await response.text()); + } + if (contentType.includes('application/json')) { + return utils.jsToVal(await response.json()); + } + if (contentType.includes('application/xml') || contentType.includes('text/xml')) { + const parser = new DOMParser(); + return utils.jsToVal(parser.parseFromString((await response.text()), 'application/xml')); + } + return utils.jsToVal(await response.text()); }), 'Mk:save': values.FN_NATIVE(([key, value]) => { utils.assertString(key); From 6085ae1b87e31667bd4a5f117687b9d35b6bf9c3 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 00:28:55 +0900 Subject: [PATCH 03/11] =?UTF-8?q?=E4=B8=8B=E3=81=AB=E7=A7=BB=E5=8B=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 66aac9986..526628aa3 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -30,6 +30,15 @@ export function createAiScriptEnv(opts) { const res = await os.api(ep.value, utils.valToJs(param), token ? token.value : (opts.token || null)); return utils.jsToVal(res); }), + 'Mk:save': values.FN_NATIVE(([key, value]) => { + utils.assertString(key); + localStorage.setItem('aiscript:' + opts.storageKey + ':' + key.value, JSON.stringify(utils.valToJs(value))); + return values.NULL; + }), + 'Mk:load': values.FN_NATIVE(([key]) => { + utils.assertString(key); + return utils.jsToVal(JSON.parse(localStorage.getItem('aiscript:' + opts.storageKey + ':' + key.value))); + }), 'Mk:restApi': values.FN_NATIVE(async ([url, method, body, headers]) => { const init: {method?: string, body?: string, headers?: Headers} = new Object(); utils.assertString(url); @@ -63,14 +72,5 @@ export function createAiScriptEnv(opts) { } return utils.jsToVal(await response.text()); }), - 'Mk:save': values.FN_NATIVE(([key, value]) => { - utils.assertString(key); - localStorage.setItem('aiscript:' + opts.storageKey + ':' + key.value, JSON.stringify(utils.valToJs(value))); - return values.NULL; - }), - 'Mk:load': values.FN_NATIVE(([key]) => { - utils.assertString(key); - return utils.jsToVal(JSON.parse(localStorage.getItem('aiscript:' + opts.storageKey + ':' + key.value))); - }), }; } From fbe42927df108600dbeb4ac4a851b49410d5b56b Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 00:29:58 +0900 Subject: [PATCH 04/11] =?UTF-8?q?=E3=81=8A=E3=81=93=E3=81=8C=E3=81=BE?= =?UTF-8?q?=E3=81=97=E3=81=84=E5=90=8D=E5=89=8D=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 526628aa3..1185a9fd3 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -39,7 +39,7 @@ export function createAiScriptEnv(opts) { utils.assertString(key); return utils.jsToVal(JSON.parse(localStorage.getItem('aiscript:' + opts.storageKey + ':' + key.value))); }), - 'Mk:restApi': values.FN_NATIVE(async ([url, method, body, headers]) => { + 'Mk:fetch': values.FN_NATIVE(async ([url, method, body, headers]) => { const init: {method?: string, body?: string, headers?: Headers} = new Object(); utils.assertString(url); if (method) { From 16717567b7fc5e2e955598eea6e8dd12e6dee247 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 00:36:55 +0900 Subject: [PATCH 05/11] format, add comments --- packages/client/src/scripts/aiscript/api.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 1185a9fd3..d930cb9b5 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -58,7 +58,10 @@ export function createAiScriptEnv(opts) { }); init.headers = typedHeaders; } + const response = await fetch(url.value, init); + + // Parsing Section const contentType = response.headers.get('Content-Type'); if (contentType === null) { return utils.jsToVal(await response.text()); @@ -70,6 +73,7 @@ export function createAiScriptEnv(opts) { const parser = new DOMParser(); return utils.jsToVal(parser.parseFromString((await response.text()), 'application/xml')); } + // Content-Type不明 return utils.jsToVal(await response.text()); }), }; From 3fbfd1a1459c17b50e00fce4345d25c118794ec7 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 04:25:28 +0900 Subject: [PATCH 06/11] =?UTF-8?q?Content-Type=E3=81=AE=E5=88=A4=E5=AE=9A?= =?UTF-8?q?=E3=82=92=E3=82=86=E3=82=8B=E3=81=B5=E3=82=8F=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index d930cb9b5..cc309ab4f 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -66,10 +66,10 @@ export function createAiScriptEnv(opts) { if (contentType === null) { return utils.jsToVal(await response.text()); } - if (contentType.includes('application/json')) { + if (contentType.includes('json')) { return utils.jsToVal(await response.json()); } - if (contentType.includes('application/xml') || contentType.includes('text/xml')) { + if (contentType.includes('xml')) { const parser = new DOMParser(); return utils.jsToVal(parser.parseFromString((await response.text()), 'application/xml')); } From b7f2b6c322141e788643ed1bad9eb376ea000b20 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 20:52:46 +0900 Subject: [PATCH 07/11] =?UTF-8?q?=E3=82=AA=E3=83=97=E3=82=B7=E3=83=A7?= =?UTF-8?q?=E3=83=B3=E3=82=92=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF?= =?UTF-8?q?=E3=83=88=E3=81=A7=E5=8F=97=E3=81=91=E3=82=8B=E3=82=88=E3=81=86?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 31 +++++++-------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index cc309ab4f..784f60bbe 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -39,27 +39,16 @@ export function createAiScriptEnv(opts) { utils.assertString(key); return utils.jsToVal(JSON.parse(localStorage.getItem('aiscript:' + opts.storageKey + ':' + key.value))); }), - 'Mk:fetch': values.FN_NATIVE(async ([url, method, body, headers]) => { - const init: {method?: string, body?: string, headers?: Headers} = new Object(); - utils.assertString(url); - if (method) { - utils.assertString(method); - init.method = method.value; - } - if (body) { - utils.assertString(body); - init.body = body.value; - } - if (headers) { - utils.assertObject(headers); - const typedHeaders = new Headers(); - headers.value.forEach((value, key) => { - typedHeaders.set(key, utils.valToString(value)); - }); - init.headers = typedHeaders; - } - - const response = await fetch(url.value, init); + 'Mk:fetch': values.FN_NATIVE(async ([resource, init]) => { + utils.assertString(resource); + const response = await (async () => { + if (init) { + utils.assertObject(init); + return await fetch(resource.value, utils.valToJs(init)); + } else { + return await fetch(resource.value); + } + })(); // Parsing Section const contentType = response.headers.get('Content-Type'); From 20c0b2bedf5f26a0da8c587bee2b2b1bef4b4c04 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 21:17:36 +0900 Subject: [PATCH 08/11] remove parsing function --- packages/client/src/scripts/aiscript/api.ts | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 784f60bbe..3739c7c8f 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -49,20 +49,6 @@ export function createAiScriptEnv(opts) { return await fetch(resource.value); } })(); - - // Parsing Section - const contentType = response.headers.get('Content-Type'); - if (contentType === null) { - return utils.jsToVal(await response.text()); - } - if (contentType.includes('json')) { - return utils.jsToVal(await response.json()); - } - if (contentType.includes('xml')) { - const parser = new DOMParser(); - return utils.jsToVal(parser.parseFromString((await response.text()), 'application/xml')); - } - // Content-Type不明 return utils.jsToVal(await response.text()); }), }; From 2adbc3c0c88d4997bcc52c8f229b974d744948c7 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 22:01:29 +0900 Subject: [PATCH 09/11] =?UTF-8?q?=E8=BF=94=E3=82=8A=E5=80=A4=E3=81=AB?= =?UTF-8?q?=E3=83=98=E3=83=83=E3=83=80=E3=83=BC=E3=82=82=E4=BB=98=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 3739c7c8f..8cd459151 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -49,7 +49,15 @@ export function createAiScriptEnv(opts) { return await fetch(resource.value); } })(); - return utils.jsToVal(await response.text()); + const returnObject = { + headers: new Object(), + body: await response.text(), + }; + response.headers.forEach((value, key) => { + returnObject.headers[key] = value; + }); + console.log(returnObject) + return utils.jsToVal(returnObject); }), }; } From 5042354ce0e4f6f1e2ff43a9681a2a1963e1be69 Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 22:08:30 +0900 Subject: [PATCH 10/11] =?UTF-8?q?=F0=9F=A7=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index 8cd459151..d8ae61f84 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -41,14 +41,7 @@ export function createAiScriptEnv(opts) { }), 'Mk:fetch': values.FN_NATIVE(async ([resource, init]) => { utils.assertString(resource); - const response = await (async () => { - if (init) { - utils.assertObject(init); - return await fetch(resource.value, utils.valToJs(init)); - } else { - return await fetch(resource.value); - } - })(); + const response = init ? await fetch(resource.value, utils.valToJs(init)) : await fetch(resource.value); const returnObject = { headers: new Object(), body: await response.text(), @@ -56,7 +49,6 @@ export function createAiScriptEnv(opts) { response.headers.forEach((value, key) => { returnObject.headers[key] = value; }); - console.log(returnObject) return utils.jsToVal(returnObject); }), }; From 4f9583724022b5158de6c8af3eef89c903c0695d Mon Sep 17 00:00:00 2001 From: ThinaticSystem Date: Sun, 19 Jun 2022 23:40:38 +0900 Subject: [PATCH 11/11] =?UTF-8?q?=E3=82=B9=E3=83=86=E3=83=BC=E3=82=BF?= =?UTF-8?q?=E3=82=B9=E3=82=B3=E3=83=BC=E3=83=89=E3=82=82=E8=BF=94=E3=81=99?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/scripts/aiscript/api.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/client/src/scripts/aiscript/api.ts b/packages/client/src/scripts/aiscript/api.ts index d8ae61f84..b59c699cd 100644 --- a/packages/client/src/scripts/aiscript/api.ts +++ b/packages/client/src/scripts/aiscript/api.ts @@ -43,6 +43,7 @@ export function createAiScriptEnv(opts) { utils.assertString(resource); const response = init ? await fetch(resource.value, utils.valToJs(init)) : await fetch(resource.value); const returnObject = { + status: response.status, headers: new Object(), body: await response.text(), };