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
}
}
}