diff --git a/spring-cloud-info/src/main/asciidoc/index.adoc b/spring-cloud-info/src/main/asciidoc/index.adoc deleted file mode 100644 index ce191fd6..00000000 --- a/spring-cloud-info/src/main/asciidoc/index.adoc +++ /dev/null @@ -1,96 +0,0 @@ -# Rest API - -## Spring Cloud Versions - -Gets all the available Spring Cloud release trains. - -### cURL Request -include::{snippets}/springcloudversions/curl-request.adoc[] - -### HTTPie Request -include::{snippets}/springcloudversions/httpie-request.adoc[] - -### HTTP Request -include::{snippets}/springcloudversions/http-request.adoc[] - -### Response -include::{snippets}/springcloudversions/http-response.adoc[] - -### Response Fields -include::{snippets}/springcloudversions/response-fields.adoc[] - -## Spring Cloud Version Given Spring Boot Version - -Gets the Spring Cloud release train version given a Spring Boot version. - -### Path Parameters -include::{snippets}/springcloudversion/path-parameters.adoc[] - -### cURL Request -include::{snippets}/springcloudversion/curl-request.adoc[] - -### HTTPie Request -include::{snippets}/springcloudversion/httpie-request.adoc[] - -### HTTP Request -include::{snippets}/springcloudversion/http-request.adoc[] - -### HTTP Response -include::{snippets}/springcloudversion/http-response.adoc[] - -### Response Fields -include::{snippets}/springcloudversion/response-fields.adoc[] - -## Spring Cloud Project Versions - -Get the Spring Cloud project versions for a given Spring Cloud release train. - -### cURL Request -include::{snippets}/bomversions/curl-request.adoc[] - -### HTTPie Request -include::{snippets}/bomversions/httpie-request.adoc[] - -### HTTP Request -include::{snippets}/bomversions/http-request.adoc[] - -### HTTP Response -include::{snippets}/bomversions/http-response.adoc[] - -## Upcoming Spring Cloud Releases - -Gets all the upcoming Spring Cloud releases. - -### cURL Request -include::{snippets}/milestones/curl-request.adoc[] - -### HTTPie Request -include::{snippets}/milestones/httpie-request.adoc[] - -### HTTP Request -include::{snippets}/milestones/http-request.adoc[] - -### HTTP Response -include::{snippets}/milestones/http-response.adoc[] - -## Get Spring Cloud Release Date - -Gets the tentative date given an upcoming Spring Cloud release train name. - -### Path Parameters -include::{snippets}/milestoneduedate/path-parameters.adoc[] - -### cURL Request -include::{snippets}/milestoneduedate/curl-request.adoc[] - -### HTTPie Request -include::{snippets}/milestoneduedate/httpie-request.adoc[] - -### HTTP Request -include::{snippets}/milestoneduedate/http-request.adoc[] - -### HTTP Response -include::{snippets}/milestoneduedate/http-response.adoc[] - -### Response Fields -include::{snippets}/milestoneduedate/response-fields.adoc[] \ No newline at end of file diff --git a/spring-cloud-info/src/main/asciidoc/spring-cloud-info.adoc b/spring-cloud-info/src/main/asciidoc/spring-cloud-info.adoc index d1f39f96..ce191fd6 100644 --- a/spring-cloud-info/src/main/asciidoc/spring-cloud-info.adoc +++ b/spring-cloud-info/src/main/asciidoc/spring-cloud-info.adoc @@ -1 +1,96 @@ -include::index.adoc[] \ No newline at end of file +# Rest API + +## Spring Cloud Versions + +Gets all the available Spring Cloud release trains. + +### cURL Request +include::{snippets}/springcloudversions/curl-request.adoc[] + +### HTTPie Request +include::{snippets}/springcloudversions/httpie-request.adoc[] + +### HTTP Request +include::{snippets}/springcloudversions/http-request.adoc[] + +### Response +include::{snippets}/springcloudversions/http-response.adoc[] + +### Response Fields +include::{snippets}/springcloudversions/response-fields.adoc[] + +## Spring Cloud Version Given Spring Boot Version + +Gets the Spring Cloud release train version given a Spring Boot version. + +### Path Parameters +include::{snippets}/springcloudversion/path-parameters.adoc[] + +### cURL Request +include::{snippets}/springcloudversion/curl-request.adoc[] + +### HTTPie Request +include::{snippets}/springcloudversion/httpie-request.adoc[] + +### HTTP Request +include::{snippets}/springcloudversion/http-request.adoc[] + +### HTTP Response +include::{snippets}/springcloudversion/http-response.adoc[] + +### Response Fields +include::{snippets}/springcloudversion/response-fields.adoc[] + +## Spring Cloud Project Versions + +Get the Spring Cloud project versions for a given Spring Cloud release train. + +### cURL Request +include::{snippets}/bomversions/curl-request.adoc[] + +### HTTPie Request +include::{snippets}/bomversions/httpie-request.adoc[] + +### HTTP Request +include::{snippets}/bomversions/http-request.adoc[] + +### HTTP Response +include::{snippets}/bomversions/http-response.adoc[] + +## Upcoming Spring Cloud Releases + +Gets all the upcoming Spring Cloud releases. + +### cURL Request +include::{snippets}/milestones/curl-request.adoc[] + +### HTTPie Request +include::{snippets}/milestones/httpie-request.adoc[] + +### HTTP Request +include::{snippets}/milestones/http-request.adoc[] + +### HTTP Response +include::{snippets}/milestones/http-response.adoc[] + +## Get Spring Cloud Release Date + +Gets the tentative date given an upcoming Spring Cloud release train name. + +### Path Parameters +include::{snippets}/milestoneduedate/path-parameters.adoc[] + +### cURL Request +include::{snippets}/milestoneduedate/curl-request.adoc[] + +### HTTPie Request +include::{snippets}/milestoneduedate/httpie-request.adoc[] + +### HTTP Request +include::{snippets}/milestoneduedate/http-request.adoc[] + +### HTTP Response +include::{snippets}/milestoneduedate/http-response.adoc[] + +### Response Fields +include::{snippets}/milestoneduedate/response-fields.adoc[] \ No newline at end of file diff --git a/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudInfoRestController.java b/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudInfoRestController.java index 23bdfc7f..85639a5a 100644 --- a/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudInfoRestController.java +++ b/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudInfoRestController.java @@ -41,7 +41,7 @@ public class SpringCloudInfoRestController { this.versionService = versionService; } - @GetMapping("/springcloudversion/{bootVersion}") + @GetMapping("/springcloudversion/springboot/{bootVersion}") public SpringCloudVersion version(@PathVariable String bootVersion) { try { return versionService.getSpringCloudVersion(bootVersion); diff --git a/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudRelease.java b/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudRelease.java index 2c81f377..06eaa26f 100644 --- a/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudRelease.java +++ b/spring-cloud-info/src/main/java/org/springframework/cloud/info/SpringCloudRelease.java @@ -17,6 +17,10 @@ package org.springframework.cloud.info; import java.io.IOException; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -90,7 +94,7 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService { reader.close(); List tagsList = tags.getValuesAs(JsonObject.class); for (JsonObject obj : tagsList) { - releaseVersions.add(obj.getString("name")); + releaseVersions.add(obj.getString("name").replaceFirst("v", "")); } return releaseVersions; } @@ -145,7 +149,10 @@ public abstract class SpringCloudRelease implements SpringCloudInfoService { return new Milestone("No Due Date"); } else { - return new Milestone(json.getString("due_on")); + Instant instant = Instant.parse(json.getString("due_on")); + return new Milestone(LocalDateTime + .ofInstant(instant, ZoneId.of(ZoneOffset.UTC.getId())) + .toLocalDate().toString()); } } } diff --git a/spring-cloud-info/src/main/resources/static/docs/index.html b/spring-cloud-info/src/main/resources/static/docs/index.html deleted file mode 100644 index 92e4cd52..00000000 --- a/spring-cloud-info/src/main/resources/static/docs/index.html +++ /dev/null @@ -1,877 +0,0 @@ - - - - - - - -Rest API - - - - - - - - - -
-
-

