Skip to content

Commit

Permalink
class2 first half
Browse files Browse the repository at this point in the history
  • Loading branch information
nikhiljain1203 committed Oct 12, 2023
1 parent 024f96d commit 809945d
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 16 deletions.
11 changes: 11 additions & 0 deletions src/main/java/com/example/productservice_proxy/Main2.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,20 @@

import com.example.productservice_proxy.dtos.ProductDto;

import java.util.List;

public class Main2 {
public static void main(String[] args) {
ProductDto productDto = new ProductDto();
System.out.println(productDto.toString());
List<Integer> l1 = List.of(1, 2, 3, 4);
List<String> l2 = List.of(
"Hello",
"Hi",
"Hey"
);

System.out.println(l1.getClass().getName());
System.out.println(l2.getClass().getName());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,14 @@
import com.example.productservice_proxy.services.ProductService;
import lombok.NonNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;


// This controller will always answer products
@RestController
Expand All @@ -21,19 +27,35 @@ public ProductController(IProductService productService) {
}

@GetMapping("")
public String getAllProducts() {
return "Getting all the products";
public ResponseEntity<List<Product>> getAllProducts() {
return new ResponseEntity<>(this.productService.getAllProducts(), HttpStatus.OK);
}


@GetMapping("/{id}")
public Product getSingleProduct(@PathVariable("id") Long productId) {
Product product = this.productService.getSingleProduct(productId);
return product;
public ResponseEntity<Product> getSingleProduct(@PathVariable("id") Long productId) {
try {
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add("Accept", "application/json");
headers.add("Content-Type", "application/json");
headers.add("auth-token", "heyaccess");
Product product = this.productService.getSingleProduct(productId);
if(productId < 1) {
throw new IllegalArgumentException("Something went wrong");
}
ResponseEntity<Product> responseEntity = new ResponseEntity<>(product, headers, HttpStatus.OK);
return responseEntity;
} catch (Exception e) {
ResponseEntity<Product> responseEntity = new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); // 500 error code
}
}

@PostMapping()
public String addNewProduct(@RequestBody ProductDto productDto) {
return "Adding new product " + productDto;
public ResponseEntity<Product> addNewProduct(@RequestBody ProductDto productDto) {
Product product = this.productService.addNewProduct(productDto);
ResponseEntity<Product> responseEntity = new ResponseEntity<>(product, HttpStatus.OK);
return responseEntity;
}

@PutMapping("/{productId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import com.example.productservice_proxy.dtos.ProductDto;
import com.example.productservice_proxy.models.Product;

import java.util.List;

public interface IProductService {
String getAllProducts();
List<Product> getAllProducts();

Product getSingleProduct(Long productId);

String addNewProduct(ProductDto productDto);
Product addNewProduct(ProductDto productDto);

String updateProduct(Long productId);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,64 @@
import com.example.productservice_proxy.models.Product;
import com.example.productservice_proxy.models.Categories;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.ArrayList;
import java.util.List;

@Service
public class ProductService implements IProductService {
private RestTemplateBuilder restTemplateBuilder;
public ProductService(RestTemplateBuilder restTemplateBuilder) {
this.restTemplateBuilder = restTemplateBuilder;
}
@Override
public String getAllProducts() {
return null;
public List<Product> getAllProducts() {
RestTemplate restTemplate = restTemplateBuilder.build();
ResponseEntity<ProductDto[]> productDtos =
restTemplate
.getForEntity("https://fakestoreapi.com/products", ProductDto[].class);


List<Product> answer = new ArrayList<>();

for (ProductDto productDto: productDtos.getBody()) {
Product product = new Product();
product.setId(productDto.getId());
product.setTitle(productDto.getTitle());
product.setPrice(productDto.getPrice());
Categories category = new Categories();
category.setName(productDto.getCategory());
product.setCategory(category);
product.setImageUrl(productDto.getImage());
answer.add(product);
}
return answer;
}


@Override
public Product getSingleProduct(Long productId) {

RestTemplate restTemplate = restTemplateBuilder.build();
ProductDto productDto =
ResponseEntity<ProductDto> productDto =
restTemplate.getForEntity("https://fakestoreapi.com/products/{id}",
ProductDto.class, productId).getBody();
ProductDto.class, productId);

Product product = getProduct(productDto);
Product product = getProduct(productDto.getBody());

return product;
}

@Override
public String addNewProduct(ProductDto productDto) {
return null;
public Product addNewProduct(ProductDto productDto) {
RestTemplate restTemplate= restTemplateBuilder.build();
restTemplate.postForEntity("https://fakestoreapi.com/products", productDto, ProductDto.class);
// saving the data for db
Product product = getProduct(productDto);
return product;
}


Expand Down

0 comments on commit 809945d

Please sign in to comment.