File tree 5 files changed +141
-2
lines changed
openapi-processor-core/src
main/kotlin/io/openapiprocessor/core/parser/openapi
test/kotlin/io/openapiprocessor/core/parser/openapi
5 files changed +141
-2
lines changed Original file line number Diff line number Diff line change @@ -25,7 +25,13 @@ open class OpenApi(
25
25
private val log: Logger = LoggerFactory .getLogger(this .javaClass.name)
26
26
27
27
override fun getServers (): List <Server > {
28
- return listOf ()
28
+ val servers = mutableListOf<Server >()
29
+
30
+ api.servers.forEach { server ->
31
+ servers.add(Server (server))
32
+ }
33
+
34
+ return servers
29
35
}
30
36
31
37
override fun getPaths (): Map <String , Path > {
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2024 https://github.com/openapi-processor/openapi-processor-core
3
+ * PDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ package io.openapiprocessor.core.parser.openapi.v30
7
+
8
+ import io.github.stduritemplate.StdUriTemplate
9
+ import java.net.URI
10
+ import io.openapiparser.model.v30.Server as Server30
11
+ import io.openapiprocessor.core.parser.Server as ParserServer
12
+
13
+ class Server (private val server : Server30 ): ParserServer {
14
+
15
+ override fun getUri (): URI {
16
+ val variables = mutableMapOf<String , Any >()
17
+
18
+ server.variables.forEach { variable ->
19
+ variables[variable.key] = variable.value.default
20
+ }
21
+
22
+ return URI .create(StdUriTemplate .expand(server.url, variables))
23
+ }
24
+ }
Original file line number Diff line number Diff line change @@ -20,7 +20,13 @@ class OpenApi(
20
20
private val log: Logger = LoggerFactory .getLogger(this .javaClass.name)
21
21
22
22
override fun getServers (): List <Server > {
23
- return listOf ()
23
+ val servers = mutableListOf<Server >()
24
+
25
+ api.servers.forEach { server ->
26
+ servers.add(Server (server))
27
+ }
28
+
29
+ return servers
24
30
}
25
31
26
32
override fun getPaths (): Map <String , ParserPath > {
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2024 https://github.com/openapi-processor/openapi-processor-core
3
+ * PDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ package io.openapiprocessor.core.parser.openapi.v31
7
+
8
+ import io.github.stduritemplate.StdUriTemplate
9
+ import java.net.URI
10
+ import io.openapiparser.model.v31.Server as Server31
11
+ import io.openapiprocessor.core.parser.Server as ParserServer
12
+
13
+ class Server (private val server : Server31 ): ParserServer {
14
+
15
+ override fun getUri (): URI {
16
+ val variables = mutableMapOf<String , Any >()
17
+
18
+ server.variables.forEach { variable ->
19
+ variables[variable.key] = variable.value.default
20
+ }
21
+
22
+ return URI .create(StdUriTemplate .expand(server.url, variables))
23
+ }
24
+ }
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2024 https://github.com/openapi-processor/openapi-processor-core
3
+ * PDX-License-Identifier: Apache-2.0
4
+ */
5
+
6
+ package io.openapiprocessor.core.parser.openapi
7
+
8
+ import io.kotest.core.spec.style.StringSpec
9
+ import io.kotest.matchers.collections.shouldHaveSize
10
+ import io.kotest.matchers.shouldBe
11
+ import io.openapiprocessor.test.stream.Memory
12
+ import java.net.URI
13
+
14
+ class ServerSpec : StringSpec ({
15
+
16
+ " get server from openapi 3.0" {
17
+ val parser = Parser ()
18
+
19
+ Memory .add("openapi.yaml", """
20
+ openapi: 3.0.5
21
+ servers:
22
+ - url: "{schema}://{host}:{port}/{path1}/{path2}/v{version}"
23
+ variables:
24
+ schema:
25
+ default: https
26
+ enum:
27
+ - https
28
+ - http
29
+ host:
30
+ default: openapiprocessor.io
31
+ port:
32
+ default: "443"
33
+ path1:
34
+ default: foo
35
+ path2:
36
+ default: bar
37
+ version:
38
+ default: "1"
39
+ """.trimIndent())
40
+
41
+ val api = parser.parse("memory:openapi.yaml")
42
+
43
+ val servers = api.getServers()
44
+ servers shouldHaveSize 1
45
+ servers[0 ].getUri() shouldBe URI .create("https://openapiprocessor.io:443/foo/bar/v1")
46
+ }
47
+
48
+ " get server from openapi 3.1" {
49
+ val parser = Parser ()
50
+
51
+ Memory .add("openapi.yaml", """
52
+ openapi: 3.1.0
53
+ servers:
54
+ - url: "{schema}://{host}:{port}/{path1}/{path2}/v{version}"
55
+ variables:
56
+ schema:
57
+ default: https
58
+ enum:
59
+ - https
60
+ - http
61
+ host:
62
+ default: openapiprocessor.io
63
+ port:
64
+ default: "443"
65
+ path1:
66
+ default: foo
67
+ path2:
68
+ default: bar
69
+ version:
70
+ default: "1"
71
+ """.trimIndent())
72
+
73
+ val api = parser.parse("memory:openapi.yaml")
74
+
75
+ val servers = api.getServers()
76
+ servers shouldHaveSize 1
77
+ servers[0 ].getUri() shouldBe URI .create("https://openapiprocessor.io:443/foo/bar/v1")
78
+ }
79
+ })
You can’t perform that action at this time.
0 commit comments