Spring Cloud Versions

-
-
-

Gets all the available Spring Cloud release trains.

-
-
-

cURL Request

-
-
-
$ curl 'http://spring-cloud-info.cfapps.io/springcloudversions' -i -X GET \
-    -H 'Accept: application/json'
-
-
-
-
-

HTTPie Request

-
-
-
$ http GET 'http://spring-cloud-info.cfapps.io/springcloudversions' \
-    'Accept:application/json'
-
-
-
-
-

HTTP Request

-
-
-
GET /springcloudversions HTTP/1.1
-Accept: application/json
-Host: spring-cloud-info.cfapps.io
-
-
-
-
-

Response

-
-
-
HTTP/1.1 200 OK
-Content-Length: 479
-Content-Type: application/json;charset=UTF-8
-
-["vGreenwich.SR1","vGreenwich.RELEASE","vGreenwich.RC2","vGreenwich.RC1","vGreenwich.M3","vGreenwich.M2","vGreenwich.M1","vFinchley.SR3","vFinchley.SR2","vFinchley.SR1","vFinchley.RELEASE","vFinchley.RC2","vFinchley.RC1","vFinchley.M9","vFinchley.M8","vFinchley.M7","vFinchley.M6","vFinchley.M5","vFinchley.M3","vFinchley.M2","vFinchley.M1","vEdgware.SR5","vEdgware.SR4","vEdgware.SR3","vEdgware.SR2","vEdgware.SR1","vEdgware.RELEASE","vEdgware.M1","vDalston.SR5","vDalston.SR4"]
-
-
-
-
-

