This repository has been archived on 2020-08-02. You can view files and clone it, but cannot push or open issues or pull requests.
e-commerce/prototype/src/main/java/org/hso/ecommerce/api/RestServiceForDelivery.java

81 lines
2.7 KiB
Java
Raw Normal View History

2020-06-10 17:03:59 +02:00
package org.hso.ecommerce.api;
2020-06-10 14:51:12 +02:00
import org.hso.ecommerce.entities.shop.CustomerOrder;
2020-06-17 17:23:29 +02:00
import org.hso.ecommerce.uimodel.DeliveryData;
2020-06-10 14:51:12 +02:00
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
2020-06-13 19:37:34 +02:00
import org.springframework.web.client.ResourceAccessException;
2020-06-10 14:51:12 +02:00
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder;
import java.util.*;
@Service
public class RestServiceForDelivery {
@Autowired
2020-06-10 17:03:59 +02:00
private final RestTemplateBuilder restTemplateBuilder = null;
2020-06-10 14:51:12 +02:00
2020-06-13 19:37:34 +02:00
public String getDeliveryID(CustomerOrder customerOrder) throws ResourceAccessException
2020-06-10 14:51:12 +02:00
{
String url = "http://[::1]:8082/newDelivery";
RestTemplate restTemplate = restTemplateBuilder.build();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
Map<String, String> requestBody = new HashMap<>();
requestBody.put("name",customerOrder.destination.name);
requestBody.put("address",customerOrder.destination.addressString);
HttpEntity<Map<String, String>> entity = new HttpEntity<>(requestBody,headers);
ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST,entity, String.class);
if (response.getStatusCode() == HttpStatus.OK)
{
return response.getBody();
} else {
2020-06-13 19:37:34 +02:00
throw new ResourceAccessException("Http Status wrong");
2020-06-10 14:51:12 +02:00
}
}
2020-06-13 21:59:18 +02:00
public DeliveryData getDeliveryData(UUID trackingID) {
2020-06-10 14:51:12 +02:00
String url = "http://[::1]:8082/status";
RestTemplate restTemplate = restTemplateBuilder.build();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url).queryParam("trackingID",trackingID.toString());
HttpEntity<?> entity = new HttpEntity<>(headers);
2020-06-13 21:59:18 +02:00
ResponseEntity<DeliveryData> response;
2020-06-10 14:51:12 +02:00
2020-06-13 19:37:34 +02:00
try
2020-06-10 14:51:12 +02:00
{
2020-06-13 21:59:18 +02:00
response = restTemplate.exchange(builder.toUriString(), HttpMethod.GET, entity, DeliveryData.class);
2020-06-13 19:37:34 +02:00
if (response.getStatusCode() == HttpStatus.OK)
{
return response.getBody();
} else {
2020-06-13 21:59:18 +02:00
return new DeliveryData("DHL-Server ist gerade nicht erreichbar","--:--:----");
2020-06-13 19:37:34 +02:00
}
}
catch (ResourceAccessException e)
{
2020-06-13 21:59:18 +02:00
return new DeliveryData("DHL-Server gerade nicht erreichbar","--:--:----");
2020-06-10 14:51:12 +02:00
}
}
}