Abrufen der PRodukte der AmazonAPI
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package de.rwu.easydrop;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.List;
|
||||
|
||||
import javax.naming.ConfigurationException;
|
||||
@@ -11,6 +12,7 @@ import org.sqlite.SQLiteDataSource;
|
||||
import de.rwu.easydrop.api.client.DataSourceFactory;
|
||||
import de.rwu.easydrop.data.connector.AbstractProductPersistence;
|
||||
import de.rwu.easydrop.data.connector.SQLiteConnector;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.ProductCatalogue;
|
||||
import de.rwu.easydrop.service.retriever.CatalogueRetriever;
|
||||
import de.rwu.easydrop.service.retriever.ProductRetriever;
|
||||
@@ -58,5 +60,15 @@ public final class Main {
|
||||
String pCatStr = pCat.toString();
|
||||
LOGGER.info(pCatStr);
|
||||
}
|
||||
|
||||
for (ProductCatalogue pCat : pCats) {
|
||||
List<Product> products = pCat.getProducts();
|
||||
|
||||
for (Product product : products) {
|
||||
String productId = product.getProductId();
|
||||
double price = product.getCurrentPrice();
|
||||
LOGGER.info("Product ID: " + productId + ", Price: " + price);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
61
src/main/java/de/rwu/easydrop/PriceFetcher.java
Normal file
61
src/main/java/de/rwu/easydrop/PriceFetcher.java
Normal file
@@ -0,0 +1,61 @@
|
||||
package de.rwu.easydrop;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.util.List;
|
||||
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.sqlite.SQLiteDataSource;
|
||||
|
||||
import de.rwu.easydrop.api.client.DataSourceFactory;
|
||||
import de.rwu.easydrop.data.connector.AbstractProductPersistence;
|
||||
import de.rwu.easydrop.data.connector.SQLiteConnector;
|
||||
import de.rwu.easydrop.model.Product;
|
||||
import de.rwu.easydrop.model.ProductCatalogue;
|
||||
import de.rwu.easydrop.service.retriever.CatalogueRetriever;
|
||||
import de.rwu.easydrop.service.retriever.ProductRetriever;
|
||||
import de.rwu.easydrop.service.writer.CatalogueWriter;
|
||||
import de.rwu.easydrop.util.Config;
|
||||
import de.rwu.easydrop.util.ProductsConfig;
|
||||
|
||||
|
||||
/**
|
||||
* Diese Klasse PriceFetcher enthält die Methode getProductPrice,
|
||||
* die den Preis eines Produkts von den jeweiligen API's abruft.
|
||||
*/
|
||||
public final class PriceFetcher {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(PriceFetcher.class);
|
||||
|
||||
public static void getProductPrice(final String[] args) throws ConfigurationException{
|
||||
|
||||
Config config = Config.getInstance();
|
||||
ProductsConfig pConfig = ProductsConfig.getInstance();
|
||||
DataSourceFactory dataSourceFactory = new DataSourceFactory(config);
|
||||
ProductRetriever retriever = new ProductRetriever(dataSourceFactory);
|
||||
CatalogueRetriever catRetriever = new CatalogueRetriever(pConfig, retriever);
|
||||
AbstractProductPersistence db = new SQLiteConnector(new SQLiteDataSource());
|
||||
CatalogueWriter catWriter = new CatalogueWriter(db);
|
||||
|
||||
catRetriever.loadCatalogues();
|
||||
List<ProductCatalogue> pCats = catRetriever.getProductCatalogues();
|
||||
catWriter.writeCatalogues(pCats);
|
||||
|
||||
for (ProductCatalogue pCat : pCats) {
|
||||
String pCatStr = pCat.toString();
|
||||
LOGGER.info(pCatStr);
|
||||
}
|
||||
|
||||
for (ProductCatalogue pCat : pCats) {
|
||||
List<Product> products = pCat.getProducts();
|
||||
|
||||
for (Product product : products) {
|
||||
String productId = product.getProductId();
|
||||
double price = product.getCurrentPrice();
|
||||
LOGGER.info("Product ID: " + productId + ", Price: " + price);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
5
src/main/java/de/rwu/easydrop/api/BeforeEach.java
Normal file
5
src/main/java/de/rwu/easydrop/api/BeforeEach.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package de.rwu.easydrop.api;
|
||||
|
||||
public @interface BeforeEach {
|
||||
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package de.rwu.easydrop.api.client;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
|
||||
import com.jayway.jsonpath.JsonPath;
|
||||
import com.jayway.jsonpath.PathNotFoundException;
|
||||
import com.jayway.jsonpath.ReadContext;
|
||||
|
||||
import de.rwu.easydrop.api.dto.ProductDTO;
|
||||
|
||||
/**
|
||||
* Diese Klasse AmazonPriceFetcher enthält die Methode getProductPrice,
|
||||
* die den Preis eines Produkts von der Amazon API abruft.
|
||||
* Die Methode verwendet die Base URL, den API-Schlüssel und die Produkt-ID,
|
||||
* um die API-URL zu erstellen und die Daten von der API abzurufen.
|
||||
* Anschließend wird der Preis aus der JSON-Antwort extrahiert und zurückgegeben.
|
||||
*/
|
||||
public final class AmazonPriceFetcher {
|
||||
/**
|
||||
* URL zur Amazon API.
|
||||
*/
|
||||
private String baseUrl;
|
||||
/**
|
||||
* API-Schlüssel zur Autorisierung.
|
||||
*/
|
||||
private String apiKey;
|
||||
/**
|
||||
* Produktregion für den Datenzugriff.
|
||||
*/
|
||||
private static final String PRODUCT_REGION = "DE";
|
||||
/**
|
||||
* Sprachparameter für den Datenzugriff.
|
||||
*/
|
||||
private static final String LOCALE = "de_DE";
|
||||
|
||||
/**
|
||||
* Initialisiert die Klasse mit der Base URL und dem API-Schlüssel.
|
||||
*
|
||||
* @param newBaseUrl Die Base URL zur Amazon API.
|
||||
* @param newApiKey Der API-Schlüssel zur Autorisierung.
|
||||
*/
|
||||
|
||||
public AmazonPriceFetcher(final String newBaseUrl, final String newApiKey) {
|
||||
this.baseUrl = newBaseUrl;
|
||||
this.apiKey = newApiKey;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
5
src/main/java/de/rwu/easydrop/api/Test.java
Normal file
5
src/main/java/de/rwu/easydrop/api/Test.java
Normal file
@@ -0,0 +1,5 @@
|
||||
package de.rwu.easydrop.api;
|
||||
|
||||
public @interface Test {
|
||||
|
||||
}
|
||||
@@ -24,6 +24,7 @@ public class ProductCatalogue {
|
||||
* Product collection.
|
||||
*/
|
||||
private List<Product> products;
|
||||
public float getProducts;
|
||||
|
||||
/**
|
||||
* Creates new Product Catalogue.
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
package de.rwu.easydrop.api;
|
||||
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
public class AmazonPriceFetcherTest {
|
||||
private static final String BASE_URL = "https://api.amazon.com";
|
||||
private static final String API_KEY = "your_api_key";
|
||||
private static final String PRODUCT_ID = "12345";
|
||||
|
||||
private AmazonPriceFetcher priceFetcher;
|
||||
|
||||
@BeforeEach
|
||||
public void setup() {
|
||||
priceFetcher = new AmazonPriceFetcher(BASE_URL, API_KEY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProductPrice_ValidProductId_ReturnsPrice() throws MalformedURLException {
|
||||
// Arrange
|
||||
double expectedPrice = -1.0;
|
||||
|
||||
// Act
|
||||
double actualPrice = priceFetcher.getProductPrice(PRODUCT_ID);
|
||||
|
||||
// Assert
|
||||
Assertions.assertEquals(expectedPrice, actualPrice);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProductPrice_InvalidProductId_ReturnsNegativePrice() throws MalformedURLException {
|
||||
// Arrange
|
||||
double expectedPrice = -1.0;
|
||||
|
||||
// Act
|
||||
double actualPrice = priceFetcher.getProductPrice("invalid_product_id");
|
||||
|
||||
// Assert
|
||||
Assertions.assertEquals(expectedPrice, actualPrice);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetProductPrice_ExceptionThrown_ReturnsNegativePrice() throws MalformedURLException {
|
||||
// Arrange
|
||||
double expectedPrice = -1.0;
|
||||
|
||||
// Act
|
||||
double actualPrice = priceFetcher.getProductPrice("exception_thrown");
|
||||
|
||||
// Assert
|
||||
Assertions.assertEquals(expectedPrice, actualPrice);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user