Response Fields

- ----- - - - - - - - - - - - - - - -
PathTypeDescription

[]

Array

An array versions

-
-
-
-
-

Spring Cloud Version Given Spring Boot Version

-
-
-

Gets the Spring Cloud release train version given a Spring Boot version.

-
-
-

Path Parameters

- - ---- - - - - - - - - - - - - -
Table 1. /springcloudversion/{bootVersion}
ParameterDescription

bootVersion

The Spring Boot version

-
-
-

cURL Request

-
-
-
$ curl 'http://spring-cloud-info.cfapps.io/springcloudversion/2.1.1.RELEASE' -i -X GET \
-    -H 'Accept: application/json'
-
-
-
-
-

HTTPie Request

-
-
-
$ http GET 'http://spring-cloud-info.cfapps.io/springcloudversion/2.1.1.RELEASE' \
-    'Accept:application/json'
-
-
-
-
-

HTTP Request

-
-
-
GET /springcloudversion/2.1.1.RELEASE HTTP/1.1
-Accept: application/json
-Host: spring-cloud-info.cfapps.io
-
-
-
-
-

HTTP Response

-
-
-
HTTP/1.1 200 OK
-Content-Length: 31
-Content-Disposition: inline;filename=f.txt
-Content-Type: application/json;charset=UTF-8
-
-{"version":"Greenwich.RELEASE"}
-
-
-
-
-

Response Fields

- ----- - - - - - - - - - - - - - - -
PathTypeDescription

version

String

Spring Cloud version

-
-
-
-
-

Spring Cloud Project Versions

-
-
-

Get the Spring Cloud project versions for a given Spring Cloud release train.

-
-
-

cURL Request

-
-
-
$ curl 'http://spring-cloud-info.cfapps.io/bomversions/Finchley.SR1' -i -X GET \
-    -H 'Accept: application/json'
-
-
-
-
-

HTTPie Request

-
-
-
$ http GET 'http://spring-cloud-info.cfapps.io/bomversions/Finchley.SR1' \
-    'Accept:application/json'
-
-
-
-
-

HTTP Request

-
-
-
GET /bomversions/Finchley.SR1 HTTP/1.1
-Accept: application/json
-Host: spring-cloud-info.cfapps.io
-
-
-
-
-

