|
4 | 4 | import lombok.Getter; |
5 | 5 | import lombok.Setter; |
6 | 6 |
|
7 | | -import java.util.ArrayList; |
8 | 7 | import java.util.HashMap; |
9 | 8 | import java.util.List; |
10 | 9 | import java.util.Map; |
11 | | -import java.util.StringJoiner; |
12 | 10 |
|
13 | 11 | public class Request { |
14 | 12 | @Getter |
15 | 13 | private final HttpMethod method; |
16 | 14 | @Getter |
17 | | - private final String url; |
| 15 | + private final String endPoint; |
18 | 16 | @Getter |
19 | 17 | private final String domain; |
20 | 18 | @Getter |
21 | 19 | private String body; |
22 | 20 | @Getter |
23 | | - private Map<String, String> headers; |
| 21 | + private Map<String, String> headers = new HashMap<>(); |
| 22 | + @Getter |
| 23 | + private Map<String, String> queryParams = new HashMap<>(); |
| 24 | + @Getter |
| 25 | + private Map<String, String> pathParams = new HashMap<>(); |
24 | 26 | @Getter |
25 | 27 | @Setter |
26 | 28 | private String region; |
27 | 29 | @Getter |
28 | 30 | @Setter |
29 | 31 | private List<String> userAgentExtensions; |
| 32 | + |
| 33 | + @Getter |
| 34 | + private String url; |
| 35 | + public Request(HttpMethod method, String endPoint, String domain) { |
| 36 | + this.method = method; |
| 37 | + this.endPoint = endPoint; |
| 38 | + this.domain = domain; |
| 39 | + } |
30 | 40 |
|
31 | | - public void addHeader(String key, String value) { |
32 | | - if (value == null || value.equals("null") || key == null) return; |
| 41 | + public void addPathParam(String key, String value) { |
| 42 | + pathParams.put(key, value); |
| 43 | + } |
| 44 | + |
| 45 | + public void addHeaderParam(String key, String value) { |
33 | 46 | headers.put(key, value); |
34 | 47 | } |
35 | | - |
36 | | - private Request(Builder builder) { |
37 | | - this.method = builder.method; |
38 | | - this.domain = builder.domain; |
39 | | - this.region = builder.region; |
40 | | - this.body = builder.body; |
41 | | - this.headers = builder.headers; |
42 | 48 |
|
43 | | - String baseUrl = Utility.buildBaseUrl(domain, region, builder.endPoint); |
44 | | - baseUrl = Utility.buildWithPathParams(baseUrl, builder.pathParams); |
45 | | - baseUrl = Utility.buildWithQueryParams(baseUrl, builder.queryParams); |
| 49 | + public void addQueryParam(String key, String value) { |
| 50 | + queryParams.put(key, value); |
| 51 | + } |
| 52 | + |
| 53 | + public void addBody(String body) { |
| 54 | + this.body = body; |
| 55 | + } |
| 56 | + |
| 57 | + public void buildUrl() { |
| 58 | + String baseUrl = Utility.buildBaseUrl(domain, region, endPoint); |
| 59 | + baseUrl = Utility.buildWithPathParams(baseUrl, pathParams); |
| 60 | + baseUrl = Utility.buildWithQueryParams(baseUrl, queryParams); |
46 | 61 | this.url = baseUrl; |
47 | 62 | } |
48 | 63 |
|
49 | | - public static class Builder { |
50 | | - private String endPoint; |
51 | | - private HttpMethod method; |
52 | | - private String domain; |
53 | | - private String region; |
54 | | - private Map<String, String> headers = new HashMap<>(); |
55 | | - private Map<String, String> queryParams = new HashMap<>(); |
56 | | - private Map<String, String> pathParams = new HashMap<>(); |
57 | | - private String body; |
58 | | - |
59 | | - public Builder(HttpMethod method, String endPoint, String domain) { |
60 | | - this.method = method; |
61 | | - this.endPoint = endPoint; |
62 | | - this.domain = domain; |
63 | | - } |
64 | | - |
65 | | - public Builder addPathParam(String key, String value) { |
66 | | - this.pathParams.put(key, value); |
67 | | - return this; |
68 | | - } |
69 | | - |
70 | | - public Builder addHeaderParam(String key, String value) { |
71 | | - headers.put(key, value); |
72 | | - return this; |
73 | | - } |
74 | | - |
75 | | - /* |
76 | | - * Sendgrid follows Resource Query Language(RQL) for Query parameters instead of following standard query parameters. |
77 | | - * limit: If limit occurs as query param in open api spec |
78 | | - * offset: If offset occurs as query param in open api spec |
79 | | - * query: If there is query parameter apart from limit and offset. |
80 | | - * It will be the responsibility of the client to build a compound query and pass it as a query parameter in the query field. |
81 | | - */ |
82 | | - public Builder addQueryParam(String key, String value) { |
83 | | - queryParams.put(key, value); |
84 | | - return this; |
85 | | - } |
86 | | - |
87 | | - public Builder addBody(String body) { |
88 | | - this.body = body; |
89 | | - return this; |
90 | | - } |
91 | | - |
92 | | - public Builder region(String region) { |
93 | | - this.region = region; |
94 | | - return this; |
95 | | - } |
96 | | - |
97 | | - public Request build() { |
98 | | - return new Request(this); |
99 | | - } |
| 64 | + public void buildUrl(final String url) { |
| 65 | + this.url = url; |
100 | 66 | } |
101 | 67 |
|
102 | | - |
103 | 68 | } |
0 commit comments