From ffd00cb0c2311b405e4f06b8097aa943d71310df Mon Sep 17 00:00:00 2001 From: Navneet Khanuja Date: Tue, 10 Sep 2024 11:52:47 -0400 Subject: [PATCH] added intial functionality to call starwars apis --- build.gradle.kts | 5 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle.kts | 6 +++++ .../kessel_run/config/StarWarsApiConfig.java | 20 ++++++++++++++++ .../controller/StarWarsApiController.java | 21 ++++++++++++++++ .../hackday/kessel_run/model/FlavorText.java | 15 ++++++++++++ .../service/StarWarsApiService.java | 24 +++++++++++++++++++ 7 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/main/java/org/misoenergy/hackday/kessel_run/config/StarWarsApiConfig.java create mode 100644 src/main/java/org/misoenergy/hackday/kessel_run/controller/StarWarsApiController.java create mode 100644 src/main/java/org/misoenergy/hackday/kessel_run/model/FlavorText.java create mode 100644 src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java diff --git a/build.gradle.kts b/build.gradle.kts index a3e077a..ebfbfbd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ version = "0.0.1-SNAPSHOT" java { toolchain { - languageVersion = JavaLanguageVersion.of(22) + languageVersion = JavaLanguageVersion.of(17) } } @@ -20,11 +20,12 @@ configurations { } repositories { - mavenCentral() + maven("https://nexus.misoenergy.org/repository/public/") } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.springframework.boot:spring-boot-starter-webflux") compileOnly("org.projectlombok:lombok") annotationProcessor("org.projectlombok:lombok") testImplementation("org.springframework.boot:spring-boot-starter-test") diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9355b41..b21b013 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://nexus.misoenergy.org/repository/gradle-distributions/gradle-8.5-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/settings.gradle.kts b/settings.gradle.kts index 94b3ce2..9fd56d0 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,7 @@ rootProject.name = "kessel-run" + +pluginManagement { + repositories { + maven("https://nexus.misoenergy.org/repository/public/") + } +} \ No newline at end of file diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/config/StarWarsApiConfig.java b/src/main/java/org/misoenergy/hackday/kessel_run/config/StarWarsApiConfig.java new file mode 100644 index 0000000..c798e7d --- /dev/null +++ b/src/main/java/org/misoenergy/hackday/kessel_run/config/StarWarsApiConfig.java @@ -0,0 +1,20 @@ +package org.misoenergy.hackday.kessel_run.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.WebClient; + +@Configuration +public class StarWarsApiConfig { + + @Bean + public RestTemplate restTemplate() { + return new RestTemplate(); + } + + @Bean + public WebClient.Builder webClient() { + return WebClient.builder(); + } +} diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/controller/StarWarsApiController.java b/src/main/java/org/misoenergy/hackday/kessel_run/controller/StarWarsApiController.java new file mode 100644 index 0000000..90f395f --- /dev/null +++ b/src/main/java/org/misoenergy/hackday/kessel_run/controller/StarWarsApiController.java @@ -0,0 +1,21 @@ +package org.misoenergy.hackday.kessel_run.controller; + +import org.misoenergy.hackday.kessel_run.service.StarWarsApiService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class StarWarsApiController { + + @Autowired + StarWarsApiService starWarsApiService; + + @GetMapping("/class-data") + public String fetchClassData(){ + + starWarsApiService.getClassData(); + return "This is test"; + + } +} diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/model/FlavorText.java b/src/main/java/org/misoenergy/hackday/kessel_run/model/FlavorText.java new file mode 100644 index 0000000..e3efea9 --- /dev/null +++ b/src/main/java/org/misoenergy/hackday/kessel_run/model/FlavorText.java @@ -0,0 +1,15 @@ +package org.misoenergy.hackday.kessel_run.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Getter; +import lombok.Setter; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Getter +@Setter +public class FlavorText { + + private String value; + private String type; + +} diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java b/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java new file mode 100644 index 0000000..c1dab0f --- /dev/null +++ b/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java @@ -0,0 +1,24 @@ +package org.misoenergy.hackday.kessel_run.service; + +import lombok.extern.slf4j.Slf4j; +import org.misoenergy.hackday.kessel_run.model.FlavorText; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +@Service +@Slf4j +public class StarWarsApiService { + + @Autowired + RestTemplate restTemplate; + + public FlavorText getClassData () { + + String url = "https://sw5eapi.azurewebsites.net/api/class"; + String response = restTemplate.getForObject(url, String.class); + log.info("response is:" + response); + + return null; + } +}