Skip to content

Commit 6854ee4

Browse files
zeal18aleksei-lesonen-wolt
authored andcommitted
Define zio-http submodule
1 parent d558520 commit 6854ee4

27 files changed

+2692
-3
lines changed

.github/labeler.yml

+5
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ scala-http4s:
3838
- modules/scala-http4s/src/main/**/*
3939
- project/src/main/scala/modules/scalaHttp4s.scala
4040

41+
scala-zio-http:
42+
- modules/scala-zio-http/*
43+
- modules/scala-zio-http/**/*
44+
- project/src/main/scala/modules/scalaZioHttp.scala
45+
4146
scala-support:
4247
- modules/scala-support/src/main/*
4348
- modules/scala-support/src/main/**/*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
_extends: guardrail:.github/release-drafter.yml
2+
name-template: 'scala-zio-http-v$RESOLVED_VERSION'
3+
tag-template: 'scala-zio-http-v$RESOLVED_VERSION'
4+
tag-prefix: scala-zio-http-v
5+
include-paths:
6+
- "modules/scala-zio-http/src/main/"
7+
- "project/src/main/scala/modules/scalaZioHttp.scala"

.github/workflows/ci.yml

+1
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ jobs:
101101
{ framework: 'akka-http', project: 'sample-akkaHttp' },
102102
{ framework: 'http4s', project: 'sample-http4s' },
103103
{ framework: 'http4s-v0.22', project: 'sample-http4s-v0_22' },
104+
{ framework: 'zio-http', project: 'sample-zio-http' },
104105
{ framework: 'akka-http-jackson', project: 'sample-akkaHttpJackson' },
105106
{ framework: 'dropwizard', project: 'sample-dropwizardScala' }
106107
]

.github/workflows/release-drafter.yml

+9
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,15 @@ jobs:
7979
config-name: release-drafter-scala-http4s.yml
8080
env:
8181
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
82+
scala-zio-http:
83+
name: '[scala-zio-http] Draft release'
84+
runs-on: ubuntu-20.04
85+
steps:
86+
- uses: blast-hardcheese/[email protected]
87+
with:
88+
config-name: release-drafter-scala-zio-http.yml
89+
env:
90+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
8291
scala-support:
8392
name: '[scala-support] Draft release'
8493
runs-on: ubuntu-20.04

.github/workflows/release.yml

+9
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,15 @@ jobs:
121121
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
122122
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
123123
GUARDRAIL_RELEASE_MODULE: ${{ steps.set-project-from-tag.outputs.module }}
124+
- name: 'Publish artifacts [scala-zio-http]'
125+
if: ${{ steps.set-project-from-tag.outputs.module == 'scala-zio-http' }}
126+
run: sbt 'show version' "project guardrail-scala-zio-http" clean compile versionCheck test ci-release
127+
env:
128+
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
129+
PGP_SECRET: ${{ secrets.PGP_SECRET }}
130+
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
131+
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
132+
GUARDRAIL_RELEASE_MODULE: ${{ steps.set-project-from-tag.outputs.module }}
124133
- name: 'Publish artifacts [scala-support]'
125134
if: ${{ steps.set-project-from-tag.outputs.module == 'scala-support' }}
126135
run: sbt 'show version' "project guardrail-scala-support" clean compile versionCheck test ci-release

.scalafmt.conf

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ project.includeFilters = [
1717
"modules/scala-akka-http/src/.*\\.scala"
1818
"modules/scala-dropwizard/src/.*\\.scala"
1919
"modules/scala-http4s/src/.*\\.scala"
20+
"modules/scala-zio-http/src/.*\\.scala"
2021
"modules/scala-support/src/.*\\.scala"
2122
]
2223

