Browse Source

Feature/rest client (added constructors and removed method resetPassword) (#2231)

* added methods from admin-controller, alarm-controller, asset-controller, audit-log-controller

* refactored rest client and added methods from auth controller

* added methods from component-descriptor-controller

* added methods from customer controller

* added methods from dashboard controller

* added methods from device controller

* refactored url pageLink params

* added methods from entity relation controller

* added methods from entity view controller

* refactored

* added methods from event controller

* added methods from rpc controller

* added methods from rule chain controller

* added methods from telemetry controller

* added methods from tenant controller

* added methods from user controller

* added methods from widgets bundle controller

* added methods from widget type controller

* created method refreshToken

* moved classes SecuritySettings, UserPasswordPolicy, ClaimRequest, UpdateMessage, to common module, and added "/api" to urls where this part was missing

* refactored

* added constructors

* removed method resetPassword

* removed method checkResetToken

* refactoring methods where the parameter is an array

* refactored
pull/2236/head
YevhenBondarenko 7 years ago
committed by Andrew Shvayka
parent
commit
327c4218d9
  1. 3
      application/src/main/java/org/thingsboard/server/controller/EventController.java
  2. 46
      tools/src/main/java/org/thingsboard/client/tools/RestClient.java

3
application/src/main/java/org/thingsboard/server/controller/EventController.java

@ -24,7 +24,6 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.thingsboard.server.common.data.Event; import org.thingsboard.server.common.data.Event;
import org.thingsboard.server.common.data.exception.ThingsboardErrorCode;
import org.thingsboard.server.common.data.exception.ThingsboardException; import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.EntityId; import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.EntityIdFactory; import org.thingsboard.server.common.data.id.EntityIdFactory;
@ -32,9 +31,7 @@ import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.page.TimePageData; import org.thingsboard.server.common.data.page.TimePageData;
import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.event.EventService; import org.thingsboard.server.dao.event.EventService;
import org.thingsboard.server.dao.model.ModelConstants;
import org.thingsboard.server.service.security.permission.Operation; import org.thingsboard.server.service.security.permission.Operation;
import org.thingsboard.server.service.security.permission.Resource;
@RestController @RestController
@RequestMapping("/api") @RequestMapping("/api")

46
tools/src/main/java/org/thingsboard/client/tools/RestClient.java

@ -18,7 +18,6 @@ package org.thingsboard.client.tools;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.RequiredArgsConstructor;
import org.springframework.core.ParameterizedTypeReference; import org.springframework.core.ParameterizedTypeReference;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpMethod; import org.springframework.http.HttpMethod;
@ -86,10 +85,9 @@ import java.util.Optional;
/** /**
* @author Andrew Shvayka * @author Andrew Shvayka
*/ */
@RequiredArgsConstructor
public class RestClient implements ClientHttpRequestInterceptor { public class RestClient implements ClientHttpRequestInterceptor {
private static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization"; private static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization";
protected final RestTemplate restTemplate = new RestTemplate(); protected final RestTemplate restTemplate;
protected final String baseURL; protected final String baseURL;
private String token; private String token;
private String refreshToken; private String refreshToken;
@ -97,8 +95,19 @@ public class RestClient implements ClientHttpRequestInterceptor {
private final static String TIME_PAGE_LINK_URL_PARAMS = "limit={limit}&startTime={startTime}&endTime={endTime}&ascOrder={ascOrder}&offset={offset}"; private final static String TIME_PAGE_LINK_URL_PARAMS = "limit={limit}&startTime={startTime}&endTime={endTime}&ascOrder={ascOrder}&offset={offset}";
private final static String TEXT_PAGE_LINK_URL_PARAMS = "limit={limit}&textSearch{textSearch}&idOffset={idOffset}&textOffset{textOffset}"; private final static String TEXT_PAGE_LINK_URL_PARAMS = "limit={limit}&textSearch{textSearch}&idOffset={idOffset}&textOffset{textOffset}";
protected static final String ACTIVATE_TOKEN_REGEX = "/api/noauth/activate?activateToken="; protected static final String ACTIVATE_TOKEN_REGEX = "/api/noauth/activate?activateToken=";
public RestClient(String baseURL) {
this.restTemplate = new RestTemplate();
this.baseURL = baseURL;
}
public RestClient(RestTemplate restTemplate, String baseURL) {
this.restTemplate = restTemplate;
this.baseURL = baseURL;
}
@Override @Override
public ClientHttpResponse intercept(HttpRequest request, byte[] bytes, ClientHttpRequestExecution execution) throws IOException { public ClientHttpResponse intercept(HttpRequest request, byte[] bytes, ClientHttpRequestExecution execution) throws IOException {
HttpRequest wrapper = new HttpRequestWrapper(request); HttpRequest wrapper = new HttpRequestWrapper(request);
@ -553,7 +562,7 @@ public class RestClient implements ClientHttpRequestInterceptor {
HttpEntity.EMPTY, HttpEntity.EMPTY,
new ParameterizedTypeReference<List<Asset>>() { new ParameterizedTypeReference<List<Asset>>() {
}, },
assetIds).getBody(); String.join(",", assetIds)).getBody();
} }
public List<Asset> findByQuery(AssetSearchQuery query) { public List<Asset> findByQuery(AssetSearchQuery query) {
@ -672,7 +681,8 @@ public class RestClient implements ClientHttpRequestInterceptor {
} }
} }
public ResponseEntity<String> checkActivateToken(String activateToken) { public ResponseEntity<String> checkActivateToken(String userId) {
String activateToken = getActivateToken(userId);
return restTemplate.getForEntity(baseURL + "/api/noauth/activate?activateToken={activateToken}", String.class, activateToken); return restTemplate.getForEntity(baseURL + "/api/noauth/activate?activateToken={activateToken}", String.class, activateToken);
} }
@ -682,10 +692,6 @@ public class RestClient implements ClientHttpRequestInterceptor {
restTemplate.exchange(URI.create(baseURL + "/api/noauth/resetPasswordByEmail"), HttpMethod.POST, new HttpEntity<>(resetPasswordByEmailRequest), Object.class); restTemplate.exchange(URI.create(baseURL + "/api/noauth/resetPasswordByEmail"), HttpMethod.POST, new HttpEntity<>(resetPasswordByEmailRequest), Object.class);
} }
public ResponseEntity<String> checkResetToken(String resetToken) {
return restTemplate.getForEntity(baseURL + "/api/noauth/resetPassword?resetToken={resetToken}", String.class, resetToken);
}
public Optional<JsonNode> activateUser(String userId, String password) { public Optional<JsonNode> activateUser(String userId, String password) {
ObjectNode activateRequest = objectMapper.createObjectNode(); ObjectNode activateRequest = objectMapper.createObjectNode();
activateRequest.put("activateToken", getActivateToken(userId)); activateRequest.put("activateToken", getActivateToken(userId));
@ -702,22 +708,6 @@ public class RestClient implements ClientHttpRequestInterceptor {
} }
} }
public Optional<JsonNode> resetPassword(String resetToken, String resetPassword) {
ObjectNode resetPasswordRequest = objectMapper.createObjectNode();
resetPasswordRequest.put("resetToken", resetToken);
resetPasswordRequest.put("resetPassword", resetPassword);
try {
ResponseEntity<JsonNode> jsonNode = restTemplate.postForEntity(baseURL + "/api/noauth/resetPassword", resetPasswordRequest, JsonNode.class);
return Optional.ofNullable(jsonNode.getBody());
} catch (HttpClientErrorException exception) {
if (exception.getStatusCode() == HttpStatus.NOT_FOUND) {
return Optional.empty();
} else {
throw exception;
}
}
}
public Optional<ComponentDescriptor> getComponentDescriptorByClazz(String componentDescriptorClazz) { public Optional<ComponentDescriptor> getComponentDescriptorByClazz(String componentDescriptorClazz) {
try { try {
ResponseEntity<ComponentDescriptor> componentDescriptor = restTemplate.getForEntity(baseURL + "/api/component/{componentDescriptorClazz}", ComponentDescriptor.class, componentDescriptorClazz); ResponseEntity<ComponentDescriptor> componentDescriptor = restTemplate.getForEntity(baseURL + "/api/component/{componentDescriptorClazz}", ComponentDescriptor.class, componentDescriptorClazz);
@ -747,7 +737,7 @@ public class RestClient implements ClientHttpRequestInterceptor {
HttpEntity.EMPTY, HttpEntity.EMPTY,
new ParameterizedTypeReference<List<ComponentDescriptor>>() { new ParameterizedTypeReference<List<ComponentDescriptor>>() {
}, },
componentTypes).getBody(); String.join(",", componentTypes)).getBody();
} }
public Optional<Customer> getCustomerById(String customerId) { public Optional<Customer> getCustomerById(String customerId) {
@ -1108,7 +1098,7 @@ public class RestClient implements ClientHttpRequestInterceptor {
HttpMethod.GET, HttpMethod.GET,
HttpEntity.EMPTY, new ParameterizedTypeReference<List<Device>>() { HttpEntity.EMPTY, new ParameterizedTypeReference<List<Device>>() {
}, },
deviceIds).getBody(); String.join(",", deviceIds)).getBody();
} }
public List<Device> findByQuery(DeviceSearchQuery query) { public List<Device> findByQuery(DeviceSearchQuery query) {
@ -1785,7 +1775,7 @@ public class RestClient implements ClientHttpRequestInterceptor {
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
addPageLinkToParam(params, pageLink); addPageLinkToParam(params, pageLink);
return restTemplate.exchange( return restTemplate.exchange(
baseURL + "/tenants?" + TEXT_PAGE_LINK_URL_PARAMS, baseURL + "/api/tenants?" + TEXT_PAGE_LINK_URL_PARAMS,
HttpMethod.GET, HttpMethod.GET,
HttpEntity.EMPTY, HttpEntity.EMPTY,
new ParameterizedTypeReference<TextPageData<Tenant>>() { new ParameterizedTypeReference<TextPageData<Tenant>>() {

Loading…
Cancel
Save