|
3 | 3 | import br.com.elementalsource.mock.configuration.service.CaptureExecutor; |
4 | 4 | import br.com.elementalsource.mock.generic.model.Endpoint; |
5 | 5 | import br.com.elementalsource.mock.generic.model.Request; |
| 6 | +import br.com.elementalsource.mock.generic.repository.EndpointRepository; |
| 7 | +import br.com.elementalsource.mock.generic.service.GenericApiService; |
6 | 8 | import br.com.elementalsource.mock.infra.component.ExternalApi; |
7 | 9 | import br.com.elementalsource.mock.infra.component.JsonValueCompiler; |
8 | 10 | import br.com.elementalsource.mock.infra.property.ApiProperty; |
9 | | -import br.com.elementalsource.mock.generic.repository.EndpointRepository; |
10 | | -import br.com.elementalsource.mock.generic.service.GenericApiService; |
11 | 11 | import org.springframework.beans.factory.annotation.Autowired; |
12 | 12 | import org.springframework.beans.factory.annotation.Qualifier; |
13 | 13 | import org.springframework.http.HttpStatus; |
@@ -46,66 +46,50 @@ private Optional<Endpoint> getEndpoint(Request request) { |
46 | 46 | // TODO refatorar esse método |
47 | 47 | @Override |
48 | 48 | public Optional<ResponseEntity<String>> genericResponseEntity(Request request) { |
49 | | - final Endpoint endpointNotSafe = getEndpoint(request).orElse(null); |
50 | | - |
51 | | - final Optional<ResponseEntity<String>> apiResult; |
52 | | - |
53 | | - // TODO refatorar: esta no if porque estava dando problema ao colocar |
54 | | - // dentro do orElse() |
55 | | - if (endpointNotSafe == null) { |
56 | | - apiResult = externalApi.execute(request).map(r -> { |
57 | | - captureExecutor.execute(r, new Endpoint.Builder(request, r.getApiResult()).build()); |
58 | | - return r.getApiResult(); |
59 | | - }); |
60 | | - } else { |
61 | | - final String body = jsonValueCompiler.compile(endpointNotSafe.getResponse().getBody()); |
62 | | - apiResult = Optional.of( |
63 | | - new ResponseEntity<>(body, endpointNotSafe.getResponse().getHttpStatus().orElse(HttpStatus.OK))); |
64 | | - } |
65 | | - |
66 | | - return apiResult.map(responseEntity -> { |
67 | | - final ResponseEntity.BodyBuilder bodyBuilder = ResponseEntity.status(responseEntity.getStatusCode()); |
68 | | - |
69 | | - apiProperty.getDefaultHeaders().forEach(header -> { |
70 | | - final String headerName = header.getHeaderName(); |
71 | | - final String[] headerValues = header.getHeaderValues().stream().toArray(String[]::new); |
72 | | - bodyBuilder.header(headerName, headerValues); |
73 | | - }); |
74 | | - |
75 | | - return bodyBuilder.body(responseEntity.getBody()); |
76 | | - }); |
| 49 | + final Optional<ResponseEntity<String>> apiResult = getEndpoint(request). |
| 50 | + map(endpoint -> new ResponseEntity<>(jsonValueCompiler.compile(endpoint.getResponse().getBody()), endpoint.getResponse().getHttpStatus().orElse(HttpStatus.OK))). |
| 51 | + map(Optional::of). |
| 52 | + orElseGet(() -> externalApi.execute(request).map(r -> { |
| 53 | + captureExecutor.execute(r, new Endpoint.Builder(request, r.getApiResult()).build()); |
| 54 | + return r.getApiResult(); |
| 55 | + })); |
| 56 | + |
| 57 | + return apiResult. |
| 58 | + map(responseEntity -> { |
| 59 | + final ResponseEntity.BodyBuilder bodyBuilder = ResponseEntity.status(responseEntity.getStatusCode()); |
| 60 | + |
| 61 | + apiProperty.getDefaultHeaders().forEach(header -> { |
| 62 | + final String headerName = header.getHeaderName(); |
| 63 | + final String[] headerValues = header.getHeaderValues().toArray(new String[0]); |
| 64 | + bodyBuilder.header(headerName, headerValues); |
| 65 | + }); |
| 66 | + |
| 67 | + return bodyBuilder.body(responseEntity.getBody()); |
| 68 | + }); |
77 | 69 | } |
78 | 70 |
|
79 | 71 | @Override |
80 | 72 | public Optional<ResponseEntity<String>> genericResponseEntityGET(Request request, HttpServletRequest httpServletRequest) { |
81 | | - final Endpoint endpointNotSafe = getEndpoint(request).orElse(null); |
82 | | - |
83 | | - final Optional<ResponseEntity<String>> apiResult; |
84 | | - |
85 | | - // TODO refatorar: esta no if porque estava dando problema ao colocar |
86 | | - // dentro do orElse() |
87 | | - if (endpointNotSafe == null) { |
88 | | - apiResult = externalApi.okHttpClientRequest(httpServletRequest, request).map(r -> { |
89 | | - captureExecutor.execute(r, new Endpoint.Builder(request, r.getApiResult()).build()); |
90 | | - return r.getApiResult(); |
91 | | - }); |
92 | | - } else { |
93 | | - final String body = jsonValueCompiler.compile(endpointNotSafe.getResponse().getBody()); |
94 | | - apiResult = Optional.of( |
95 | | - new ResponseEntity<>(body, endpointNotSafe.getResponse().getHttpStatus().orElse(HttpStatus.OK))); |
96 | | - } |
97 | | - |
98 | | - return apiResult.map(responseEntity -> { |
99 | | - final ResponseEntity.BodyBuilder bodyBuilder = ResponseEntity.status(responseEntity.getStatusCode()); |
100 | | - |
101 | | - apiProperty.getDefaultHeaders().forEach(header -> { |
102 | | - final String headerName = header.getHeaderName(); |
103 | | - final String[] headerValues = header.getHeaderValues().stream().toArray(String[]::new); |
104 | | - bodyBuilder.header(headerName, headerValues); |
105 | | - }); |
106 | | - |
107 | | - return bodyBuilder.body(responseEntity.getBody()); |
108 | | - }); |
| 73 | + final Optional<ResponseEntity<String>> apiResult = getEndpoint(request). |
| 74 | + map(endpoint -> new ResponseEntity<>(jsonValueCompiler.compile(endpoint.getResponse().getBody()), endpoint.getResponse().getHttpStatus().orElse(HttpStatus.OK))). |
| 75 | + map(Optional::of). |
| 76 | + orElseGet(() -> externalApi.okHttpClientRequest(httpServletRequest, request).map(r -> { |
| 77 | + captureExecutor.execute(r, new Endpoint.Builder(request, r.getApiResult()).build()); |
| 78 | + return r.getApiResult(); |
| 79 | + })); |
| 80 | + |
| 81 | + return apiResult. |
| 82 | + map(responseEntity -> { |
| 83 | + final ResponseEntity.BodyBuilder bodyBuilder = ResponseEntity.status(responseEntity.getStatusCode()); |
| 84 | + |
| 85 | + apiProperty.getDefaultHeaders().forEach(header -> { |
| 86 | + final String headerName = header.getHeaderName(); |
| 87 | + final String[] headerValues = header.getHeaderValues().toArray(new String[0]); |
| 88 | + bodyBuilder.header(headerName, headerValues); |
| 89 | + }); |
| 90 | + |
| 91 | + return bodyBuilder.body(responseEntity.getBody()); |
| 92 | + }); |
109 | 93 | } |
110 | 94 |
|
111 | 95 | public Map<String, String> getHeaders(final HttpServletRequest request) { |
|
0 commit comments