Skip to content

Commit

Permalink
Feat: Client httpbin module
Browse files Browse the repository at this point in the history
  • Loading branch information
currenjin committed Dec 23, 2024
1 parent abf315a commit e76e23b
Show file tree
Hide file tree
Showing 9 changed files with 117 additions and 34 deletions.
74 changes: 44 additions & 30 deletions wire-mock/build.gradle
Original file line number Diff line number Diff line change
@@ -1,51 +1,65 @@
plugins {
id 'org.springframework.boot' version '2.7.1' apply false
id 'io.spring.dependency-management' version '1.0.11.RELEASE' apply false
id 'java'
repositories {
mavenCentral()
}

allprojects {
group = 'com.currenjin'
version = '0.0.1-SNAPSHOT'

buildscript {
ext {
javaVersion = "17"
springBootVersion = "2.7.5"
springCloudVersion = "2021.0.5"
}
repositories {
mavenCentral()
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
classpath "io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE"
classpath group: "org.sonarsource.scanner.gradle", name: "sonarqube-gradle-plugin", version: "3.3"
}
}

subprojects {
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
def demoProjects = subprojects - project(":clients")
configure(demoProjects) {
apply plugin: "java"
apply plugin: "java-library"
apply plugin: "org.springframework.boot"
apply plugin: "io.spring.dependency-management"

buildscript {
ext {
springBootVersion = '2.7.5'
springCloudVersion = '2021.0.5'
}
repositories {
mavenCentral()
}

sourceCompatibility = '17'

dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}

tasks.named("test") {
useJUnitPlatform()
}

dependencies {
implementation 'org.projectlombok:lombok:1.18.22'
implementation 'org.springframework.boot:spring-boot-starter'
implementation "org.projectlombok:lombok:1.18.22"
implementation "com.fasterxml.jackson.core:jackson-databind"
implementation "com.fasterxml.jackson.core:jackson-core"
implementation "com.fasterxml.jackson.core:jackson-annotations"

annotationProcessor 'org.projectlombok:lombok:1.18.22'
testAnnotationProcessor 'org.projectlombok:lombok:1.18.22'
annotationProcessor "org.projectlombok:lombok:1.18.22"
testAnnotationProcessor "org.projectlombok:lombok:1.18.22"

testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
implementation "org.springframework.boot:spring-boot-starter"
testImplementation "org.springframework.boot:spring-boot-starter-test"

tasks.named('test') {
useJUnitPlatform()
testImplementation(testFixtures(project(":clients:client-core")))
}

tasks.register('prepareKotlinBuildScriptModel'){}
}

def clientProjects = project(":clients").subprojects - project(":clients:client-core")
configure(clientProjects) {
dependencies {
implementation(project(":clients:client-core"))
}
}
3 changes: 3 additions & 0 deletions wire-mock/clients/client-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,7 @@ plugins {
dependencies {
api 'org.springframework.cloud:spring-cloud-starter-openfeign'
implementation 'io.github.openfeign:feign-httpclient'

testFixturesImplementation 'org.springframework.boot:spring-boot-starter-test'
testFixturesImplementation 'org.springframework.cloud:spring-cloud-contract-wiremock'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.currenjin.httpbin.adapter;

import com.currenjin.httpbin.response.AnythingResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(name = "httpBinClient", url = "${client.httpbin-api.access-url}", decode404 = true)
public interface HttpBinFeignClient {
@GetMapping("/anything/{id}")
AnythingResponse getAnythingById(@PathVariable("id") Long id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.currenjin.httpbin.config;

import com.currenjin.httpbin.adapter.HttpBinFeignClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableFeignClients(basePackageClasses = {HttpBinFeignClient.class})
public class HttpBinClientConfig {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.currenjin.httpbin.response;

import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class AnythingResponse {
private String data;

public AnythingResponse(String data) {
this.data = data;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
spring:
config:
import:
- classpath:application-client-core.yml

feign:
client:
config:
httpBinClient:
connectTimeout: 1000
readTimeout: 3000

client:
httpbin-api:
access-url: http://httpbin.org
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.currenjin.httpbin;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class HttpbinClientApplicationTests {
@Test
void contextLoads() {
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
spring:
profiles:
active: test
include: httpbin-client
7 changes: 3 additions & 4 deletions wire-mock/settings.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
rootProject.name = 'wire-mock'
include(
'clients:client-core',
'applications:internal-api'
)
include 'clients:client-core'
include 'clients:client-httpbin'
include 'applications:internal-api'

0 comments on commit e76e23b

Please sign in to comment.