From 7cf9870bd10663b6706258bc82a47f2f3038f4ba Mon Sep 17 00:00:00 2001 From: windard Date: Fri, 8 May 2020 12:43:18 +0800 Subject: [PATCH 1/4] add java async http client Change-Id: Ic28431ae73b499e929545f95d746b1606fd639f3 --- src/targets/java/asynchttp.js | 53 +++++++++++++++++++++++++++++++++++ src/targets/java/index.js | 4 ++- 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/targets/java/asynchttp.js diff --git a/src/targets/java/asynchttp.js b/src/targets/java/asynchttp.js new file mode 100644 index 000000000..b97d9dae8 --- /dev/null +++ b/src/targets/java/asynchttp.js @@ -0,0 +1,53 @@ +/** + * @description + * Asynchronous Http and WebSocket Client library for Java + * + * @author + * @windard + * + * for any questions or issues regarding the generated code snippet, please open an issue mentioning the author. + */ + +'use strict' + +var CodeBuilder = require('../../helpers/code-builder') + +module.exports = function (source, options) { + var opts = Object.assign({ + indent: ' ' + }, options) + + var code = new CodeBuilder(opts.indent) + + var methods = [ 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'TRACE', 'CONNECT' ] + + code.push('Dsl.asyncHttpClient().prepare%s%s(%s)', source.method.slice(0,1).toUpperCase(), source.method.slice(1).toLowerCase(), source.fullUrl) + + // Add headers, including the cookies + var headers = Object.keys(source.allHeaders) + + // construct headers + if (headers.length) { + headers.forEach(function (key) { + code.push(1, '.setHeader("%s", "%s")', key, source.allHeaders[key]) + }) + } + + if (source.postData.text) { + code.push(1, '.setBody(%s)', JSON.stringify(source.postData.text)) + } + + code.push(1, '.execute()') + code.push(1, '.toCompletableFuture()') + code.push(1, '.thenAccept(System.out::println)') + code.push(1, '.join();') + + return code.join() +} + +module.exports.info = { + key: 'asynchttp', + title: 'AsyncHttp', + link: 'https://github.com/AsyncHttpClient/async-http-client', + description: 'Asynchronous Http and WebSocket Client library for Java' +} diff --git a/src/targets/java/index.js b/src/targets/java/index.js index 2d13eefa1..68ff352e2 100644 --- a/src/targets/java/index.js +++ b/src/targets/java/index.js @@ -9,5 +9,7 @@ module.exports = { }, okhttp: require('./okhttp'), - unirest: require('./unirest') + unirest: require('./unirest'), + asynchttp: require('./asynchttp'), + } From 34463eebd160f50355e8aed1e8233f3a231ae025 Mon Sep 17 00:00:00 2001 From: windard Date: Fri, 8 May 2020 12:48:20 +0800 Subject: [PATCH 2/4] fix double quote Change-Id: I7a8d4aa4cfd96159886436b89fc73096c9e740c5 --- src/targets/java/asynchttp.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/targets/java/asynchttp.js b/src/targets/java/asynchttp.js index b97d9dae8..0a692d79f 100644 --- a/src/targets/java/asynchttp.js +++ b/src/targets/java/asynchttp.js @@ -21,7 +21,9 @@ module.exports = function (source, options) { var methods = [ 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'TRACE', 'CONNECT' ] - code.push('Dsl.asyncHttpClient().prepare%s%s(%s)', source.method.slice(0,1).toUpperCase(), source.method.slice(1).toLowerCase(), source.fullUrl) + code.push('Dsl.asyncHttpClient()') + + code.push(1, '.prepare%s%s("%s")', source.method.slice(0,1).toUpperCase(), source.method.slice(1).toLowerCase(), source.fullUrl) // Add headers, including the cookies var headers = Object.keys(source.allHeaders) From f3333d0c73c9934d587e1e57bb832d699692941a Mon Sep 17 00:00:00 2001 From: windard Date: Fri, 8 May 2020 13:00:06 +0800 Subject: [PATCH 3/4] fixture tests Change-Id: I355747450a1b47dc356ed97ba3da3c4b48ea6adc --- .../java/asynchttp/application-form-encoded.java | 8 ++++++++ .../output/java/asynchttp/application-json.java | 8 ++++++++ test/fixtures/output/java/asynchttp/cookies.java | 7 +++++++ test/fixtures/output/java/asynchttp/custom-method.java | 6 ++++++ test/fixtures/output/java/asynchttp/full.java | 10 ++++++++++ test/fixtures/output/java/asynchttp/headers.java | 8 ++++++++ test/fixtures/output/java/asynchttp/https.java | 6 ++++++ .../output/java/asynchttp/jsonObj-multiline.java | 8 ++++++++ .../output/java/asynchttp/jsonObj-null-value.java | 8 ++++++++ .../fixtures/output/java/asynchttp/multipart-data.java | 8 ++++++++ .../fixtures/output/java/asynchttp/multipart-file.java | 8 ++++++++ .../output/java/asynchttp/multipart-form-data.java | 8 ++++++++ test/fixtures/output/java/asynchttp/query.java | 6 ++++++ test/fixtures/output/java/asynchttp/short.java | 6 ++++++ test/fixtures/output/java/asynchttp/text-plain.java | 8 ++++++++ test/targets/java/asynchttp.js | 5 +++++ 16 files changed, 118 insertions(+) create mode 100644 test/fixtures/output/java/asynchttp/application-form-encoded.java create mode 100644 test/fixtures/output/java/asynchttp/application-json.java create mode 100644 test/fixtures/output/java/asynchttp/cookies.java create mode 100644 test/fixtures/output/java/asynchttp/custom-method.java create mode 100644 test/fixtures/output/java/asynchttp/full.java create mode 100644 test/fixtures/output/java/asynchttp/headers.java create mode 100644 test/fixtures/output/java/asynchttp/https.java create mode 100644 test/fixtures/output/java/asynchttp/jsonObj-multiline.java create mode 100644 test/fixtures/output/java/asynchttp/jsonObj-null-value.java create mode 100644 test/fixtures/output/java/asynchttp/multipart-data.java create mode 100644 test/fixtures/output/java/asynchttp/multipart-file.java create mode 100644 test/fixtures/output/java/asynchttp/multipart-form-data.java create mode 100644 test/fixtures/output/java/asynchttp/query.java create mode 100644 test/fixtures/output/java/asynchttp/short.java create mode 100644 test/fixtures/output/java/asynchttp/text-plain.java create mode 100644 test/targets/java/asynchttp.js diff --git a/test/fixtures/output/java/asynchttp/application-form-encoded.java b/test/fixtures/output/java/asynchttp/application-form-encoded.java new file mode 100644 index 000000000..4b31cf939 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/application-form-encoded.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "application/x-www-form-urlencoded") + .setBody("foo=bar&hello=world") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/application-json.java b/test/fixtures/output/java/asynchttp/application-json.java new file mode 100644 index 000000000..33fe3cbba --- /dev/null +++ b/test/fixtures/output/java/asynchttp/application-json.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "application/json") + .setBody("{\"number\":1,\"string\":\"f\\\"oo\",\"arr\":[1,2,3],\"nested\":{\"a\":\"b\"},\"arr_mix\":[1,\"a\",{\"arr_mix_nested\":{}}],\"boolean\":false}") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/cookies.java b/test/fixtures/output/java/asynchttp/cookies.java new file mode 100644 index 000000000..c4a255010 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/cookies.java @@ -0,0 +1,7 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("cookie", "foo=bar; bar=baz") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/custom-method.java b/test/fixtures/output/java/asynchttp/custom-method.java new file mode 100644 index 000000000..a28bfe827 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/custom-method.java @@ -0,0 +1,6 @@ +Dsl.asyncHttpClient() + .preparePropfind("http://mockbin.com/har") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/full.java b/test/fixtures/output/java/asynchttp/full.java new file mode 100644 index 000000000..04fb0ae51 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/full.java @@ -0,0 +1,10 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har?foo=bar&foo=baz&baz=abc&key=value") + .setHeader("cookie", "foo=bar; bar=baz") + .setHeader("accept", "application/json") + .setHeader("content-type", "application/x-www-form-urlencoded") + .setBody("foo=bar") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/headers.java b/test/fixtures/output/java/asynchttp/headers.java new file mode 100644 index 000000000..ef90dabfe --- /dev/null +++ b/test/fixtures/output/java/asynchttp/headers.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .prepareGet("http://mockbin.com/har") + .setHeader("accept", "application/json") + .setHeader("x-foo", "Bar") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/https.java b/test/fixtures/output/java/asynchttp/https.java new file mode 100644 index 000000000..ccbb20ddc --- /dev/null +++ b/test/fixtures/output/java/asynchttp/https.java @@ -0,0 +1,6 @@ +Dsl.asyncHttpClient() + .prepareGet("https://mockbin.com/har") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/jsonObj-multiline.java b/test/fixtures/output/java/asynchttp/jsonObj-multiline.java new file mode 100644 index 000000000..6a44f1025 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/jsonObj-multiline.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "application/json") + .setBody("{\n \"foo\": \"bar\"\n}") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/jsonObj-null-value.java b/test/fixtures/output/java/asynchttp/jsonObj-null-value.java new file mode 100644 index 000000000..96882a226 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/jsonObj-null-value.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "application/json") + .setBody("{\"foo\":null}") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/multipart-data.java b/test/fixtures/output/java/asynchttp/multipart-data.java new file mode 100644 index 000000000..51e61cc92 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/multipart-data.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001") + .setBody("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"foo\"; filename=\"hello.txt\"\r\nContent-Type: text/plain\r\n\r\nHello World\r\n-----011000010111000001101001--\r\n") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/multipart-file.java b/test/fixtures/output/java/asynchttp/multipart-file.java new file mode 100644 index 000000000..c75ebb86d --- /dev/null +++ b/test/fixtures/output/java/asynchttp/multipart-file.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001") + .setBody("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"foo\"; filename=\"hello.txt\"\r\nContent-Type: text/plain\r\n\r\n\r\n-----011000010111000001101001--\r\n") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/multipart-form-data.java b/test/fixtures/output/java/asynchttp/multipart-form-data.java new file mode 100644 index 000000000..946d2c308 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/multipart-form-data.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "multipart/form-data; boundary=---011000010111000001101001") + .setBody("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"foo\"\r\n\r\nbar\r\n-----011000010111000001101001--\r\n") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/query.java b/test/fixtures/output/java/asynchttp/query.java new file mode 100644 index 000000000..8c7cb3810 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/query.java @@ -0,0 +1,6 @@ +Dsl.asyncHttpClient() + .prepareGet("http://mockbin.com/har?foo=bar&foo=baz&baz=abc&key=value") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/short.java b/test/fixtures/output/java/asynchttp/short.java new file mode 100644 index 000000000..7863d0ba1 --- /dev/null +++ b/test/fixtures/output/java/asynchttp/short.java @@ -0,0 +1,6 @@ +Dsl.asyncHttpClient() + .prepareGet("http://mockbin.com/har") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/fixtures/output/java/asynchttp/text-plain.java b/test/fixtures/output/java/asynchttp/text-plain.java new file mode 100644 index 000000000..8556905af --- /dev/null +++ b/test/fixtures/output/java/asynchttp/text-plain.java @@ -0,0 +1,8 @@ +Dsl.asyncHttpClient() + .preparePost("http://mockbin.com/har") + .setHeader("content-type", "text/plain") + .setBody("Hello World") + .execute() + .toCompletableFuture() + .thenAccept(System.out::println) + .join(); diff --git a/test/targets/java/asynchttp.js b/test/targets/java/asynchttp.js new file mode 100644 index 000000000..9ad8c1790 --- /dev/null +++ b/test/targets/java/asynchttp.js @@ -0,0 +1,5 @@ +'use strict' + +require('should') + +module.exports = function (snippet, fixtures) {} From 0fe2422e99e0f33a25433f007fbf6b0d27c2e023 Mon Sep 17 00:00:00 2001 From: windard Date: Fri, 8 May 2020 13:04:56 +0800 Subject: [PATCH 4/4] fix travis ci Change-Id: I88295b5adf157420052793c94b74dbdcb1abdaf3 --- src/targets/java/asynchttp.js | 6 +++--- src/targets/java/index.js | 2 +- test/fixtures/available-targets.json | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/targets/java/asynchttp.js b/src/targets/java/asynchttp.js index 0a692d79f..b3c1b9455 100644 --- a/src/targets/java/asynchttp.js +++ b/src/targets/java/asynchttp.js @@ -1,7 +1,7 @@ /** * @description * Asynchronous Http and WebSocket Client library for Java - * + * * @author * @windard * @@ -19,11 +19,11 @@ module.exports = function (source, options) { var code = new CodeBuilder(opts.indent) - var methods = [ 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'TRACE', 'CONNECT' ] + // var methods = [ 'GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'HEAD', 'OPTIONS', 'TRACE', 'CONNECT' ] code.push('Dsl.asyncHttpClient()') - code.push(1, '.prepare%s%s("%s")', source.method.slice(0,1).toUpperCase(), source.method.slice(1).toLowerCase(), source.fullUrl) + code.push(1, '.prepare%s%s("%s")', source.method.slice(0, 1).toUpperCase(), source.method.slice(1).toLowerCase(), source.fullUrl) // Add headers, including the cookies var headers = Object.keys(source.allHeaders) diff --git a/src/targets/java/index.js b/src/targets/java/index.js index 68ff352e2..7efd9a989 100644 --- a/src/targets/java/index.js +++ b/src/targets/java/index.js @@ -10,6 +10,6 @@ module.exports = { okhttp: require('./okhttp'), unirest: require('./unirest'), - asynchttp: require('./asynchttp'), + asynchttp: require('./asynchttp') } diff --git a/test/fixtures/available-targets.json b/test/fixtures/available-targets.json index ac987596a..ce59a15b1 100644 --- a/test/fixtures/available-targets.json +++ b/test/fixtures/available-targets.json @@ -196,6 +196,12 @@ "title": "Unirest", "link": "http://unirest.io/java.html", "description": "Lightweight HTTP Request Client Library" + }, + { + "key": "asynchttp", + "title": "AsyncHttp", + "link": "https://github.com/AsyncHttpClient/async-http-client", + "description": "Asynchronous Http and WebSocket Client library for Java" } ] },