HTTP Response

-
-
-
HTTP/1.1 200 OK
-Content-Length: 904
-Content-Disposition: inline;filename=f.txt
-Content-Type: application/json;charset=UTF-8
-
-{"spring-cloud-cloudfoundry":"2.2.0.BUILD-SNAPSHOT","spring-cloud-openfeign":"2.2.0.BUILD-SNAPSHOT","spring-cloud-task":"2.0.0.RELEASE","spring-cloud-security":"2.2.0.BUILD-SNAPSHOT","spring-cloud-zookeeper":"2.2.0.BUILD-SNAPSHOT","spring-cloud-config":"2.2.0.BUILD-SNAPSHOT","spring-cloud-function":"2.1.0.BUILD-SNAPSHOT","spring-cloud-netflix":"2.2.0.BUILD-SNAPSHOT","spring-cloud-vault":"2.2.0.BUILD-SNAPSHOT","spring-cloud-stream":"Germantown.BUILD-SNAPSHOT","spring-cloud-gcp":"1.1.0.BUILD-SNAPSHOT","spring-cloud-sleuth":"2.2.0.BUILD-SNAPSHOT","spring-cloud-kubernetes":"1.1.0.BUILD-SNAPSHOT","spring-cloud-commons":"2.2.0.BUILD-SNAPSHOT","spring-cloud-aws":"2.2.0.BUILD-SNAPSHOT","spring-cloud-contract":"2.2.0.BUILD-SNAPSHOT","spring-cloud-bus":"2.2.0.BUILD-SNAPSHOT","spring-cloud-gateway":"2.2.0.BUILD-SNAPSHOT","spring-boot":"2.2.0.BUILD-SNAPSHOT","spring-cloud-consul":"2.2.0.BUILD-SNAPSHOT"}
-
-
-
-
-
-
-

Upcoming Spring Cloud Releases

-
-
-

Gets all the upcoming Spring Cloud releases.

-
-
-

cURL Request

-
-
-
$ curl 'http://spring-cloud-info.cfapps.io/milestones' -i -X GET \
-    -H 'Accept: application/json'
-
-
-
-
-

HTTPie Request

-
-
-
$ http GET 'http://spring-cloud-info.cfapps.io/milestones' \
-    'Accept:application/json'
-
-
-
-
-

HTTP Request

-
-
-
GET /milestones HTTP/1.1
-Accept: application/json
-Host: spring-cloud-info.cfapps.io
-
-
-
-
-

HTTP Response

-
-
-
HTTP/1.1 200 OK
-Content-Type: application/json;charset=UTF-8
-Content-Length: 57
-
-["Hoxton.RELEASE","Finchley.SR4","Hoxton.M1","Hoxton.M2"]
-
-
-
-
-
-
-

Get Spring Cloud Release Date

-
-
-

Gets the tentative date given an upcoming Spring Cloud release train name.

-
-
-

Path Parameters

- - ---- - - - - - - - - - - - - -
Table 2. /milestones/{release}/duedate
ParameterDescription

release

The Spring Cloud release train name

-
-
-

cURL Request

-
-
-
$ curl 'http://spring-cloud-info.cfapps.io/milestones/Hoxton.RELEASE/duedate' -i -X GET \
-    -H 'Accept: application/json'
-
-
-
-
-

HTTPie Request

-
-
-
$ http GET 'http://spring-cloud-info.cfapps.io/milestones/Hoxton.RELEASE/duedate' \
-    'Accept:application/json'
-
-
-
-
-

HTTP Request

-
-
-
GET /milestones/Hoxton.RELEASE/duedate HTTP/1.1
-Accept: application/json
-Host: spring-cloud-info.cfapps.io
-
-
-
-
-

HTTP Response

-
-
-
HTTP/1.1 200 OK
-Content-Type: application/json;charset=UTF-8
-Content-Length: 34
-
-{"dueDate":"2019-07-31T07:00:00Z"}
-
-
-
-
-