CONTRIBUTING.md

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Project structure
1111
- `scala-akka-http`: Generators for [`akka-http`](https://doc.akka.io/docs/akka-http/current/index.html) clients and servers
1212
- `scala-dropwizard`: Generators for [dropwizard](https://www.dropwizard.io/)
1313
- `scala-http4s`: Generators for [`http4s`](https://http4s.org/) clients and servers
14+
- `scala-zio-http`: Generators for [`zio-http`](https://zio.github.io/zio-http/) clients and servers
1415
- `scala-support`: Language definitions for Scala, as well as circe and Jackson generators
1516

1617
Coding guidelines

build.sbt

+10-2
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ lazy val root = modules.root.project
9898
.dependsOn(core % "compile->compile;test->test")
9999
.dependsOn(javaSupport, scalaSupport)
100100
.dependsOn(javaAsyncHttp, javaDropwizard, javaSpringMvc)
101-
.dependsOn(scalaAkkaHttp, scalaDropwizard, scalaHttp4s)
101+
.dependsOn(scalaAkkaHttp, scalaDropwizard, scalaHttp4s, scalaZioHttp)
102102
.dependsOn(cli)
103103
.aggregate(allDeps, microsite)
104104
.aggregate(
@@ -113,6 +113,7 @@ lazy val root = modules.root.project
113113
scalaSupport,
114114
scalaAkkaHttp,
115115
scalaHttp4s,
116+
scalaZioHttp,
116117
scalaDropwizard,
117118
)
118119

@@ -130,7 +131,8 @@ lazy val samples = (project in file("modules/samples"))
130131
scalaAkkaHttpSample,
131132
scalaDropwizardSample,
132133
scalaHttp4sSample,
133-
scalaHttp4sSampleV0_22
134+
scalaHttp4sSampleV0_22,
135+
scalaZioHttpSample,
134136
)
135137

136138
lazy val core = modules.core.project
@@ -144,6 +146,7 @@ lazy val cli = modules.cli.project
144146
.dependsOn(scalaSupport % "test->compile")
145147
.dependsOn(scalaAkkaHttp % "test->compile")
146148
.dependsOn(scalaHttp4s % "test->compile")
149+
.dependsOn(scalaZioHttp % "test->compile")
147150

148151
lazy val javaSupport = modules.javaSupport.project
149152
.customDependsOn("java-support", core)
@@ -177,6 +180,10 @@ lazy val scalaHttp4sSample = modules.scalaHttp4s.sample
177180
lazy val scalaHttp4s = modules.scalaHttp4s.project
178181
.customDependsOn("scala-support", scalaSupport)
179182

183+
lazy val scalaZioHttpSample = modules.scalaZioHttp.sample
184+
lazy val scalaZioHttp = modules.scalaZioHttp.project
185+
.customDependsOn("scala-support", scalaSupport)
186+
180187
lazy val scalaDropwizardSample = modules.scalaDropwizard.sample
181188
lazy val scalaDropwizard = modules.scalaDropwizard.project
182189
.customDependsOn("scala-support", scalaSupport)
@@ -189,6 +196,7 @@ lazy val microsite = baseModule("microsite", "microsite", file("modules/microsit
189196
)
190197
.dependsOn(scalaAkkaHttp)
191198
.dependsOn(scalaHttp4s)
199+
.dependsOn(scalaZioHttp)
192200

193201
watchSources ++= (baseDirectory.value / "modules/sample/src/test" ** "*.scala").get
194202
watchSources ++= (baseDirectory.value / "modules/sample/src/test" ** "*.java").get
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package examples.support
2+
3+
import examples.client.http4s.Implicits
4+
import io.circe.Decoder
5+
6+
class PositiveLong private (val value: Long) extends AnyVal
7+
object PositiveLong {
8+
def apply(value: Long): Option[PositiveLong] = if (value >= 0) Some(new PositiveLong(value)) else None
9+
implicit val showable = Implicits.Show.build[PositiveLong](_.value.toString())
10+
implicit val decodePositiveLong = Decoder.decodeLong.emap(num => PositiveLong.apply(num).toRight(s"${num} is not positive"))
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package tests.scalatest
2+
3+
import cats.Functor
4+
import cats.data.EitherT
5+
import org.scalactic.source
6+
import org.scalatest._
7+
import org.scalatest.exceptions.{ StackDepthException, TestFailedException }
8+
import scala.language.higherKinds
9+
import scala.language.implicitConversions
10+
11+
trait EitherTValues {
12+
13+
implicit def convertEitherTToValuable[F[_]: Functor, L, R](eitherT: EitherT[F, L, R]) = new EitherTValuable(eitherT)
14+
15+
class EitherTValuable[F[_]: Functor, L, R](eitherT: EitherT[F, L, R]) {
16+
def leftValue(implicit pos: source.Position): F[L] =
17+
eitherT.fold(identity, { _ =>
18+
throw new TestFailedException((_: StackDepthException) => Option.empty[String], Option.empty[Throwable], pos)
19+
})
20+
21+
def rightValue(implicit pos: source.Position): F[R] =
22+
eitherT.fold({ _ =>
23+
throw new TestFailedException((_: StackDepthException) => Option.empty[String], Option.empty[Throwable], pos)
24+
}, identity)
25+
}
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package swagger
2+
3+
import org.scalatest.matchers.should.Matchers
4+
import org.scalatest.funsuite.AnyFunSuite
5+
import examples.client.http4s.Implicits
6+
import examples.client.http4s.Http4sImplicits._
7+
8+
class EscapingTest extends AnyFunSuite with Matchers {
9+
test("Properly escape parameters") {
10+
Implicits.Formatter.addPath("foo bar baz") shouldEqual "foo%20bar%20baz"
11+
Implicits.Formatter.addPath("foo/bar") shouldEqual "foo%2Fbar"
12+
Implicits.Formatter.addArg("my key", "3=foo/bar baz!") shouldEqual "&my%20key=3%3Dfoo/bar%20baz%21"
13+
}
14+
}

modules/scala-support/src/main/scala/dev/guardrail/generators/scala/ScalaModuleMapper.scala

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class ScalaModuleMapper extends ModuleMapperLoader {
1212
case "http4s" => Some(Set("circe", "http4s"))
1313
case "http4s-v0.23" => Some(Set("circe", "http4s-v0.23"))
1414
case "http4s-v0.22" => Some(Set("circe", "http4s-v0.22"))
15+
case "zio-http" => Some(Set("circe", "zio-http")) // TODO: add and use zio-json instead of circe
1516
case "akka-http-jackson" => Some(Set("akka-http", "jackson"))
1617
case "dropwizard" => Some(Set("dropwizard", "jackson"))
1718
case _ => None
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dev.guardrail.generators.scala.zio.http.ZioHttpClientGeneratorLoader
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dev.guardrail.generators.scala.zio.http.ZioHttpGeneratorLoader
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
dev.guardrail.generators.scala.zio.http.ZioHttpServerGeneratorLoader

0 commit comments

Comments
 (0)