Skip to content

Commit fbcbdb6

Browse files
authored
Revert "Move BaseUri middleware (#515)" (#517)
This reverts commit 77be1f8.
1 parent 77be1f8 commit fbcbdb6

File tree

5 files changed

+39
-23
lines changed

5 files changed

+39
-23
lines changed

modules/core/src/main/scala/playground/OperationRunner.scala

+34-1
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ import cats.data.NonEmptyList
1313
import cats.effect.Async
1414
import cats.effect.MonadCancelThrow
1515
import cats.effect.Resource
16+
import cats.effect.implicits.*
1617
import cats.effect.std
1718
import cats.syntax.all.*
1819
import fs2.compression.Compression
20+
import org.http4s.Uri
1921
import org.http4s.client.Client
2022
import playground.plugins.PlaygroundPlugin
2123
import playground.plugins.SimpleHttpBuilder
@@ -115,15 +117,39 @@ object OperationRunner {
115117

116118
}
117119

120+
// https://github.com/kubukoz/smithy-playground/issues/158
121+
def dynamicBaseUri[F[_]: MonadCancelThrow](
122+
getUri: F[Uri]
123+
): Client[F] => Client[F] =
124+
client =>
125+
Client[F] { req =>
126+
getUri.toResource.flatMap { uri =>
127+
client.run(
128+
req.withUri(
129+
req
130+
.uri
131+
.copy(
132+
scheme = uri.scheme,
133+
authority = uri.authority,
134+
// prefixing with uri.path
135+
path = uri.path.addSegments(req.uri.path.segments),
136+
)
137+
)
138+
)
139+
}
140+
}
141+
118142
def forSchemaIndex[F[_]: StdlibRuntime: Async: Compression: std.Console](
119143
dsi: DynamicSchemaIndex,
120144
client: Client[F],
145+
baseUri: F[Uri],
121146
awsEnv: Resource[F, AwsEnvironment[F]],
122147
plugins: List[PlaygroundPlugin],
123148
): Map[QualifiedIdentifier, Resolver[F]] = forServices(
124149
services = dsi.allServices.toList,
125150
getSchema = dsi.getSchema,
126151
client = client,
152+
baseUri = baseUri,
127153
awsEnv = awsEnv,
128154
plugins = plugins,
129155
)
@@ -132,6 +158,7 @@ object OperationRunner {
132158
services: List[DynamicSchemaIndex.ServiceWrapper],
133159
getSchema: ShapeId => Option[Schema[?]],
134160
client: Client[F],
161+
baseUri: F[Uri],
135162
awsEnv: Resource[F, AwsEnvironment[F]],
136163
plugins: List[PlaygroundPlugin],
137164
): Map[QualifiedIdentifier, Resolver[F]] =
@@ -140,6 +167,7 @@ object OperationRunner {
140167
OperationRunner.forService[svc.Alg, F](
141168
svc.service,
142169
client,
170+
baseUri,
143171
awsEnv,
144172
getSchema,
145173
plugins,
@@ -173,6 +201,7 @@ object OperationRunner {
173201
def forService[Alg[_[_, _, _, _, _]], F[_]: StdlibRuntime: Async: Compression: std.Console](
174202
service: Service[Alg],
175203
client: Client[F],
204+
baseUri: F[Uri],
176205
awsEnv: Resource[F, AwsEnvironment[F]],
177206
schemaIndex: ShapeId => Option[Schema[?]],
178207
plugins: List[PlaygroundPlugin],
@@ -195,7 +224,11 @@ object OperationRunner {
195224
builder
196225
.client(
197226
service,
198-
client,
227+
dynamicBaseUri[F](
228+
baseUri.flatTap { uri =>
229+
std.Console[F].println(s"Using base URI: $uri")
230+
}
231+
).apply(client),
199232
)
200233
.leftMap(e => Issue.InvalidProtocol(e.protocolTag.id, serviceProtocols))
201234
.map(service.toPolyFunction(_))

modules/language-support/src/test/scala/playground/language/DiagnosticProviderTests.scala

+1
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ object DiagnosticProviderTests extends SimpleIOSuite {
8585
services = services,
8686
getSchema = _ => None,
8787
client = client,
88+
baseUri = IO.stub,
8889
awsEnv = Resource.eval(IO.stub: IO[AwsEnvironment[IO]]),
8990
plugins = Nil,
9091
),

modules/lsp/src/main/scala/playground/lsp/LanguageClient.scala

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import cats.effect.kernel.Async
66
import cats.syntax.all.*
77
import cats.tagless.Derive
88
import cats.tagless.FunctorK
9+
import cats.tagless.catsTaglessApplyKForIdK
910
import cats.tagless.implicits.*
1011
import cats.~>
1112
import com.google.gson.JsonElement

modules/lsp/src/main/scala/playground/lsp/LanguageServer.scala

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import cats.parse.LocationMap
99
import cats.syntax.all.*
1010
import cats.tagless.Derive
1111
import cats.tagless.FunctorK
12+
import cats.tagless.catsTaglessApplyKForIdK
1213
import cats.tagless.implicits.*
1314
import cats.~>
1415
import com.google.gson.JsonElement

modules/lsp/src/main/scala/playground/lsp/ServerBuilder.scala

+2-22
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package playground.lsp
22

33
import cats.effect.implicits.*
44
import cats.effect.kernel.Async
5-
import cats.effect.kernel.MonadCancelThrow
65
import cats.effect.kernel.Resource
76
import cats.effect.std
87
import cats.syntax.all.*
@@ -46,7 +45,6 @@ object ServerBuilder {
4645
val makeClient = EmberClientBuilder
4746
.default[F]
4847
.build
49-
.map(middleware.BaseUri[F])
5048
.map(middleware.AuthorizationHeader[F])
5149
.map(
5250
Logger[F](
@@ -81,6 +79,7 @@ object ServerBuilder {
8179
.forSchemaIndex[F](
8280
dsi = dsi,
8381
client = client,
82+
baseUri = LanguageClient[F].configuration(ConfigurationValue.baseUri),
8483
awsEnv = awsEnv,
8584
plugins = plugins,
8685
)
@@ -99,26 +98,7 @@ object ServerBuilder {
9998

10099
private object middleware {
101100

102-
def BaseUri[F[_]: LanguageClient: MonadCancelThrow]: Client[F] => Client[F] =
103-
client =>
104-
Client[F] { req =>
105-
LanguageClient[F].configuration(ConfigurationValue.baseUri).toResource.flatMap { uri =>
106-
client.run(
107-
req.withUri(
108-
req
109-
.uri
110-
.copy(
111-
scheme = uri.scheme,
112-
authority = uri.authority,
113-
// prefixing with uri.path
114-
path = uri.path.addSegments(req.uri.path.segments),
115-
)
116-
)
117-
)
118-
}
119-
}
120-
121-
def AuthorizationHeader[F[_]: LanguageClient: MonadCancelThrow]: Client[F] => Client[F] =
101+
def AuthorizationHeader[F[_]: Async: LanguageClient]: Client[F] => Client[F] =
122102
client =>
123103
Client[F] { request =>
124104
val updatedRequest =

0 commit comments

Comments
 (0)