Response Fields

- ----- - - - - - - - - - - - - - - -
PathTypeDescription

dueDate

String

Spring Cloud milestone due date

-
-
-
-
- - - \ No newline at end of file diff --git a/spring-cloud-info/src/main/resources/static/docs/spring-cloud-info.html b/spring-cloud-info/src/main/resources/static/docs/spring-cloud-info.html index c89324c2..65ae623d 100644 --- a/spring-cloud-info/src/main/resources/static/docs/spring-cloud-info.html +++ b/spring-cloud-info/src/main/resources/static/docs/spring-cloud-info.html @@ -177,10 +177,10 @@ Host: spring-cloud-info.cfapps.io
HTTP/1.1 200 OK
-Content-Length: 479
+Content-Length: 449
 Content-Type: application/json;charset=UTF-8
 
-["vGreenwich.SR1","vGreenwich.RELEASE","vGreenwich.RC2","vGreenwich.RC1","vGreenwich.M3","vGreenwich.M2","vGreenwich.M1","vFinchley.SR3","vFinchley.SR2","vFinchley.SR1","vFinchley.RELEASE","vFinchley.RC2","vFinchley.RC1","vFinchley.M9","vFinchley.M8","vFinchley.M7","vFinchley.M6","vFinchley.M5","vFinchley.M3","vFinchley.M2","vFinchley.M1","vEdgware.SR5","vEdgware.SR4","vEdgware.SR3","vEdgware.SR2","vEdgware.SR1","vEdgware.RELEASE","vEdgware.M1","vDalston.SR5","vDalston.SR4"]
+["Greenwich.SR1","Greenwich.RELEASE","Greenwich.RC2","Greenwich.RC1","Greenwich.M3","Greenwich.M2","Greenwich.M1","Finchley.SR3","Finchley.SR2","Finchley.SR1","Finchley.RELEASE","Finchley.RC2","Finchley.RC1","Finchley.M9","Finchley.M8","Finchley.M7","Finchley.M6","Finchley.M5","Finchley.M3","Finchley.M2","Finchley.M1","Edgware.SR5","Edgware.SR4","Edgware.SR3","Edgware.SR2","Edgware.SR1","Edgware.RELEASE","Edgware.M1","Dalston.SR5","Dalston.SR4"]
@@ -219,7 +219,7 @@ Content-Type: application/json;charset=UTF-8

Path Parameters

- +@@ -242,7 +242,7 @@ Content-Type: application/json;charset=UTF-8

cURL Request

-
$ curl 'http://spring-cloud-info.cfapps.io/springcloudversion/2.1.1.RELEASE' -i -X GET \
+
$ curl 'http://spring-cloud-info.cfapps.io/springcloudversion/springboot/2.1.1.RELEASE' -i -X GET \
     -H 'Accept: application/json'
@@ -251,7 +251,7 @@ Content-Type: application/json;charset=UTF-8

HTTPie Request

-
$ http GET 'http://spring-cloud-info.cfapps.io/springcloudversion/2.1.1.RELEASE' \
+
$ http GET 'http://spring-cloud-info.cfapps.io/springcloudversion/springboot/2.1.1.RELEASE' \
     'Accept:application/json'
@@ -260,7 +260,7 @@ Content-Type: application/json;charset=UTF-8

HTTP Request

-
GET /springcloudversion/2.1.1.RELEASE HTTP/1.1
+
GET /springcloudversion/springboot/2.1.1.RELEASE HTTP/1.1
 Accept: application/json
 Host: spring-cloud-info.cfapps.io
@@ -464,9 +464,9 @@ Host: spring-cloud-info.cfapps.io
HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
-Content-Length: 34
+Content-Length: 24
 
