All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jonnymatts.jzonbie.model.AppRequestBuilder Maven / Gradle / Ivy

There is a newer version: 5.1.0
Show newest version
package com.jonnymatts.jzonbie.model;

import com.jonnymatts.jzonbie.model.content.BodyContent;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.jonnymatts.jzonbie.model.Cloner.cloneRequest;
import static com.jonnymatts.jzonbie.model.content.ArrayBodyContent.arrayBody;
import static com.jonnymatts.jzonbie.model.content.LiteralBodyContent.literalBody;
import static com.jonnymatts.jzonbie.model.content.ObjectBodyContent.objectBody;


public class AppRequestBuilder {
    private AppRequest request;

    public AppRequestBuilder(String method, String path) {
        this.request = new AppRequest();
        request.setPath(path);
        request.setMethod(method);
    }

    public AppRequest build() {
        return request;
    }

    public AppRequestBuilder withHeader(String name, String value) {
        request = cloneRequest(request);
        if(request.getHeaders() == null)
            request.setHeaders(new HashMap<>());
        request.getHeaders().put(name, value);
        return this;
    }

    public AppRequestBuilder withBody(Map body) {
        request = cloneRequest(request);
        request.setBody(objectBody(body));
        return this;
    }

    public AppRequestBuilder withBody(String body) {
        request = cloneRequest(request);
        request.setBody(literalBody(body));
        return this;
    }

    public AppRequestBuilder withBody(List body) {
        request = cloneRequest(request);
        request.setBody(arrayBody(body));
        return this;
    }

    public AppRequestBuilder withBody(Number body) {
        request = cloneRequest(request);
        request.setBody(literalBody(new BigDecimal(body.doubleValue())));
        return this;
    }

    public AppRequestBuilder withBody(BodyContent body) {
        request = cloneRequest(request);
        request.setBody(body);
        return this;
    }

    public AppRequestBuilder withQueryParam(String name, String value) {
        request = cloneRequest(request);
        Map> queryParams = request.getQueryParams();
        if (queryParams == null) {
            queryParams = new HashMap<>();
            request.setQueryParams(queryParams);
        }

        if (!queryParams.containsKey(name)) {
            queryParams.put(name, new ArrayList<>());
        }

        queryParams.get(name).add(value);

        return this;
    }

    public AppRequestBuilder withBasicAuth(String username, String password) {
        request = cloneRequest(request);
        request.setBasicAuth(username, password);
        return this;
    }

    public AppRequestBuilder accept(String contentType) {
        return withHeader("Accept", contentType);
    }

    public AppRequestBuilder contentType(String contentType) {
        return withHeader("Content-Type", contentType);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy