Skip to content

Commit

Permalink
chore: request modified
Browse files Browse the repository at this point in the history
  • Loading branch information
sbansla committed Jun 27, 2024
1 parent 99c4d98 commit 61e8d3b
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 69 deletions.
101 changes: 33 additions & 68 deletions src/main/java/com/sendgrid/http/Request.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,100 +4,65 @@
import lombok.Getter;
import lombok.Setter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringJoiner;

public class Request {
@Getter
private final HttpMethod method;
@Getter
private final String url;
private final String endPoint;
@Getter
private final String domain;
@Getter
private String body;
@Getter
private Map<String, String> headers;
private Map<String, String> headers = new HashMap<>();
@Getter
private Map<String, String> queryParams = new HashMap<>();
@Getter
private Map<String, String> pathParams = new HashMap<>();
@Getter
@Setter
private String region;
@Getter
@Setter
private List<String> userAgentExtensions;

@Getter
private String url;
public Request(HttpMethod method, String endPoint, String domain) {
this.method = method;
this.endPoint = endPoint;
this.domain = domain;
}

public void addHeader(String key, String value) {
if (value == null || value.equals("null") || key == null) return;
public void addPathParam(String key, String value) {
pathParams.put(key, value);
}

public void addHeaderParam(String key, String value) {
headers.put(key, value);
}

private Request(Builder builder) {
this.method = builder.method;
this.domain = builder.domain;
this.region = builder.region;
this.body = builder.body;
this.headers = builder.headers;

String baseUrl = Utility.buildBaseUrl(domain, region, builder.endPoint);
baseUrl = Utility.buildWithPathParams(baseUrl, builder.pathParams);
baseUrl = Utility.buildWithQueryParams(baseUrl, builder.queryParams);
public void addQueryParam(String key, String value) {
queryParams.put(key, value);
}

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

public void buildUrl() {
String baseUrl = Utility.buildBaseUrl(domain, region, endPoint);
baseUrl = Utility.buildWithPathParams(baseUrl, pathParams);
baseUrl = Utility.buildWithQueryParams(baseUrl, queryParams);
this.url = baseUrl;
}

public static class Builder {
private String endPoint;
private HttpMethod method;
private String domain;
private String region;
private Map<String, String> headers = new HashMap<>();
private Map<String, String> queryParams = new HashMap<>();
private Map<String, String> pathParams = new HashMap<>();
private String body;

public Builder(HttpMethod method, String endPoint, String domain) {
this.method = method;
this.endPoint = endPoint;
this.domain = domain;
}

public Builder addPathParam(String key, String value) {
this.pathParams.put(key, value);
return this;
}

public Builder addHeaderParam(String key, String value) {
headers.put(key, value);
return this;
}

/*
* Sendgrid follows Resource Query Language(RQL) for Query parameters instead of following standard query parameters.
* limit: If limit occurs as query param in open api spec
* offset: If offset occurs as query param in open api spec
* query: If there is query parameter apart from limit and offset.
* It will be the responsibility of the client to build a compound query and pass it as a query parameter in the query field.
*/
public Builder addQueryParam(String key, String value) {
queryParams.put(key, value);
return this;
}

public Builder addBody(String body) {
this.body = body;
return this;
}

public Builder region(String region) {
this.region = region;
return this;
}

public Request build() {
return new Request(this);
}
public void buildUrl(final String url) {
this.url = url;
}


}
2 changes: 1 addition & 1 deletion src/main/java/com/sendgrid/http/auth/TokenStrategy.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ public class TokenStrategy implements AuthStrategy {
private final String token;
@Override
public void applyAuth(Request request) {
request.addHeader("Authorization", "Bearer " + token);
request.addHeaderParam("Authorization", "Bearer " + token);
}
}

0 comments on commit 61e8d3b

Please sign in to comment.