Skip to content

telkomdev/Hunk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hunk

Java 11 Http client with simple taste

Maintainability

Usage

The Post class

public class Post {
    private Integer id;
    private Integer userId;
    private String title;
    private String body;


    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }
}

POST

public class App {

    public static void main(String[] args) throws InterruptedException, ExecutionException, IOException, URISyntaxException {

        Map<String, String> headers = new HashMap<>();
        headers.put(Hunk.CONTENT_TYPE, "application/json");

        Post p = new Post(1, 1, "Java 11", "The awesome of Java 11");

        Future<HttpResponse<byte[]>> future = Hunk.doAsync(Hunk.HttpMethod.POST,
                "https://jsonplaceholder.typicode.com/posts",
                headers, Hunk.ofJsonObject(p), 2);

        HttpResponse<byte[]> response = future.get();
        HttpHeaders respHeaders = response.headers();

        respHeaders.map().forEach((key, values) -> {
            System.out.println(key);
            System.out.println(values);
        });

        Post post = JsonUtil.jsonToData(Post.class, response.body());

        System.out.println(post);


    }
}

GET

public class App {

    public static void main(String[] args) throws InterruptedException, ExecutionException, IOException, URISyntaxException {

        Map<String, String> headers = new HashMap<>();
        headers.put(Hunk.CONTENT_TYPE, "application/json");
        headers.put(Hunk.ACCEPT, "application/json");

        Future<HttpResponse<byte[]>> future = Hunk.doAsync(Hunk.HttpMethod.GET,
                "https://jsonplaceholder.typicode.com/posts/1",
                headers, null, 2);

        HttpResponse<byte[]> response = future.get();
        HttpHeaders respHeaders = response.headers();

        respHeaders.map().forEach((key, values) -> {
            System.out.println(key);
            System.out.println(values);
        });

        Post post = JsonUtil.jsonToData(Post.class, response.body());

        System.out.println(post);


    }
}

GET from string

public class App {

    public static void main(String[] args) throws HunkMethodNotSupportedException,
            URISyntaxException, IOException, ExecutionException, InterruptedException {
        Map<String, String> headers = new HashMap<>();
        headers.put(Hunk.CONTENT_TYPE, "application/json");
        headers.put(Hunk.ACCEPT, "application/json");

        Future<HttpResponse<byte[]>> future = Hunk.doAsync(Hunk.HttpMethod.from("get"),
                "https://jsonplaceholder.typicode.com/posts/1",
                headers, null, 2);

        HttpResponse<byte[]> response = future.get();
        HttpHeaders respHeaders = response.headers();

        respHeaders.map().forEach((key, values) -> {
            System.out.println(key);
            System.out.println(values);
        });

        Post post = JsonUtil.jsonToData(Post.class, response.body());

        System.out.println(post.getTitle());
        System.out.println(post.getBody());


    }
}

Reactive feature with RxJava

public class Main {

    public static void main(String[] args) throws HunkMethodNotSupportedException,
            URISyntaxException, IOException, ExecutionException, InterruptedException {
        Map<String, String> headers = new HashMap<>();
        headers.put(Hunk.CONTENT_TYPE, "application/json");

        Observable<HttpResponse<byte[]>> resultObserver = Hunk.doAsyncReactive(Hunk.HttpMethod.from("get"),
                "https://jsonplaceholder.typicode.com/posts",
                headers, null, 0);

        resultObserver.subscribe(response -> {
            HttpHeaders respHeaders = response.headers();

            respHeaders.map().forEach((key, values) -> {
                System.out.println(key);
                System.out.println(values);
            });

            List<Post> posts = Arrays.asList(JsonUtil.jsonToData(Post[].class, response.body()));

            System.out.println(response.statusCode());
            for (Post post : posts) {
                System.out.println(post.getTitle());
            }
        }, throwable -> System.out.println(throwable.getMessage()));


    }
}

Releases

No releases published

Packages

No packages published

Languages