2020-06-10 17:03:59 +02:00
package org.hso.ecommerce.api ;
2020-06-10 14:51:12 +02:00
import com.fasterxml.jackson.core.JsonProcessingException ;
import com.fasterxml.jackson.databind.JsonNode ;
import com.fasterxml.jackson.databind.ObjectMapper ;
import org.hso.ecommerce.controller.intern.customers.CustomerOrderController ;
import org.hso.ecommerce.entities.shop.CustomerOrder ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.boot.web.client.RestTemplateBuilder ;
import org.springframework.http.* ;
import org.springframework.stereotype.Service ;
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
public String getDeliveryID ( CustomerOrder customerOrder )
{
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 {
return null ;
}
}
public CustomerOrderController . DeliveryData getDeliveryData ( UUID trackingID ) {
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-10 17:03:59 +02:00
ResponseEntity < CustomerOrderController . DeliveryData > response = restTemplate . exchange ( builder . toUriString ( ) , HttpMethod . GET , entity , CustomerOrderController . DeliveryData . class ) ;
2020-06-10 14:51:12 +02:00
if ( response . getStatusCode ( ) = = HttpStatus . OK )
{
2020-06-10 17:03:59 +02:00
return response . getBody ( ) ;
2020-06-10 14:51:12 +02:00
} else {
return null ;
}
}
}