Skip to content

Commit 7fd0e31

Browse files
imsduSimon Dumas
andauthored
Migrate different Uri to use http4s and adopt only RFC-3986 (#5336)
* Migrate different Uri to use http4s and adopt only RFC-3986 * Add docs + fix warning --------- Co-authored-by: Simon Dumas <simon.dumas@senscience.ai>
1 parent a2bacb9 commit 7fd0e31

File tree

126 files changed

+490
-712
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+490
-712
lines changed

delta/app/src/main/scala/ch/epfl/bluebrain/nexus/delta/routes/OrganizationsRoutes.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ final class OrganizationsRoutes(
7878
extractCaller { implicit caller =>
7979
concat(
8080
// List organizations
81-
(get & extractUri & fromPaginated & orgsSearchParams & sort[Organization] & pathEndOrSingleSlash) {
81+
(get & extractHttp4sUri & fromPaginated & orgsSearchParams & sort[Organization] & pathEndOrSingleSlash) {
8282
(uri, pagination, params, order) =>
8383
implicit val searchJsonLdEncoder: JsonLdEncoder[SearchResults[OrganizationResource]] =
8484
searchResultsJsonLdEncoder(Organization.context, pagination, uri)

delta/app/src/main/scala/ch/epfl/bluebrain/nexus/delta/routes/ProjectsRoutes.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ final class ProjectsRoutes(
7575
extractCaller { implicit caller =>
7676
concat(
7777
// List projects
78-
(get & pathEndOrSingleSlash & extractUri & fromPaginated & projectsSearchParams &
78+
(get & pathEndOrSingleSlash & extractHttp4sUri & fromPaginated & projectsSearchParams &
7979
sort[Project]) { (uri, pagination, params, order) =>
8080
implicit val searchJsonLdEncoder: JsonLdEncoder[SearchResults[ProjectResource]] =
8181
searchResultsJsonLdEncoder(Project.context, pagination, uri)
@@ -157,7 +157,7 @@ final class ProjectsRoutes(
157157
)
158158
},
159159
// list projects for an organization
160-
(get & label & pathEndOrSingleSlash & extractUri & fromPaginated & projectsSearchParams &
160+
(get & label & pathEndOrSingleSlash & extractHttp4sUri & fromPaginated & projectsSearchParams &
161161
sort[Project]) { (organization, uri, pagination, params, order) =>
162162
implicit val searchJsonLdEncoder: JsonLdEncoder[SearchResults[ProjectResource]] =
163163
searchResultsJsonLdEncoder(Project.context, pagination, uri)

delta/app/src/main/scala/ch/epfl/bluebrain/nexus/delta/routes/RealmsRoutes.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class RealmsRoutes(identities: Identities, realms: Realms, aclCheck: AclCheck)(i
4949
extractCaller { implicit caller =>
5050
concat(
5151
// List realms
52-
(get & extractUri & fromPaginated & realmsSearchParams & sort[Realm] & pathEndOrSingleSlash) {
52+
(get & extractHttp4sUri & fromPaginated & realmsSearchParams & sort[Realm] & pathEndOrSingleSlash) {
5353
(uri, pagination, params, order) =>
5454
authorizeFor(AclAddress.Root, realmsPermissions.read).apply {
5555
implicit val encoder: JsonLdEncoder[SearchResults[RealmResource]] =

delta/app/src/main/scala/ch/epfl/bluebrain/nexus/delta/wiring/RealmsModule.scala

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@ import ch.epfl.bluebrain.nexus.delta.sdk.*
1212
import ch.epfl.bluebrain.nexus.delta.sdk.acls.AclCheck
1313
import ch.epfl.bluebrain.nexus.delta.sdk.identities.Identities
1414
import ch.epfl.bluebrain.nexus.delta.sdk.identities.model.ServiceAccount
15-
import ch.epfl.bluebrain.nexus.delta.sdk.instances.*
1615
import ch.epfl.bluebrain.nexus.delta.sdk.model.{BaseUri, MetadataContextValue}
17-
import ch.epfl.bluebrain.nexus.delta.sdk.realms.{RealmProvisioning, Realms, RealmsConfig, RealmsImpl}
16+
import ch.epfl.bluebrain.nexus.delta.sdk.realms.*
1817
import ch.epfl.bluebrain.nexus.delta.sourcing.Transactors
19-
import io.circe.Json
2018
import izumi.distage.model.definition.{Id, ModuleDef}
21-
import org.http4s.Uri
2219
import org.http4s.client.Client
2320
import org.http4s.ember.client.EmberClientBuilder
2421

@@ -39,7 +36,7 @@ object RealmsModule extends ModuleDef {
3936
client: Client[IO] @Id("realm"),
4037
xas: Transactors
4138
) =>
42-
val wellKnownResolver = realms.WellKnownResolver((uri: Uri) => client.expect[Json](uri)) _
39+
val wellKnownResolver = WellKnownResolver(client) _
4340
RealmsImpl(cfg, wellKnownResolver, xas, clock)
4441
}
4542

delta/app/src/test/scala/ch/epfl/bluebrain/nexus/delta/plugin/PluginLoaderSpec.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ import cats.effect.IO
55
import ch.epfl.bluebrain.nexus.delta.plugin.PluginsLoader.PluginLoaderConfig
66
import ch.epfl.bluebrain.nexus.delta.sdk.PriorityRoute
77
import ch.epfl.bluebrain.nexus.delta.sdk.model.BaseUri
8+
import ch.epfl.bluebrain.nexus.delta.sdk.syntax.*
89
import ch.epfl.bluebrain.nexus.testkit.scalatest.ce.CatsEffectSpec
910
import com.typesafe.config.impl.ConfigImpl
1011
import izumi.distage.model.definition.ModuleDef
1112

1213
class PluginLoaderSpec extends CatsEffectSpec with ScalatestRouteTest {
1314

14-
private val baseUri = BaseUri.withoutPrefix("http://localhost")
15+
private val baseUri = BaseUri.withoutPrefix(uri"http://localhost")
1516
private val serviceModule = new ModuleDef {
1617
make[BaseUri].fromValue(baseUri)
1718
}

delta/app/src/test/scala/ch/epfl/bluebrain/nexus/delta/routes/OrganizationsRoutesSpec.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,8 @@ class OrganizationsRoutesSpec extends BaseRouteSpec {
173173
}
174174

175175
"list organizations created by a user" in {
176-
Get(s"/v1/orgs?createdBy=${UrlUtils.encode(creatorOrg2.asIri.toString)}") ~> as(reader) ~> routes ~> check {
176+
val createdBy = UrlUtils.encodeUriQuery(creatorOrg2.asIri.toString)
177+
Get(s"/v1/orgs?createdBy=$createdBy") ~> as(reader) ~> routes ~> check {
177178
status shouldEqual StatusCodes.OK
178179
response.asJson should equalIgnoreArrayOrder(expectedResults(org2Created.removeKeys("@context")))
179180
}

delta/app/src/test/scala/ch/epfl/bluebrain/nexus/delta/routes/RealmsRoutesSpec.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package ch.epfl.bluebrain.nexus.delta.routes
22

33
import akka.http.scaladsl.model.StatusCodes
44
import akka.http.scaladsl.server.Route
5-
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UrlUtils
5+
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UrlUtils.encodeUriQuery
66
import ch.epfl.bluebrain.nexus.delta.rdf.Vocabulary.contexts
77
import ch.epfl.bluebrain.nexus.delta.sdk.acls.AclSimpleCheck
88
import ch.epfl.bluebrain.nexus.delta.sdk.acls.model.AclAddress
@@ -207,7 +207,7 @@ class RealmsRoutesSpec extends BaseRouteSpec with IOFromMap {
207207
}
208208

209209
"list realms created by alice" in {
210-
Get(s"/v1/realms?createdBy=${UrlUtils.encode(alice.asIri.toString)}") ~> routes ~> check {
210+
Get(s"/v1/realms?createdBy=${encodeUriQuery(alice.asIri.toString)}") ~> routes ~> check {
211211
status shouldEqual StatusCodes.OK
212212
response.asJson should equalIgnoreArrayOrder(
213213
expectedResults(

delta/app/src/test/scala/ch/epfl/bluebrain/nexus/delta/routes/ResolversRoutesSpec.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import akka.http.scaladsl.model.headers.{Accept, Location}
55
import akka.http.scaladsl.model.{StatusCodes, Uri}
66
import akka.http.scaladsl.server.Route
77
import cats.effect.IO
8-
import ch.epfl.bluebrain.nexus.delta.kernel.utils.{UUIDF, UrlUtils}
8+
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UUIDF
9+
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UrlUtils.encodeUriPath
910
import ch.epfl.bluebrain.nexus.delta.rdf.IriOrBNode.Iri
1011
import ch.epfl.bluebrain.nexus.delta.rdf.Vocabulary.{contexts, nxv, schema, schemas}
1112
import ch.epfl.bluebrain.nexus.delta.sdk.acls.AclSimpleCheck
@@ -577,9 +578,9 @@ class ResolversRoutesSpec extends BaseRouteSpec {
577578
}
578579
}
579580

580-
val idResourceEncoded = UrlUtils.encode(resourceId.toString)
581-
val idSchemaEncoded = UrlUtils.encode(schemaId.toString)
582-
val unknownResourceEncoded = UrlUtils.encode((nxv + "xxx").toString)
581+
val idResourceEncoded = encodeUriPath(resourceId.toString)
582+
val idSchemaEncoded = encodeUriPath(schemaId.toString)
583+
val unknownResourceEncoded = encodeUriPath((nxv + "xxx").toString)
583584

584585
val resourceResolved = jsonContentOf(
585586
"resolvers/resource-resolved.json",

delta/app/src/test/scala/ch/epfl/bluebrain/nexus/delta/routes/ResourcesRoutesSpec.scala

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import akka.http.scaladsl.model.headers.{Accept, Location, RawHeader}
55
import akka.http.scaladsl.model.{RequestEntity, StatusCodes, Uri}
66
import akka.http.scaladsl.server.Route
77
import cats.syntax.all.*
8-
import ch.epfl.bluebrain.nexus.delta.kernel.utils.{UUIDF, UrlUtils}
8+
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UUIDF
9+
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UrlUtils.encodeUriPath
910
import ch.epfl.bluebrain.nexus.delta.rdf.IriOrBNode.Iri
1011
import ch.epfl.bluebrain.nexus.delta.rdf.Vocabulary.{contexts, nxv, schema as schemaOrg, schemas}
1112
import ch.epfl.bluebrain.nexus.delta.rdf.jsonld.context.JsonLdContext.keywords
@@ -59,7 +60,7 @@ class ResourcesRoutesSpec extends BaseRouteSpec with ValidateResourceFixture wit
5960
private val tag = UserTag.unsafe("mytag")
6061

6162
private val myId = nxv + "myid" // Resource created against no schema with id present on the payload
62-
private def encodeWithBase(id: String) = UrlUtils.encode((nxv + id).toString)
63+
private def encodeWithBase(id: String) = encodeUriPath((nxv + id).toString)
6364
private val payload = jsonContentOf("resources/resource.json", "id" -> myId)
6465
private def simplePayload(id: String) = jsonContentOf("resources/resource.json", "id" -> (nxv + id))
6566
private val payloadWithoutId = payload.removeKeys(keywords.id)
@@ -563,7 +564,7 @@ class ResourcesRoutesSpec extends BaseRouteSpec with ValidateResourceFixture wit
563564
}
564565

565566
"fetch a resource original payload with metadata using tags and revisions" in {
566-
val mySchema = UrlUtils.encode(schemas.resources.toString)
567+
val mySchema = encodeUriPath(schemas.resources.toString)
567568
val myTag = "myTag"
568569
givenAResourceWithTag(myTag) { id =>
569570
val endpoints = List(
@@ -704,7 +705,7 @@ class ResourcesRoutesSpec extends BaseRouteSpec with ValidateResourceFixture wit
704705
val methods = List(Get, Put, Post, Delete)
705706
givenAResource { id =>
706707
forAll(methods) { method =>
707-
method(s"/v1/resources/myorg/myproject/myschema/${UrlUtils.encode(id)}/xxx") ~> as(
708+
method(s"/v1/resources/myorg/myproject/myschema/${encodeUriPath(id)}/xxx") ~> as(
708709
reader
709710
) ~> routes ~> check {
710711
status shouldEqual StatusCodes.NotFound

delta/app/src/test/scala/ch/epfl/bluebrain/nexus/delta/routes/ResourcesTrialRoutesSpec.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package ch.epfl.bluebrain.nexus.delta.routes
33
import akka.http.scaladsl.model.StatusCodes
44
import akka.http.scaladsl.server.Route
55
import cats.effect.IO
6-
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UrlUtils
6+
import ch.epfl.bluebrain.nexus.delta.kernel.utils.UrlUtils.encodeUriPath
77
import ch.epfl.bluebrain.nexus.delta.rdf.Vocabulary.{contexts, nxv, schemas}
88
import ch.epfl.bluebrain.nexus.delta.rdf.jsonld.context.JsonLdContext.keywords
99
import ch.epfl.bluebrain.nexus.delta.routes.ResourcesTrialRoutes.GenerateSchema
@@ -191,7 +191,7 @@ class ResourcesTrialRoutesSpec extends BaseRouteSpec with ResourceInstanceFixtur
191191
}
192192

193193
s"successfully validate $myId for a user with access against the unconstrained schema" in {
194-
val unconstrained = UrlUtils.encode(schemas.resources.toString)
194+
val unconstrained = encodeUriPath(schemas.resources.toString)
195195
Get(s"/v1/resources/$projectRef/$unconstrained/myId/validate") ~> as(alice) ~> routes ~> check {
196196
response.status shouldEqual StatusCodes.OK
197197
response.asJson shouldEqual
@@ -225,7 +225,7 @@ class ResourcesTrialRoutesSpec extends BaseRouteSpec with ResourceInstanceFixtur
225225

226226
"fail to validate an unknown resource" in {
227227
val unknownResource = nxv + "unknown"
228-
val unknownEncoded = UrlUtils.encode(unknownResource.toString)
228+
val unknownEncoded = encodeUriPath(unknownResource.toString)
229229
Get(s"/v1/resources/$projectRef/_/$unknownEncoded/validate") ~> as(alice) ~> routes ~> check {
230230
response.status shouldEqual StatusCodes.NotFound
231231
response.asJson shouldEqual jsonContentOf(

0 commit comments

Comments
 (0)