-{"dueDate":"2019-07-31T07:00:00Z"}
+{"dueDate":"2019-07-31"}
diff --git a/spring-cloud-info/src/test/java/org/springframework/cloud/info/InitializrSpringCloudInfoServiceTests.java b/spring-cloud-info/src/test/java/org/springframework/cloud/info/InitializrSpringCloudInfoServiceTests.java index e0b19e4a..600ca878 100644 --- a/spring-cloud-info/src/test/java/org/springframework/cloud/info/InitializrSpringCloudInfoServiceTests.java +++ b/spring-cloud-info/src/test/java/org/springframework/cloud/info/InitializrSpringCloudInfoServiceTests.java @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import javax.json.Json; import javax.json.JsonBuilderFactory; @@ -175,7 +176,8 @@ public class InitializrSpringCloudInfoServiceTests { InitializrSpringCloudInfoService service = spy( new InitializrSpringCloudInfoService(rest, github, githubPomReader)); assertThat(service.getSpringCloudVersions(), - Matchers.equalTo(SpringCloudInfoTestData.springCloudVersions)); + Matchers.equalTo(SpringCloudInfoTestData.springCloudVersions.stream() + .map(v -> v.replaceFirst("v", "")).collect(Collectors.toList()))); } @Test @@ -195,8 +197,8 @@ public class InitializrSpringCloudInfoServiceTests { new InitializrSpringCloudInfoService(rest, github, githubPomReader)); assertThat(service.getMilestoneDueDate("Finchley.SR4"), Matchers.equalTo(new SpringCloudInfoService.Milestone("No Due Date"))); - assertThat(service.getMilestoneDueDate("Hoxton.RELEASE"), Matchers - .equalTo(new SpringCloudInfoService.Milestone("2019-07-31T07:00:00Z"))); + assertThat(service.getMilestoneDueDate("Hoxton.RELEASE"), + Matchers.equalTo(new SpringCloudInfoService.Milestone("2019-07-31"))); } @Test diff --git a/spring-cloud-info/src/test/java/org/springframework/cloud/info/SpringCloudInfoRestControllerTests.java b/spring-cloud-info/src/test/java/org/springframework/cloud/info/SpringCloudInfoRestControllerTests.java index d98841e2..8bb44f1e 100644 --- a/spring-cloud-info/src/test/java/org/springframework/cloud/info/SpringCloudInfoRestControllerTests.java +++ b/spring-cloud-info/src/test/java/org/springframework/cloud/info/SpringCloudInfoRestControllerTests.java @@ -16,6 +16,8 @@ package org.springframework.cloud.info; +import java.util.stream.Collectors; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -76,8 +78,8 @@ public class SpringCloudInfoRestControllerTests { doReturn(new SpringCloudVersion("Greenwich.RELEASE")).when(springCloudInfoService) .getSpringCloudVersion(eq("2.1.1.RELEASE")); this.mockMvc - .perform(get("/springcloudversion/{bootVersion}", "2.1.1.RELEASE") - .accept(MediaType.APPLICATION_JSON)) + .perform(get("/springcloudversion/springboot/{bootVersion}", + "2.1.1.RELEASE").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andDo(document("springcloudversion", pathParameters(parameterWithName("bootVersion") @@ -88,8 +90,9 @@ public class SpringCloudInfoRestControllerTests { @Test public void versions() throws Exception { - doReturn(springCloudVersions).when(springCloudInfoService) - .getSpringCloudVersions(); + doReturn(springCloudVersions.stream().map(v -> v.replaceFirst("v", "")) + .collect(Collectors.toList())).when(springCloudInfoService) + .getSpringCloudVersions(); this.mockMvc .perform(get("/springcloudversions").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) @@ -117,7 +120,7 @@ public class SpringCloudInfoRestControllerTests { @Test public void milestoneDueDate() throws Exception { - doReturn(new SpringCloudInfoService.Milestone("2019-07-31T07:00:00Z")) + doReturn(new SpringCloudInfoService.Milestone("2019-07-31")) .when(springCloudInfoService).getMilestoneDueDate(eq("Hoxton.RELEASE")); this.mockMvc .perform(get("/milestones/{release}/duedate", "Hoxton.RELEASE")
Table 1. /springcloudversion/{bootVersion}Table 1. /springcloudversion/springboot/{bootVersion}