diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 11dfdc3387..0d3a10dd5f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -98,7 +98,7 @@ jobs:
run: sbt '++ ${{ matrix.scala }}' zioHttpShadedTests/test
- name: Compress target directories
- run: tar cf targets.tar sbt-zio-http-grpc/target zio-http-cli/target target zio-http/jvm/target zio-http-docs/target sbt-zio-http-grpc-tests/target zio-http-gen/target zio-http-benchmarks/target zio-http-example/target zio-http-testkit/target zio-http/js/target zio-http-htmx/target project/target
+ run: tar cf targets.tar sbt-zio-http-grpc/target zio-http-cli/target target zio-http/jvm/target zio-http-docs/target sbt-zio-http-grpc-tests/target zio-http-gen/target zio-http-benchmarks/target zio-http-tools/target zio-http-example/target zio-http-testkit/target zio-http/js/target zio-http-htmx/target project/target
- name: Upload target directories
uses: actions/upload-artifact@v4
@@ -285,6 +285,40 @@ jobs:
name: Jmh_Main_CachedDateHeaderBenchmark
path: Main_CachedDateHeaderBenchmark.txt
+ Jmh_ClientBenchmark:
+ name: Jmh ClientBenchmark
+ if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest]
+ scala: [2.13.14]
+ java: [temurin@8]
+ runs-on: ${{ matrix.os }}
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ path: zio-http
+
+ - uses: actions/setup-java@v2
+ with:
+ distribution: temurin
+ java-version: 11
+
+ - name: Benchmark_Main
+ id: Benchmark_Main
+ env:
+ GITHUB_TOKEN: ${{secrets.ACTIONS_PAT}}
+ run: |
+ cd zio-http
+ sed -i -e '$aaddSbtPlugin("pl.project13.scala" % "sbt-jmh" % "0.4.7")' project/plugins.sbt
+ cat > Main_ClientBenchmark.txt
+ sbt -no-colors -v "zioHttpBenchmarks/jmh:run -i 3 -wi 3 -f1 -t1 ClientBenchmark" | grep -e "thrpt" -e "avgt" >> ../Main_ClientBenchmark.txt
+
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Jmh_Main_ClientBenchmark
+ path: Main_ClientBenchmark.txt
+
Jmh_CookieDecodeBenchmark:
name: Jmh CookieDecodeBenchmark
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
@@ -627,7 +661,7 @@ jobs:
Jmh_cache:
name: Cache Jmh benchmarks
- needs: [Jmh_CachedDateHeaderBenchmark, Jmh_CookieDecodeBenchmark, Jmh_EndpointBenchmark, Jmh_HttpCollectEval, Jmh_HttpCombineEval, Jmh_HttpNestedFlatMapEval, Jmh_HttpRouteTextPerf, Jmh_ProbeContentTypeBenchmark, Jmh_SchemeDecodeBenchmark, Jmh_ServerInboundHandlerBenchmark, Jmh_UtilBenchmark]
+ needs: [Jmh_CachedDateHeaderBenchmark, Jmh_ClientBenchmark, Jmh_CookieDecodeBenchmark, Jmh_EndpointBenchmark, Jmh_HttpCollectEval, Jmh_HttpCombineEval, Jmh_HttpNestedFlatMapEval, Jmh_HttpRouteTextPerf, Jmh_ProbeContentTypeBenchmark, Jmh_SchemeDecodeBenchmark, Jmh_ServerInboundHandlerBenchmark, Jmh_UtilBenchmark]
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
strategy:
matrix:
@@ -643,6 +677,13 @@ jobs:
- name: Format_Main_CachedDateHeaderBenchmark
run: cat Main_CachedDateHeaderBenchmark.txt >> Main_benchmarks.txt
+ - uses: actions/download-artifact@v3
+ with:
+ name: Jmh_Main_ClientBenchmark
+
+ - name: Format_Main_ClientBenchmark
+ run: cat Main_ClientBenchmark.txt >> Main_benchmarks.txt
+
- uses: actions/download-artifact@v3
with:
name: Jmh_Main_CookieDecodeBenchmark
diff --git a/.github/workflows/site.yml b/.github/workflows/site.yml
index 65b15c12c6..027da47ab4 100644
--- a/.github/workflows/site.yml
+++ b/.github/workflows/site.yml
@@ -57,40 +57,64 @@ jobs:
run: sbt docs/publishToNpm
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- generate-readme:
- name: Generate README
+ update-readme:
+ name: Update README
runs-on: ubuntu-latest
- if: ${{ (github.event_name == 'push') || ((github.event_name == 'release') && (github.event.action == 'published')) }}
+ continue-on-error: false
+ if: ${{ github.event_name == 'push' }}
steps:
- name: Git Checkout
- uses: actions/checkout@v3.3.0
+ uses: actions/checkout@v4
with:
- ref: ${{ github.head_ref }}
fetch-depth: '0'
+ - name: Install libuv
+ run: sudo apt-get update && sudo apt-get install -y libuv1-dev
- name: Setup Scala
- uses: actions/setup-java@v3.9.0
+ uses: actions/setup-java@v4
with:
- distribution: temurin
- java-version: 17
+ distribution: corretto
+ java-version: '17'
check-latest: true
+ - name: Cache Dependencies
+ uses: coursier/cache-action@v6
- name: Generate Readme
- run: sbt docs/generateReadme
+ run: sbt docs/generateReadme
- name: Commit Changes
run: |
- git config --local user.email "github-actions[bot]@users.noreply.github.com"
- git config --local user.name "github-actions[bot]"
+ git config --local user.email "zio-assistant[bot]@users.noreply.github.com"
+ git config --local user.name "ZIO Assistant"
git add README.md
git commit -m "Update README.md" || echo "No changes to commit"
+ - name: Generate Token
+ id: generate-token
+ uses: zio/generate-github-app-token@v1.0.0
+ with:
+ app_id: ${{ secrets.APP_ID }}
+ app_private_key: ${{ secrets.APP_PRIVATE_KEY }}
- name: Create Pull Request
- uses: peter-evans/create-pull-request@v4.2.3
+ id: cpr
+ uses: peter-evans/create-pull-request@v6
with:
body: |-
Autogenerated changes after running the `sbt docs/generateReadme` command of the [zio-sbt-website](https://zio.dev/zio-sbt) plugin.
- I will automatically update the README.md file whenever there is new change for README.md, e.g.
+ I will automatically update the README.md file whenever there is a new change for README.md, e.g.
- After each release, I will update the version in the installation section.
- After any changes to the "docs/index.md" file, I will update the README.md file accordingly.
branch: zio-sbt-website/update-readme
commit-message: Update README.md
+ token: ${{ steps.generate-token.outputs.token }}
delete-branch: true
title: Update README.md
+ - name: Approve PR
+ if: ${{ steps.cpr.outputs.pull-request-number }}
+ run: gh pr review "$PR_URL" --approve
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_URL: ${{ steps.cpr.outputs.pull-request-url }}
+ - name: Enable Auto-Merge
+ if: ${{ steps.cpr.outputs.pull-request-number }}
+ run: gh pr merge --auto --squash "$PR_URL" || gh pr merge --squash "$PR_URL"
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ PR_URL: ${{ steps.cpr.outputs.pull-request-url }}
diff --git a/README.md b/README.md
index edd2f749f5..27e69d5183 100644
--- a/README.md
+++ b/README.md
@@ -13,17 +13,29 @@ ZIO HTTP is designed in terms of **HTTP as function**, where both server and cli
Some of the key features of ZIO HTTP are:
**ZIO Native**: ZIO HTTP is built atop ZIO, a type-safe, composable, and asynchronous effect system for Scala. It inherits all the benefits of ZIO, including testability, composability, and type safety.
+
**Cloud-Native**: ZIO HTTP is designed for cloud-native environments and supports building highly scalable and performant web applications. Built atop ZIO, it features built-in support for concurrency, parallelism, resource management, error handling, structured logging, configuration management, and metrics instrumentation.
+
**Imperative and Declarative Endpoints**: ZIO HTTP provides a declarative API for defining HTTP endpoints besides the imperative API. With imperative endpoints, both the shape of the endpoint and the logic are defined together, while with declarative endpoints, the description of the endpoint is separated from its logic. Developers can choose the style that best fit their needs.
+
**Type-Driven API Design**: Beside the fact that ZIO HTTP supports declarative endpoint descriptions, it also provides a type-driven API design that leverages Scala's type system to ensure correctness and safety at compile time. So the implementation of the endpoint is type-checked against the description of the endpoint.
+
**Middleware Support**: ZIO HTTP offers middleware support for incorporating cross-cutting concerns such as logging, metrics, authentication, and more into your services.
+
**Error Handling**: Built-in support exists for handling errors at the HTTP layer, distinguishing between handled and unhandled errors.
+
**WebSockets**: Built-in support for WebSockets allows for the creation of real-time applications using ZIO HTTP.
+
**Testkit**: ZIO HTTP provides first-class testing utilities that facilitate test writing without requiring a live server instance.
+
**Interoperability**: Interoperability with existing Scala/Java libraries is provided, enabling seamless integration with functionality from the Scala/Java ecosystem through the importation of blocking and non-blocking operations.
+
**JSON and Binary Codecs**: Built-in support for ZIO Schema enables encoding and decoding of request/response bodies, supporting various data types including JSON, Protobuf, Avro, and Thrift.
+
**Template System**: A built-in DSL facilitates writing HTML templates using Scala code.
+
**OpenAPI Support**: Built-in support is available for generating OpenAPI documentation for HTTP applications, and conversely, for generating HTTP endpoints from OpenAPI documentation.
+
**ZIO HTTP CLI**: Command-line applications can be built to interact with HTTP APIs by leveraging the power of [ZIO CLI](https://zio.dev/zio-cli) and ZIO HTTP.
## Installation
@@ -31,7 +43,7 @@ Some of the key features of ZIO HTTP are:
Setup via `build.sbt`:
```scala
-libraryDependencies += "dev.zio" %% "zio-http" % "3.0.0-RC7"
+libraryDependencies += "dev.zio" %% "zio-http" % "3.0.0-RC9"
```
**NOTES ON VERSIONING:**
@@ -91,7 +103,7 @@ object GreetingClient extends ZIOAppDefault {
## Documentation
-Learn more on the [ZIO Http homepage](https://github.com/zio/zio-http)!
+Learn more on the [ZIO Http homepage](https://zio.dev/zio-http)!
## Contributing
diff --git a/aliases.sbt b/aliases.sbt
index 5685932874..1a952200cf 100644
--- a/aliases.sbt
+++ b/aliases.sbt
@@ -2,6 +2,7 @@ addCommandAlias("fmt", "scalafmt; Test / scalafmt; sFix;")
addCommandAlias("fmtCheck", "scalafmtCheck; Test / scalafmtCheck; sFixCheck")
addCommandAlias("sFix", "scalafix OrganizeImports; Test / scalafix OrganizeImports")
addCommandAlias("sFixCheck", "scalafix --check OrganizeImports; Test / scalafix --check OrganizeImports")
+addCommandAlias("generateMediaTypes", "zioHttpTools/runMain zio.http.tools.GenerateMediaTypes")
onLoadMessage := {
import scala.Console._
diff --git a/build.sbt b/build.sbt
index 10bf818f06..bd5bda7e16 100644
--- a/build.sbt
+++ b/build.sbt
@@ -128,6 +128,7 @@ lazy val aggregatedProjects: Seq[ProjectReference] =
zioHttpHtmx,
zioHttpExample,
zioHttpTestkit,
+ zioHttpTools,
docs,
)
}
@@ -267,6 +268,10 @@ lazy val zioHttpHtmx = (project in file("zio-http-htmx"))
.settings(
stdSettings("zio-http-htmx"),
publishSetting(true),
+ libraryDependencies ++= Seq(
+ `zio-test`,
+ `zio-test-sbt`,
+ ),
)
.dependsOn(zioHttpJVM)
@@ -286,6 +291,12 @@ lazy val zioHttpExample = (project in file("zio-http-example"))
)
.dependsOn(zioHttpJVM, zioHttpCli, zioHttpGen)
+lazy val zioHttpTools = (project in file("zio-http-tools"))
+ .settings(stdSettings("zio-http-tools"))
+ .settings(publishSetting(false))
+ .settings(runSettings(Debug.Main))
+ .dependsOn(zioHttpJVM)
+
lazy val zioHttpGen = (project in file("zio-http-gen"))
.settings(stdSettings("zio-http-gen"))
.settings(publishSetting(true))
diff --git a/docs/guides/testing-http-apps.md b/docs/guides/testing-http-apps.md
index 1c857beeae..f5ff813ea1 100644
--- a/docs/guides/testing-http-apps.md
+++ b/docs/guides/testing-http-apps.md
@@ -9,7 +9,7 @@ Testing HTTP applications is a critical part of the development process. Utilizi
We have comprehensive documentation on [ZIO Test](https://zio.dev/reference/test/) which is worth reading to understand how to write tests using ZIO effects.
-It is easy to test ZIO HTTP applications beacuse we can think of `HttpApp` as a function of `Request => ZIO[R, Response, Response]`. This means we can effortlessly provide a Request as input to the `HttpApp` and receive the corresponding Response as output using the runZIO method. By doing this we can test the behavior of the `HttpApp` in a controlled environment:
+It is easy to test ZIO HTTP applications because we can think of `HttpApp` as a function of `Request => ZIO[R, Response, Response]`. This means we can effortlessly provide a Request as input to the `HttpApp` and receive the corresponding Response as output using the runZIO method. By doing this we can test the behavior of the `HttpApp` in a controlled environment:
```scala mdoc:silent:reset
import zio.test._
@@ -20,7 +20,7 @@ object ExampleSpec extends ZIOSpecDefault {
def spec = suite("http")(
test("should be ok") {
- val app = Handler.ok.toHttpApp
+ val app = Handler.ok.toRoutes
val req = Request.get(URL(Path.root))
assertZIO(app.runZIO(req))(equalTo(Response.ok))
}
@@ -105,7 +105,7 @@ object TestServerExampleSpec extends ZIOSpecDefault {
test("test hello and fallback routes") {
for {
client <- ZIO.service[Client]
- port <- ZIO.serviceWith[Server](_.port)
+ port <- ZIO.serviceWithZIO[Server](_.port)
testRequest = Request
.get(url = URL.root.port(port))
.addHeaders(Headers(Header.Accept(MediaType.text.`plain`)))
diff --git a/docs/reference/endpoint.md b/docs/reference/endpoint.md
index 22a6bf5f27..46563e41e5 100644
--- a/docs/reference/endpoint.md
+++ b/docs/reference/endpoint.md
@@ -34,7 +34,7 @@ In the above example, we defined an endpoint on the path `/books` that accepts a
After defining the endpoint, we are ready to implement it. We can implement it using the `Endpoint#implement` method, which takes a proper handler function that will be called when the endpoint is invoked and returns a `Route`:
```scala
-val booksRoute = endpoint.implement(handler((query: String) => BookRepo.find(query)))
+val booksRoute = endpoint.implement(query => BookRepo.find(query))
```
We can also generate OpenAPI documentation for our endpoint using the `OpenAPIGen.fromEndpoints` constructor:
@@ -261,13 +261,13 @@ object EndpointWithMultipleOutputTypes extends ZIOAppDefault {
.out[Quiz]
def run = Server.serve(
- endpoint.implement(handler {
+ endpoint.implement(_ =>
ZIO.randomWith(_.nextBoolean)
.map(r =>
if (r) Right(Course("Introduction to Programming", 49.99))
else Left(Quiz("What is the boiling point of water in Celsius?", 2)),
)
- })
+ )
.toRoutes).provide(Server.default, Scope.default)
}
```
@@ -417,7 +417,7 @@ case class Book(
The `OpenAPIGen.fromEndpoints` constructor generates OpenAPI documentation from the endpoints. By having the OpenAPI documentation, we can easily generate Swagger UI routes using the `SwaggerUI.routes` constructor:
```scala
-val booksRoute = endpoint.implement(handler((query: String) => BookRepo.find(query)))
+val booksRoute = endpoint.implement(query => BookRepo.find(query))
val openAPI = OpenAPIGen.fromEndpoints(title = "Library API", version = "1.0", endpoint)
val swaggerRoutes = SwaggerUI.routes("docs" / "openapi", openAPI)
val routes = Routes(booksRoute) ++ swaggerRoutes
diff --git a/docs/tutorials/testing-http-apps.md b/docs/tutorials/testing-http-apps.md
new file mode 100644
index 0000000000..f5ff813ea1
--- /dev/null
+++ b/docs/tutorials/testing-http-apps.md
@@ -0,0 +1,135 @@
+---
+id: testing-http-apps
+title: Testing HTTP Applications
+---
+
+Testing HTTP applications is a critical part of the development process. Utilizing the ZIO Test we can write first-class tests for our HTTP applications.
+
+## ZIO Test
+
+We have comprehensive documentation on [ZIO Test](https://zio.dev/reference/test/) which is worth reading to understand how to write tests using ZIO effects.
+
+It is easy to test ZIO HTTP applications because we can think of `HttpApp` as a function of `Request => ZIO[R, Response, Response]`. This means we can effortlessly provide a Request as input to the `HttpApp` and receive the corresponding Response as output using the runZIO method. By doing this we can test the behavior of the `HttpApp` in a controlled environment:
+
+```scala mdoc:silent:reset
+import zio.test._
+import zio.test.Assertion.equalTo
+import zio.http._
+
+object ExampleSpec extends ZIOSpecDefault {
+
+ def spec = suite("http")(
+ test("should be ok") {
+ val app = Handler.ok.toRoutes
+ val req = Request.get(URL(Path.root))
+ assertZIO(app.runZIO(req))(equalTo(Response.ok))
+ }
+ )
+}
+```
+
+## ZIO HTTP Testkit
+
+Also, ZIO HTTP provides a testkit called `zio-http-testkit` that includes `TestClient` and `TestServer` utilities which helps us to test our HTTP applications without the need for having a real live client and server instances.
+
+```scala
+libraryDependencies += "dev.zio" %% "zio-test" % "@ZIO_VERSION@" % Test
+libraryDependencies += "dev.zio" %% "zio-test-sbt" % "@ZIO_VERSION@" % Test
+libraryDependencies += "dev.zio" %% "zio-http-testkit" % "@VERSION@" % Test
+testFrameworks += new TestFramework("zio.test.sbt.ZTestFramework")
+```
+
+Now, based on the requirement we can use any of the following test utilities:
+
+## TestClinet
+
+The `TestClient`
+
+Using the `TestClient` we can write tests for our HTTP applications without starting a live server instance.
+
+Using following methods we can define the behavior of the `TestClient`:
+
+- `TestClient.addRequestResponse` - Adds an exact 1-1 behavior. It takes a request and a response and returns a `ZIO[TestClient, Nothing, Unit]`.
+- `TestClient.addRoute` and `addRouts` - Adds a route definition to handle requests that are submitted by test cases. It takes a `Route` or `Routes` and returns a `ZIO[R with TestClient, Nothing, Unit]`.
+- `TestClient.installSocketApp` - Installs a `WebSocketApp` to the `TestClient`.
+
+After defining the behavior of the test client, we can use the `TestClient.layer` to provide the `TestClient` and `Client` to the test cases:
+
+```scala mdoc:compile-only
+import zio._
+import zio.http._
+import zio.test.{test, _}
+
+object TestUsingTestClient extends ZIOSpecDefault {
+ def spec =
+ test("hello world route and fallback") {
+ for {
+ client <- ZIO.service[Client]
+ _ <- TestClient.addRoutes {
+ Routes(
+ Method.GET / trailing -> handler { Response.text("fallback") },
+ Method.GET / "hello" / "world" -> handler { Response.text("Hey there!") },
+ )
+ }
+ helloResponse <- client(Request.get(URL.root / "hello" / "world"))
+ helloBody <- helloResponse.body.asString
+ fallbackResponse <- client(Request.get(URL.root / "any"))
+ fallbackBody <- fallbackResponse.body.asString
+ } yield assertTrue(helloBody == "Hey there!", fallbackBody == "fallback")
+ }.provide(TestClient.layer, Scope.default)
+}
+```
+
+## TestServer
+
+Using the `TestServer` we can write tests for our HTTP applications by starting a live server instance on the localhost.
+
+Using the following methods we can define the behavior of the `TestServer`:
+
+- `TestServer.addRequestResponse` - Adds an exact 1-1 behavior. It takes a request and a response and returns a `ZIO[TestServer, Nothing, Unit]`.
+- `TestServer.addRoute` and `TestServer.addRouts` - Adds a route definition to handle requests that are submitted by test cases. It takes a `Route` or `Routes` and returns a `ZIO[R with TestServer, Nothing, Unit]`.
+- `TestServer.install` - Installs a `HttpApp` to the `TestServer`.
+
+After defining the behavior of the test server, we can use the `TestServer.layer` to provide the `TestServer` to any test cases that require `Server`:
+
+```scala mdoc:compile-only
+import zio._
+import zio.http._
+import zio.http.netty.NettyConfig
+import zio.http.netty.server.NettyDriver
+import zio.test._
+
+object TestServerExampleSpec extends ZIOSpecDefault {
+
+ def spec = suite("test http app") {
+ test("test hello and fallback routes") {
+ for {
+ client <- ZIO.service[Client]
+ port <- ZIO.serviceWithZIO[Server](_.port)
+ testRequest = Request
+ .get(url = URL.root.port(port))
+ .addHeaders(Headers(Header.Accept(MediaType.text.`plain`)))
+ _ <- TestServer.addRoutes {
+ Routes(
+ Method.GET / trailing -> handler {
+ Response.text("fallback")
+ },
+ Method.GET / "hello" / "world" -> handler {
+ Response.text("Hey there!")
+ },
+ )
+ }
+ helloResponse <- client(Request.get(testRequest.url / "hello" / "world"))
+ helloBody <- helloResponse.body.asString
+ fallbackResponse <- client(Request.get(testRequest.url / "any"))
+ fallbackBody <- fallbackResponse.body.asString
+ } yield assertTrue(helloBody == "Hey there!", fallbackBody == "fallback")
+ }.provideSome[Client with Driver](TestServer.layer, Scope.default)
+ }.provide(
+ ZLayer.succeed(Server.Config.default.onAnyOpenPort),
+ Client.default,
+ NettyDriver.customized,
+ ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
+ )
+}
+```
diff --git a/project/BuildHelper.scala b/project/BuildHelper.scala
index 9f5485ac0c..44e6243a86 100644
--- a/project/BuildHelper.scala
+++ b/project/BuildHelper.scala
@@ -102,7 +102,7 @@ object BuildHelper extends ScalaSettings {
)
def meta = Seq(
- ThisBuild / homepage := Some(url("https://github.com/zio/zio-http")),
+ ThisBuild / homepage := Some(url("https://zio.dev/zio-http")),
ThisBuild / scmInfo :=
Some(
ScmInfo(url("https://github.com/zio/zio-http"), "scm:git@github.com:zio/zio-http.git"),
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index c463b5febf..f8d043a3ad 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -8,7 +8,7 @@ object Dependencies {
val ZioVersion = "2.1.1"
val ZioCliVersion = "0.5.0"
val ZioJsonVersion = "0.6.2"
- val ZioSchemaVersion = "1.2.0"
+ val ZioSchemaVersion = "1.2.1"
val SttpVersion = "3.3.18"
val ZioConfigVersion = "4.0.2"
diff --git a/sbt-zio-http-grpc-tests/src/test/scala/zio/http/grpc/ZIOHttpGRPCGenSpec.scala b/sbt-zio-http-grpc-tests/src/test/scala/zio/http/grpc/ZIOHttpGRPCGenSpec.scala
index 4b9fa8c124..38cf5b4630 100644
--- a/sbt-zio-http-grpc-tests/src/test/scala/zio/http/grpc/ZIOHttpGRPCGenSpec.scala
+++ b/sbt-zio-http-grpc-tests/src/test/scala/zio/http/grpc/ZIOHttpGRPCGenSpec.scala
@@ -13,11 +13,7 @@ object ZIOHttpGRPCGenSpec extends ZIOSpecDefault {
assertTrue(true)
},
test("plugin generates Endpoint") {
- val impl = V1.test.implement {
- Handler.fromFunction[TestMsg] { msg =>
- msg
- }
- }
+ val impl = V1.test.implementPurely { msg => msg }
assertTrue(true)
},
)
diff --git a/zio-http-benchmarks/src/main/scala-2.13/zio/http/benchmarks/EndpointBenchmark.scala b/zio-http-benchmarks/src/main/scala-2.13/zio/http/benchmarks/EndpointBenchmark.scala
index 21f76759e8..0dc79c735d 100644
--- a/zio-http-benchmarks/src/main/scala-2.13/zio/http/benchmarks/EndpointBenchmark.scala
+++ b/zio-http-benchmarks/src/main/scala-2.13/zio/http/benchmarks/EndpointBenchmark.scala
@@ -95,7 +95,7 @@ class EndpointBenchmark {
.out[ExampleData]
val handledUsersPosts =
- usersPosts.implement {
+ usersPosts.implementHandler {
Handler.fromFunction { case (userId, postId, limit) =>
ExampleData(userId, postId, limit)
}
@@ -218,7 +218,7 @@ class EndpointBenchmark {
) / "seventh" / int("id5"),
)
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
.toRoutes
// Collect DSL
@@ -333,20 +333,20 @@ class EndpointBenchmark {
// API DSL
- val broadUsers = Endpoint(Method.GET / "users").out[Unit].implement(Handler.unit)
+ val broadUsers = Endpoint(Method.GET / "users").out[Unit].implementHandler(Handler.unit)
val broadUsersId =
- Endpoint(Method.GET / "users" / int("userId")).out[Unit].implement(Handler.unit)
+ Endpoint(Method.GET / "users" / int("userId")).out[Unit].implementHandler(Handler.unit)
val boardUsersPosts =
Endpoint(Method.GET / "users" / int("userId") / "posts")
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val boardUsersPostsId =
Endpoint(
Method.GET /
"users" / int("userId") / "posts" / int("postId"),
)
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val boardUsersPostsComments =
Endpoint(
Method.GET /
@@ -355,7 +355,7 @@ class EndpointBenchmark {
) / "comments",
)
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val boardUsersPostsCommentsId =
Endpoint(
Method.GET /
@@ -364,14 +364,14 @@ class EndpointBenchmark {
) / "comments" / int("commentId"),
)
.out[Unit]
- .implement(Handler.unit)
- val broadPosts = Endpoint(Method.GET / "posts").out[Unit].implement(Handler.unit)
+ .implementHandler(Handler.unit)
+ val broadPosts = Endpoint(Method.GET / "posts").out[Unit].implementHandler(Handler.unit)
val broadPostsId =
- Endpoint(Method.GET / "posts" / int("postId")).out[Unit].implement(Handler.unit)
+ Endpoint(Method.GET / "posts" / int("postId")).out[Unit].implementHandler(Handler.unit)
val boardPostsComments =
Endpoint(Method.GET / "posts" / int("postId") / "comments")
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val boardPostsCommentsId =
Endpoint(
Method.GET /
@@ -380,14 +380,14 @@ class EndpointBenchmark {
),
)
.out[Unit]
- .implement(Handler.unit)
- val broadComments = Endpoint(Method.GET / "comments").out[Unit].implement(Handler.unit)
+ .implementHandler(Handler.unit)
+ val broadComments = Endpoint(Method.GET / "comments").out[Unit].implementHandler(Handler.unit)
val broadCommentsId =
- Endpoint(Method.GET / "comments" / int("commentId")).out[Unit].implement(Handler.unit)
+ Endpoint(Method.GET / "comments" / int("commentId")).out[Unit].implementHandler(Handler.unit)
val broadUsersComments =
Endpoint(Method.GET / "users" / int("userId") / "comments")
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val broadUsersCommentsId =
Endpoint(
Method.GET /
@@ -396,7 +396,7 @@ class EndpointBenchmark {
),
)
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val boardUsersPostsCommentsReplies =
Endpoint(
Method.GET /
@@ -406,7 +406,7 @@ class EndpointBenchmark {
"replies",
)
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val boardUsersPostsCommentsRepliesId =
Endpoint(
Method.GET /
@@ -415,7 +415,7 @@ class EndpointBenchmark {
) / "comments" / int("commentId") / "replies" / int("replyId"),
)
.out[Unit]
- .implement(Handler.unit)
+ .implementHandler(Handler.unit)
val broadApiApp =
Routes(
diff --git a/zio-http-benchmarks/src/main/scala/zhttp.benchmarks/ClientBenchmark.scala b/zio-http-benchmarks/src/main/scala/zhttp.benchmarks/ClientBenchmark.scala
new file mode 100644
index 0000000000..b681ec774b
--- /dev/null
+++ b/zio-http-benchmarks/src/main/scala/zhttp.benchmarks/ClientBenchmark.scala
@@ -0,0 +1,97 @@
+package zhttp.benchmarks
+
+import java.util.concurrent.TimeUnit
+
+import scala.annotation.nowarn
+
+import zio._
+
+import zio.http._
+
+import org.openjdk.jmh.annotations._
+
+@nowarn
+@State(org.openjdk.jmh.annotations.Scope.Benchmark)
+@BenchmarkMode(Array(Mode.Throughput))
+@OutputTimeUnit(TimeUnit.SECONDS)
+@Warmup(iterations = 3, time = 3)
+@Measurement(iterations = 3, time = 3)
+@Fork(1)
+class ClientBenchmark {
+ private val random = scala.util.Random
+ random.setSeed(42)
+
+ private implicit val unsafe: Unsafe = Unsafe.unsafe(identity)
+
+ @Param(Array("small", "large"))
+ var path: String = _
+
+ private val smallString = "Hello!".getBytes
+ private val largeString = random.alphanumeric.take(10000).mkString.getBytes
+
+ private val smallRequest = Request(url = url"http://0.0.0.0:8080/small")
+ private val largeRequest = Request(url = url"http://0.0.0.0:8080/large")
+
+ private val smallResponse = Response(status = Status.Ok, body = Body.fromArray(smallString))
+ private val largeResponse = Response(status = Status.Ok, body = Body.fromArray(largeString))
+
+ private val smallRoute = Route.route(Method.GET / "small")(handler(smallResponse))
+ private val largeRoute = Route.route(Method.GET / "large")(handler(largeResponse))
+
+ private val shutdownResponse = Response.text("shutting down")
+
+ private def shutdownRoute(shutdownSignal: Promise[Nothing, Unit]) =
+ Route.route(Method.GET / "shutdown")(handler(shutdownSignal.succeed(()).as(shutdownResponse)))
+
+ private def http(shutdownSignal: Promise[Nothing, Unit]) =
+ Routes(smallRoute, largeRoute, shutdownRoute(shutdownSignal))
+
+ private val rtm = Runtime.unsafe.fromLayer(ZClient.default)
+ private val runtime = rtm.unsafe
+
+ private def run(f: RIO[Client, Any]): Any = runtime.run(f).getOrThrow()
+
+ @Setup(Level.Trial)
+ def setup(): Unit = {
+ val startServer: Task[Unit] = (for {
+ shutdownSignal <- Promise.make[Nothing, Unit]
+ fiber <- Server.serve(http(shutdownSignal)).fork
+ _ <- shutdownSignal.await *> fiber.interrupt
+ } yield ()).provideLayer(Server.default)
+
+ val waitForServerStarted: Task[Unit] = (for {
+ client <- ZIO.service[Client]
+ _ <- client.request(smallRequest)
+ } yield ()).provide(ZClient.default, zio.Scope.default)
+
+ run(startServer.forkDaemon *> waitForServerStarted.retry(Schedule.fixed(1.second)))
+ }
+
+ @TearDown(Level.Trial)
+ def tearDown(): Unit = {
+ val stopServer = (for {
+ client <- ZIO.service[Client]
+ _ <- client.request(Request(url = url"http://localhost:8080/shutdown"))
+ } yield ()).provide(ZClient.default, zio.Scope.default)
+ run(stopServer)
+ rtm.shutdown0()
+ }
+
+ @Benchmark
+ @OperationsPerInvocation(100)
+ def zhttpChunkBenchmark(): Any = run {
+ val req = if (path == "small") smallRequest else largeRequest
+ ZIO.serviceWithZIO[Client] { client =>
+ ZIO.scoped(client.request(req).flatMap(_.body.asChunk)).repeatN(100)
+ }
+ }
+
+ @Benchmark
+ @OperationsPerInvocation(100)
+ def zhttpStreamToChunkBenchmark(): Any = run {
+ val req = if (path == "small") smallRequest else largeRequest
+ ZIO.serviceWithZIO[Client] { client =>
+ ZIO.scoped(client.request(req).flatMap(_.body.asStream.runCollect)).repeatN(100)
+ }
+ }
+}
diff --git a/zio-http-cli/src/main/scala/zio/http/endpoint/cli/CliEndpoint.scala b/zio-http-cli/src/main/scala/zio/http/endpoint/cli/CliEndpoint.scala
index 4480248472..0067004bb9 100644
--- a/zio-http-cli/src/main/scala/zio/http/endpoint/cli/CliEndpoint.scala
+++ b/zio-http-cli/src/main/scala/zio/http/endpoint/cli/CliEndpoint.scala
@@ -57,7 +57,7 @@ private[cli] final case class CliEndpoint(
lazy val getOptions: List[HttpOptions] = url ++ headers ++ body
- def describeOptions(description: Doc) =
+ def describeOptions(description: Doc): CliEndpoint =
self.copy(
body = self.body.map(_ ?? description),
headers = self.headers.map(_ ?? description),
diff --git a/zio-http-cli/src/main/scala/zio/http/endpoint/cli/HttpOptions.scala b/zio-http-cli/src/main/scala/zio/http/endpoint/cli/HttpOptions.scala
index 15d94f2642..3be96b5156 100644
--- a/zio-http-cli/src/main/scala/zio/http/endpoint/cli/HttpOptions.scala
+++ b/zio-http-cli/src/main/scala/zio/http/endpoint/cli/HttpOptions.scala
@@ -312,7 +312,7 @@ private[cli] object HttpOptions {
private[cli] def optionsFromSegment(segment: SegmentCodec[_]): Options[String] = {
def fromSegment[A](segment: SegmentCodec[A]): Options[String] =
segment match {
- case SegmentCodec.UUID(name) =>
+ case SegmentCodec.UUID(name) =>
Options
.text(name)
.mapOrFail(str =>
@@ -324,13 +324,14 @@ private[cli] object HttpOptions {
},
)
.map(_.toString)
- case SegmentCodec.Text(name) => Options.text(name)
- case SegmentCodec.IntSeg(name) => Options.integer(name).map(_.toInt).map(_.toString)
- case SegmentCodec.LongSeg(name) => Options.integer(name).map(_.toInt).map(_.toString)
- case SegmentCodec.BoolSeg(name) => Options.boolean(name).map(_.toString)
- case SegmentCodec.Literal(value) => Options.Empty.map(_ => value)
- case SegmentCodec.Trailing => Options.none.map(_.toString)
- case SegmentCodec.Empty => Options.none.map(_.toString)
+ case SegmentCodec.Text(name) => Options.text(name)
+ case SegmentCodec.IntSeg(name) => Options.integer(name).map(_.toInt).map(_.toString)
+ case SegmentCodec.LongSeg(name) => Options.integer(name).map(_.toInt).map(_.toString)
+ case SegmentCodec.BoolSeg(name) => Options.boolean(name).map(_.toString)
+ case SegmentCodec.Literal(value) => Options.Empty.map(_ => value)
+ case SegmentCodec.Trailing => Options.none.map(_.toString)
+ case SegmentCodec.Empty => Options.none.map(_.toString)
+ case SegmentCodec.Combined(_, _, _) => throw new IllegalArgumentException("Combined segment not supported")
}
fromSegment(segment)
diff --git a/zio-http-cli/src/test/scala/zio/http/endpoint/cli/CommandGen.scala b/zio-http-cli/src/test/scala/zio/http/endpoint/cli/CommandGen.scala
index 395fab4383..ac69bffc7c 100644
--- a/zio-http-cli/src/test/scala/zio/http/endpoint/cli/CommandGen.scala
+++ b/zio-http-cli/src/test/scala/zio/http/endpoint/cli/CommandGen.scala
@@ -20,14 +20,16 @@ object CommandGen {
def getSegment(segment: SegmentCodec[_]): (String, String) = {
def fromSegment[A](segment: SegmentCodec[A]): (String, String) =
segment match {
- case SegmentCodec.UUID(name) => (name, "text")
- case SegmentCodec.Text(name) => (name, "text")
- case SegmentCodec.IntSeg(name) => (name, "integer")
- case SegmentCodec.LongSeg(name) => (name, "integer")
- case SegmentCodec.BoolSeg(name) => (name, "boolean")
- case SegmentCodec.Literal(_) => ("", "")
- case SegmentCodec.Trailing => ("", "")
- case SegmentCodec.Empty => ("", "")
+ case SegmentCodec.UUID(name) => (name, "text")
+ case SegmentCodec.Text(name) => (name, "text")
+ case SegmentCodec.IntSeg(name) => (name, "integer")
+ case SegmentCodec.LongSeg(name) => (name, "integer")
+ case SegmentCodec.BoolSeg(name) => (name, "boolean")
+ case SegmentCodec.Literal(_) => ("", "")
+ case SegmentCodec.Trailing => ("", "")
+ case SegmentCodec.Empty => ("", "")
+ case SegmentCodec.Combined(left, right, combiner) =>
+ ???
}
fromSegment(segment)
diff --git a/zio-http-cli/src/test/scala/zio/http/endpoint/cli/EndpointGen.scala b/zio-http-cli/src/test/scala/zio/http/endpoint/cli/EndpointGen.scala
index 53e532ef58..9c5bb97b2c 100644
--- a/zio-http-cli/src/test/scala/zio/http/endpoint/cli/EndpointGen.scala
+++ b/zio-http-cli/src/test/scala/zio/http/endpoint/cli/EndpointGen.scala
@@ -119,7 +119,7 @@ object EndpointGen {
)
def withDoc[A] = Mapper[CliReprOf[Codec[A]], Doc](
- (repr, doc) => CliRepr(repr.value ?? doc, repr.repr.copy(body = repr.repr.body.map(_ ?? doc))),
+ (repr, doc) => CliRepr(repr.value ?? doc, repr.repr.describeOptions(doc)),
anyDoc,
)
diff --git a/zio-http-example/src/main/scala/example/EndpointExamples.scala b/zio-http-example/src/main/scala/example/EndpointExamples.scala
index 490cc99bf0..c0e420a1b2 100644
--- a/zio-http-example/src/main/scala/example/EndpointExamples.scala
+++ b/zio-http-example/src/main/scala/example/EndpointExamples.scala
@@ -19,11 +19,7 @@ object EndpointExamples extends ZIOAppDefault {
Endpoint(Method.GET / "users" / int("userId")).out[Int] @@ auth
val getUserRoute =
- getUser.implement {
- Handler.fromFunction[Int] { id =>
- id
- }
- }
+ getUser.implement { id => ZIO.succeed(id) }
val getUserPosts =
Endpoint(Method.GET / "users" / int("userId") / "posts" / int("postId"))
@@ -31,10 +27,8 @@ object EndpointExamples extends ZIOAppDefault {
.out[List[String]] @@ auth
val getUserPostsRoute =
- getUserPosts.implement[Any] {
- Handler.fromFunctionZIO[(Int, Int, String)] { case (id1: Int, id2: Int, query: String) =>
- ZIO.succeed(List(s"API2 RESULT parsed: users/$id1/posts/$id2?name=$query"))
- }
+ getUserPosts.implement { case (id1: Int, id2: Int, query: String) =>
+ ZIO.succeed(List(s"API2 RESULT parsed: users/$id1/posts/$id2?name=$query"))
}
val openAPI = OpenAPIGen.fromEndpoints(title = "Endpoint Example", version = "1.0", getUser, getUserPosts)
diff --git a/zio-http-example/src/main/scala/example/ServerSentEventEndpoint.scala b/zio-http-example/src/main/scala/example/ServerSentEventEndpoint.scala
index 05eb0dc773..c698f24317 100644
--- a/zio-http-example/src/main/scala/example/ServerSentEventEndpoint.scala
+++ b/zio-http-example/src/main/scala/example/ServerSentEventEndpoint.scala
@@ -21,7 +21,7 @@ object ServerSentEventEndpoint extends ZIOAppDefault {
val sseEndpoint: Endpoint[Unit, Unit, ZNothing, ZStream[Any, Nothing, ServerSentEvent], None] =
Endpoint(Method.GET / "sse").outStream[ServerSentEvent]
- val sseRoute = sseEndpoint.implement(Handler.succeed(stream))
+ val sseRoute = sseEndpoint.implementHandler(Handler.succeed(stream))
val routes: Routes[Any, Response] = sseRoute.toRoutes
diff --git a/zio-http-example/src/main/scala/example/endpoint/BooksEndpointExample.scala b/zio-http-example/src/main/scala/example/endpoint/BooksEndpointExample.scala
index 29ffab3f65..a907a36e00 100644
--- a/zio-http-example/src/main/scala/example/endpoint/BooksEndpointExample.scala
+++ b/zio-http-example/src/main/scala/example/endpoint/BooksEndpointExample.scala
@@ -44,7 +44,7 @@ object BooksEndpointExample extends ZIOAppDefault {
"Endpoint to query books based on a search query",
)
- val booksRoute = endpoint.implement(handler((query: String) => BookRepo.find(query)))
+ val booksRoute = endpoint.implementHandler(handler((query: String) => BookRepo.find(query)))
val openAPI = OpenAPIGen.fromEndpoints(title = "Library API", version = "1.0", endpoint)
val swaggerRoutes = SwaggerUI.routes("docs" / "openapi", openAPI)
val routes = Routes(booksRoute) ++ swaggerRoutes
diff --git a/zio-http-example/src/main/scala/example/endpoint/CliExamples.scala b/zio-http-example/src/main/scala/example/endpoint/CliExamples.scala
index da86cc4295..d54713d240 100644
--- a/zio-http-example/src/main/scala/example/endpoint/CliExamples.scala
+++ b/zio-http-example/src/main/scala/example/endpoint/CliExamples.scala
@@ -81,21 +81,21 @@ object TestCliApp extends zio.cli.ZIOCliDefault with TestCliEndpoints {
object TestCliServer extends zio.ZIOAppDefault with TestCliEndpoints {
val getUserRoute =
- getUser.implement {
+ getUser.implementHandler {
Handler.fromFunctionZIO { case (id, _) =>
ZIO.succeed(User(id, "Juanito", Some("juanito@test.com"))).debug("Hello")
}
}
val getUserPostsRoute =
- getUserPosts.implement {
+ getUserPosts.implementHandler {
Handler.fromFunction { case (userId, postId, name) =>
List(Post(userId, postId, name))
}
}
val createUserRoute =
- createUser.implement {
+ createUser.implementHandler {
Handler.fromFunction { user =>
user.name
}
diff --git a/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleErrorsUsingEither.scala b/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleErrorsUsingEither.scala
index 4fe6e24ba5..063eb5e4b5 100644
--- a/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleErrorsUsingEither.scala
+++ b/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleErrorsUsingEither.scala
@@ -56,7 +56,7 @@ object EndpointWithMultipleErrorsUsingEither extends ZIOAppDefault {
ZIO.fail(Left(AuthenticationError("User is not authenticated", 123)))
}
- val routes = endpoint.implement(getBookHandler).toRoutes @@ Middleware.debug
+ val routes = endpoint.implementHandler(getBookHandler).toRoutes @@ Middleware.debug
def run = Server.serve(routes).provide(Server.default)
}
diff --git a/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleUnifiedErrors.scala b/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleUnifiedErrors.scala
index a77305c81e..257ac314c8 100644
--- a/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleUnifiedErrors.scala
+++ b/zio-http-example/src/main/scala/example/endpoint/EndpointWithMultipleUnifiedErrors.scala
@@ -62,7 +62,7 @@ object EndpointWithMultipleUnifiedErrors extends ZIOAppDefault {
ZIO.fail(AuthenticationError("User is not authenticated", 123))
}
- val routes = endpoint.implement(getBookHandler).toRoutes @@ Middleware.debug
+ val routes = endpoint.implementHandler(getBookHandler).toRoutes @@ Middleware.debug
def run = Server.serve(routes).provide(Server.default)
}
diff --git a/zio-http-example/src/main/scala/example/endpoint/style/DeclarativeProgrammingExample.scala b/zio-http-example/src/main/scala/example/endpoint/style/DeclarativeProgrammingExample.scala
index 29bc65f70e..eaf3748f0e 100644
--- a/zio-http-example/src/main/scala/example/endpoint/style/DeclarativeProgrammingExample.scala
+++ b/zio-http-example/src/main/scala/example/endpoint/style/DeclarativeProgrammingExample.scala
@@ -40,7 +40,7 @@ object DeclarativeProgrammingExample extends ZIOAppDefault {
val getBookHandler: Handler[Any, NotFoundError, String, Book] =
handler(BookRepo.find(_))
- val routes = endpoint.implement(getBookHandler).toRoutes @@ Middleware.debug
+ val routes = endpoint.implementHandler(getBookHandler).toRoutes @@ Middleware.debug
def run = Server.serve(routes).provide(Server.default)
}
diff --git a/zio-http-gen/src/main/scala/zio/http/gen/openapi/EndpointGen.scala b/zio-http-gen/src/main/scala/zio/http/gen/openapi/EndpointGen.scala
index 9dffa2a76b..5695c3f001 100644
--- a/zio-http-gen/src/main/scala/zio/http/gen/openapi/EndpointGen.scala
+++ b/zio-http-gen/src/main/scala/zio/http/gen/openapi/EndpointGen.scala
@@ -721,9 +721,9 @@ final case class EndpointGen(config: Config) {
case JsonSchema.Integer(_) => None
case JsonSchema.String(_, _) => None // this could maybe be im proved to generate a string type with validation
case JsonSchema.Boolean => None
- case JsonSchema.OneOfSchema(schemas) if schemas.exists(_.isPrimitive) =>
+ case JsonSchema.OneOfSchema(schemas) if schemas.exists(_.isPrimitive) =>
throw new Exception("OneOf schemas with primitive types are not supported")
- case JsonSchema.OneOfSchema(schemas) =>
+ case JsonSchema.OneOfSchema(schemas) =>
val discriminatorInfo =
annotations.collectFirst { case JsonSchema.MetaData.Discriminator(discriminator) => discriminator }
val discriminator: Option[String] = discriminatorInfo.map(_.propertyName)
@@ -783,7 +783,7 @@ final case class EndpointGen(config: Config) {
),
),
)
- case JsonSchema.AllOfSchema(schemas) =>
+ case JsonSchema.AllOfSchema(schemas) =>
val genericFieldIndex = Iterator.from(0)
val unvalidatedFields = schemas.map(_.withoutAnnotations).flatMap {
case schema @ JsonSchema.Object(_, _, _) =>
@@ -828,9 +828,9 @@ final case class EndpointGen(config: Config) {
enums = Nil,
),
)
- case JsonSchema.AnyOfSchema(schemas) if schemas.exists(_.isPrimitive) =>
+ case JsonSchema.AnyOfSchema(schemas) if schemas.exists(_.isPrimitive) =>
throw new Exception("AnyOf schemas with primitive types are not supported")
- case JsonSchema.AnyOfSchema(schemas) =>
+ case JsonSchema.AnyOfSchema(schemas) =>
val discriminatorInfo =
annotations.collectFirst { case JsonSchema.MetaData.Discriminator(discriminator) => discriminator }
val discriminator: Option[String] = discriminatorInfo.map(_.propertyName)
@@ -887,12 +887,15 @@ final case class EndpointGen(config: Config) {
),
),
)
- case JsonSchema.Number(_) => None
- case JsonSchema.ArrayType(None) => None
- case JsonSchema.ArrayType(Some(schema)) =>
+ case JsonSchema.Number(_) => None
+ case JsonSchema.ArrayType(None) => None
+ case JsonSchema.ArrayType(Some(schema)) =>
schemaToCode(schema, openAPI, name, annotations)
- // TODO use additionalProperties
- case obj @ JsonSchema.Object(properties, _, _) =>
+ case JsonSchema.Object(properties, additionalProperties, _)
+ if properties.nonEmpty && additionalProperties.isRight =>
+ // Can't be an object and a map at the same time
+ throw new Exception("Object with properties and additionalProperties is not supported")
+ case obj @ JsonSchema.Object(properties, additionalProperties, _) if additionalProperties.isLeft =>
val unvalidatedFields = fieldsOfObject(openAPI, annotations)(obj)
val fields = validateFields(unvalidatedFields)
val nested =
@@ -925,8 +928,10 @@ final case class EndpointGen(config: Config) {
enums = Nil,
),
)
-
- case JsonSchema.Enum(enums) =>
+ case JsonSchema.Object(_, _, _) =>
+ // properties.isEmpty && additionalProperties.isRight
+ throw new IllegalArgumentException("Top-level maps are not supported")
+ case JsonSchema.Enum(enums) =>
Some(
Code.File(
List("component", name.capitalize + ".scala"),
@@ -947,8 +952,8 @@ final case class EndpointGen(config: Config) {
),
),
)
- case JsonSchema.Null => throw new Exception("Null query parameters are not supported")
- case JsonSchema.AnyJson => throw new Exception("AnyJson query parameters are not supported")
+ case JsonSchema.Null => throw new Exception("Null query parameters are not supported")
+ case JsonSchema.AnyJson => throw new Exception("AnyJson query parameters are not supported")
}
}
@@ -1038,6 +1043,20 @@ final case class EndpointGen(config: Config) {
Some(Code.Primitive.ScalaString.seq),
)
tpe.map(Code.Field(name, _))
+ case JsonSchema.Object(properties, additionalProperties, _)
+ if properties.nonEmpty && additionalProperties.isRight =>
+ // Can't be an object and a map at the same time
+ throw new Exception("Object with properties and additionalProperties is not supported")
+ case JsonSchema.Object(properties, additionalProperties, _)
+ if properties.isEmpty && additionalProperties.isRight =>
+ Some(
+ Code.Field(
+ name,
+ Code.Collection.Map(
+ schemaToField(additionalProperties.toOption.get, openAPI, name, annotations).get.fieldType,
+ ),
+ ),
+ )
case JsonSchema.Object(_, _, _) =>
Some(Code.Field(name, Code.TypeRef(name.capitalize)))
case JsonSchema.Enum(_) =>
diff --git a/zio-http-gen/src/main/scala/zio/http/gen/scala/CodeGen.scala b/zio-http-gen/src/main/scala/zio/http/gen/scala/CodeGen.scala
index da11489647..94ed8a3c0c 100644
--- a/zio-http-gen/src/main/scala/zio/http/gen/scala/CodeGen.scala
+++ b/zio-http-gen/src/main/scala/zio/http/gen/scala/CodeGen.scala
@@ -65,7 +65,7 @@ object CodeGen {
case Code.Object(name, schema, endpoints, objects, caseClasses, enums) =>
val baseImports = if (endpoints.nonEmpty) EndpointImports else Nil
- val (epImports, epContent) = endpoints.map { case (k, v) =>
+ val (epImports, epContent) = endpoints.toList.map { case (k, v) =>
val (kImports, kContent) = render(basePackage)(k)
val (vImports, vContent) = render(basePackage)(v)
(kImports ++ vImports, s"$kContent=$vContent")
diff --git a/zio-http-gen/src/test/resources/AnimalWithMap.scala b/zio-http-gen/src/test/resources/AnimalWithMap.scala
new file mode 100644
index 0000000000..2045057554
--- /dev/null
+++ b/zio-http-gen/src/test/resources/AnimalWithMap.scala
@@ -0,0 +1,13 @@
+package test.component
+
+import zio.schema._
+
+case class Animals(
+ total: Int,
+ counts: Map[String, Int],
+)
+object Animals {
+
+ implicit val codec: Schema[Animals] = DeriveSchema.gen[Animals]
+
+}
diff --git a/zio-http-gen/src/test/resources/EndpointsWithOverlappingPath.scala b/zio-http-gen/src/test/resources/EndpointsWithOverlappingPath.scala
new file mode 100644
index 0000000000..a265b4cbd2
--- /dev/null
+++ b/zio-http-gen/src/test/resources/EndpointsWithOverlappingPath.scala
@@ -0,0 +1,18 @@
+package test
+
+import test.component._
+
+object Pets {
+ import zio.http._
+ import zio.http.endpoint._
+ import zio.http.codec._
+ val listPets = Endpoint(Method.GET / "pets")
+ .query(QueryCodec.queryTo[Int]("limit"))
+ .in[Unit]
+ .out[Pets](status = Status.Ok)
+
+ val createPets = Endpoint(Method.POST / "pets")
+ .in[Pet]
+ .out[Unit](status = Status.Created)
+
+}
diff --git a/zio-http-gen/src/test/scala/zio/http/gen/model/Data.scala b/zio-http-gen/src/test/scala/zio/http/gen/model/Data.scala
new file mode 100644
index 0000000000..e818d19d4d
--- /dev/null
+++ b/zio-http-gen/src/test/scala/zio/http/gen/model/Data.scala
@@ -0,0 +1,6 @@
+package zio.http.gen.model
+
+case class Data(name: String, meta: Meta)
+object Data {
+ implicit val codec: zio.schema.Schema[Data] = zio.schema.DeriveSchema.gen[Data]
+}
diff --git a/zio-http-gen/src/test/scala/zio/http/gen/model/Meta.scala b/zio-http-gen/src/test/scala/zio/http/gen/model/Meta.scala
new file mode 100644
index 0000000000..5963a25b0c
--- /dev/null
+++ b/zio-http-gen/src/test/scala/zio/http/gen/model/Meta.scala
@@ -0,0 +1,29 @@
+package zio.http.gen.model
+
+import zio.schema.annotation.{caseName, discriminatorName}
+import zio.schema.{DeriveSchema, Schema}
+
+@discriminatorName("type")
+sealed trait Meta
+object Meta {
+
+ implicit val codec: Schema[Meta] = DeriveSchema.gen[Meta]
+
+ @caseName("a")
+ case class MetaA(
+ t: String,
+ i: Int,
+ ) extends Meta
+ object MetaA {
+ implicit val codec: Schema[MetaA] = DeriveSchema.gen[MetaA]
+ }
+
+ @caseName("b")
+ case class MetaB(
+ t: String,
+ i: Int,
+ ) extends Meta
+ object MetaB {
+ implicit val codec: Schema[MetaB] = DeriveSchema.gen[MetaB]
+ }
+}
diff --git a/zio-http-gen/src/test/scala/zio/http/gen/openapi/EndpointGenSpec.scala b/zio-http-gen/src/test/scala/zio/http/gen/openapi/EndpointGenSpec.scala
index b28cadd39b..349aebf543 100644
--- a/zio-http-gen/src/test/scala/zio/http/gen/openapi/EndpointGenSpec.scala
+++ b/zio-http-gen/src/test/scala/zio/http/gen/openapi/EndpointGenSpec.scala
@@ -2,6 +2,8 @@ package zio.http.gen.openapi
import java.nio.file._
+import scala.util.Try
+
import zio._
import zio.test._
@@ -9,7 +11,7 @@ import zio.http._
import zio.http.codec.HeaderCodec
import zio.http.codec.HttpCodec.{query, queryInt}
import zio.http.endpoint._
-import zio.http.endpoint.openapi.JsonSchema.SchemaStyle.Inline
+import zio.http.endpoint.openapi.JsonSchema.SchemaStyle.{Compact, Inline}
import zio.http.endpoint.openapi.{OpenAPI, OpenAPIGen}
import zio.http.gen.model._
import zio.http.gen.scala.Code
@@ -657,6 +659,68 @@ object EndpointGenSpec extends ZIOSpecDefault {
)
assertTrue(scala.files.head == expected)
},
+ test("endpoints with overlapping prefix") {
+ val endpoint1 = Endpoint(Method.GET / "api" / "v1" / "users")
+ val endpoint2 = Endpoint(Method.GET / "api" / "v1" / "users" / "info")
+ val openAPI = OpenAPIGen.fromEndpoints(endpoint1, endpoint2)
+ val scala = EndpointGen.fromOpenAPI(openAPI)
+ val expected1 = Code.File(
+ List("api", "v1", "Users.scala"),
+ pkgPath = List("api", "v1"),
+ imports = List(Code.Import.FromBase(path = "component._")),
+ objects = List(
+ Code.Object(
+ "Users",
+ Map(
+ Code.Field("get") -> Code.EndpointCode(
+ Method.GET,
+ Code.PathPatternCode(segments =
+ List(Code.PathSegmentCode("api"), Code.PathSegmentCode("v1"), Code.PathSegmentCode("users")),
+ ),
+ queryParamsCode = Set.empty,
+ headersCode = Code.HeadersCode.empty,
+ inCode = Code.InCode("Unit"),
+ outCodes = Nil,
+ errorsCode = Nil,
+ ),
+ ),
+ ),
+ ),
+ caseClasses = Nil,
+ enums = Nil,
+ )
+ val expected2 = Code.File(
+ List("api", "v1", "users", "Info.scala"),
+ pkgPath = List("api", "v1", "users"),
+ imports = List(Code.Import.FromBase(path = "component._")),
+ objects = List(
+ Code.Object(
+ "Info",
+ Map(
+ Code.Field("get") -> Code.EndpointCode(
+ Method.GET,
+ Code.PathPatternCode(segments =
+ List(
+ Code.PathSegmentCode("api"),
+ Code.PathSegmentCode("v1"),
+ Code.PathSegmentCode("users"),
+ Code.PathSegmentCode("info"),
+ ),
+ ),
+ queryParamsCode = Set.empty,
+ headersCode = Code.HeadersCode.empty,
+ inCode = Code.InCode("Unit"),
+ outCodes = Nil,
+ errorsCode = Nil,
+ ),
+ ),
+ ),
+ ),
+ caseClasses = Nil,
+ enums = Nil,
+ )
+ assertTrue(scala.files.toSet == Set(expected1, expected2))
+ },
),
suite("data gen spec")(
test("generates case class, companion object and schema") {
@@ -1012,6 +1076,10 @@ object EndpointGenSpec extends ZIOSpecDefault {
assertTrue(scala.files.head == expected)
},
+ test("generates case class for response with compact schema") {
+ val endpoint = Endpoint(Method.POST / "api" / "v1" / "data").out[Chunk[Data]](status = Status.Ok)
+ assertTrue(OpenAPIGen.fromEndpoints("", "", Compact, endpoint).components.get.schemas.size == 4)
+ },
test("generates case class with seq field for request") {
val endpoint = Endpoint(Method.POST / "api" / "v1" / "users").in[UserNameArray].out[User]
val openAPI = OpenAPIGen.fromEndpoints("", "", endpoint)
diff --git a/zio-http-gen/src/test/scala/zio/http/gen/scala/CodeGenSpec.scala b/zio-http-gen/src/test/scala/zio/http/gen/scala/CodeGenSpec.scala
index e139209b77..be1ce84075 100644
--- a/zio-http-gen/src/test/scala/zio/http/gen/scala/CodeGenSpec.scala
+++ b/zio-http-gen/src/test/scala/zio/http/gen/scala/CodeGenSpec.scala
@@ -182,7 +182,6 @@ object CodeGenSpec extends ZIOSpecDefault {
val code = EndpointGen.fromOpenAPI(openAPI)
val tempDir = Files.createTempDirectory("codegen")
- println(tempDir)
CodeGen.writeFiles(code, java.nio.file.Paths.get(tempDir.toString, "test"), "test", Some(scalaFmtPath))
fileShouldBe(
@@ -240,7 +239,6 @@ object CodeGenSpec extends ZIOSpecDefault {
val code = EndpointGen.fromOpenAPI(openAPI)
val tempDir = Files.createTempDirectory("codegen")
- println(tempDir)
CodeGen.writeFiles(code, java.nio.file.Paths.get(tempDir.toString, "test"), "test", Some(scalaFmtPath))
fileShouldBe(
@@ -556,5 +554,242 @@ object CodeGenSpec extends ZIOSpecDefault {
"/GeneratedUserNameArray.scala",
)
},
+ test("Endpoints with common prefix") {
+ val json = """{
+ | "openapi": "3.0.0",
+ | "info": {
+ | "version": "1.0.0",
+ | "title": "Swagger Petstore",
+ | "license": {
+ | "name": "MIT"
+ | }
+ | },
+ | "servers": [
+ | {
+ | "url": "http://petstore.swagger.io/v1"
+ | }
+ | ],
+ | "paths": {
+ | "/pets": {
+ | "get": {
+ | "summary": "List all pets",
+ | "operationId": "listPets",
+ | "tags": [
+ | "pets"
+ | ],
+ | "parameters": [
+ | {
+ | "name": "limit",
+ | "in": "query",
+ | "description": "How many items to return at one time (max 100)",
+ | "required": false,
+ | "schema": {
+ | "type": "integer",
+ | "maximum": 100,
+ | "format": "int32"
+ | }
+ | }
+ | ],
+ | "responses": {
+ | "200": {
+ | "description": "A paged array of pets",
+ | "headers": {
+ | "x-next": {
+ | "description": "A link to the next page of responses",
+ | "schema": {
+ | "type": "string"
+ | }
+ | }
+ | },
+ | "content": {
+ | "application/json": {
+ | "schema": {
+ | "$ref": "#/components/schemas/Pets"
+ | }
+ | }
+ | }
+ | },
+ | "default": {
+ | "description": "unexpected error",
+ | "content": {
+ | "application/json": {
+ | "schema": {
+ | "$ref": "#/components/schemas/Error"
+ | }
+ | }
+ | }
+ | }
+ | }
+ | },
+ | "post": {
+ | "summary": "Create a pet",
+ | "operationId": "createPets",
+ | "tags": [
+ | "pets"
+ | ],
+ | "requestBody": {
+ | "content": {
+ | "application/json": {
+ | "schema": {
+ | "$ref": "#/components/schemas/Pet"
+ | }
+ | }
+ | },
+ | "required": true
+ | },
+ | "responses": {
+ | "201": {
+ | "description": "Null response"
+ | },
+ | "default": {
+ | "description": "unexpected error",
+ | "content": {
+ | "application/json": {
+ | "schema": {
+ | "$ref": "#/components/schemas/Error"
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ | },
+ | "components": {
+ | "schemas": {
+ | "Pet": {
+ | "type": "object",
+ | "required": [
+ | "id",
+ | "name"
+ | ],
+ | "properties": {
+ | "id": {
+ | "type": "integer",
+ | "format": "int64"
+ | },
+ | "name": {
+ | "type": "string",
+ | "minLength": 3
+ | },
+ | "tag": {
+ | "type": "string"
+ | }
+ | }
+ | },
+ | "Pets": {
+ | "type": "array",
+ | "maxItems": 100,
+ | "items": {
+ | "$ref": "#/components/schemas/Pet"
+ | }
+ | },
+ | "Error": {
+ | "type": "object",
+ | "required": [
+ | "code",
+ | "message"
+ | ],
+ | "properties": {
+ | "code": {
+ | "type": "integer",
+ | "format": "int32"
+ | },
+ | "message": {
+ | "type": "string"
+ | }
+ | }
+ | }
+ | }
+ | }
+ |}""".stripMargin
+ val openAPI = OpenAPI.fromJson(json).toOption.get
+ val code = EndpointGen.fromOpenAPI(openAPI)
+ val tempDir = Files.createTempDirectory("codegen")
+
+ CodeGen.writeFiles(code, java.nio.file.Paths.get(tempDir.toString, "test"), "test", Some(scalaFmtPath))
+
+ fileShouldBe(
+ tempDir,
+ "test/Pets.scala",
+ "/EndpointsWithOverlappingPath.scala",
+ )
+ },
+ test("Additional properties") {
+ val json = """{
+ | "info": {
+ | "title": "Animals Service",
+ | "version": "0.0.1"
+ | },
+ | "servers": [
+ | {
+ | "url": "http://127.0.0.1:5000/"
+ | }
+ | ],
+ | "tags": [
+ | {
+ | "name": "Animals_API"
+ | }
+ | ],
+ | "paths": {
+ | "/api/v1/zoo": {
+ | "get": {
+ | "operationId": "get_animals",
+ | "tags": [
+ | "Animals_API"
+ | ],
+ | "description": "Get all animals count",
+ | "responses": {
+ | "200": {
+ | "content": {
+ | "application/json": {
+ | "schema": {
+ | "$ref": "#/components/schemas/Animals"
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ | },
+ | "openapi": "3.0.3",
+ | "components": {
+ | "schemas": {
+ | "Animals": {
+ | "type": "object",
+ | "required": [
+ | "total",
+ | "counts"
+ | ],
+ | "properties": {
+ | "total": {
+ | "type": "integer",
+ | "format": "int32"
+ | },
+ | "counts": {
+ | "type": "object",
+ | "additionalProperties": {
+ | "type": "integer",
+ | "format": "int32"
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ |}""".stripMargin
+ val openAPI = OpenAPI.fromJson(json).toOption.get
+ val code = EndpointGen.fromOpenAPI(openAPI)
+ val tempDir = Files.createTempDirectory("codegen")
+
+ CodeGen.writeFiles(code, java.nio.file.Paths.get(tempDir.toString, "test"), "test", Some(scalaFmtPath))
+
+ fileShouldBe(
+ tempDir,
+ "test/component/Animals.scala",
+ "/AnimalWithMap.scala",
+ )
+ },
) @@ java11OrNewer @@ flaky @@ blocking // Downloading scalafmt on CI is flaky
}
diff --git a/zio-http-htmx/src/main/scala/zio/http/htmx/package.scala b/zio-http-htmx/src/main/scala/zio/http/htmx/package.scala
new file mode 100644
index 0000000000..69ea6b6cae
--- /dev/null
+++ b/zio-http-htmx/src/main/scala/zio/http/htmx/package.scala
@@ -0,0 +1,3 @@
+package zio.http
+
+package object htmx extends Attributes
diff --git a/zio-http-htmx/src/test/scala/zio/http/htmx/HtmxSpec.scala b/zio-http-htmx/src/test/scala/zio/http/htmx/HtmxSpec.scala
new file mode 100644
index 0000000000..8e2ee28681
--- /dev/null
+++ b/zio-http-htmx/src/test/scala/zio/http/htmx/HtmxSpec.scala
@@ -0,0 +1,15 @@
+package zio.http.htmx
+
+import zio.test.{ZIOSpecDefault, assertTrue}
+
+import zio.http.template.button
+
+case object HtmxSpec extends ZIOSpecDefault {
+ override def spec = suite("HtmxSpec")(
+ test("hx-get attribute") {
+ val view = button(hxGetAttr := "/test", "click")
+ val expected = """"""
+ assertTrue(view.encode == expected.stripMargin)
+ },
+ )
+}
diff --git a/zio-http-testkit/src/main/scala/zio/http/TestServer.scala b/zio-http-testkit/src/main/scala/zio/http/TestServer.scala
index 7f86c52fdd..88551d7fda 100644
--- a/zio-http-testkit/src/main/scala/zio/http/TestServer.scala
+++ b/zio-http-testkit/src/main/scala/zio/http/TestServer.scala
@@ -109,7 +109,7 @@ final case class TestServer(driver: Driver, bindPort: Int) extends Server {
),
)
- override def port: Int = bindPort
+ override def port: UIO[Int] = ZIO.succeed(bindPort)
}
object TestServer {
diff --git a/zio-http-testkit/src/test/scala/zio/http/SocketContractSpec.scala b/zio-http-testkit/src/test/scala/zio/http/SocketContractSpec.scala
index 834a826359..f8a50cfcc7 100644
--- a/zio-http-testkit/src/test/scala/zio/http/SocketContractSpec.scala
+++ b/zio-http-testkit/src/test/scala/zio/http/SocketContractSpec.scala
@@ -128,9 +128,10 @@ object SocketContractSpec extends ZIOHttpSpec {
): ZIO[Server, Nothing, (RuntimeFlags, Promise[Throwable, Unit])] =
ZIO.serviceWithZIO[Server](server =>
for {
- p <- Promise.make[Throwable, Unit]
- _ <- server.install(serverApp(p).toRoutes)
- } yield (server.port, p),
+ p <- Promise.make[Throwable, Unit]
+ _ <- server.install(serverApp(p).toRoutes)
+ port <- server.port
+ } yield (port, p),
)
private def testServerSetup(
diff --git a/zio-http-testkit/src/test/scala/zio/http/TestServerSpec.scala b/zio-http-testkit/src/test/scala/zio/http/TestServerSpec.scala
index 69c86d2a48..084d9197e2 100644
--- a/zio-http-testkit/src/test/scala/zio/http/TestServerSpec.scala
+++ b/zio-http-testkit/src/test/scala/zio/http/TestServerSpec.scala
@@ -47,10 +47,7 @@ object TestServerSpec extends ZIOHttpSpec {
client <- ZIO.service[Client]
testRequest <- requestToCorrectPort
_ <- TestServer.addRequestResponse(testRequest, Response(Status.Ok))
- finalResponse <-
- client(
- testRequest,
- )
+ finalResponse <- client(testRequest)
} yield assertTrue(status(finalResponse) == Status.Ok)
},
@@ -59,10 +56,7 @@ object TestServerSpec extends ZIOHttpSpec {
client <- ZIO.service[Client]
testRequest <- requestToCorrectPort
_ <- TestServer.addRequestResponse(testRequest, Response(Status.Ok))
- finalResponse <-
- client(
- testRequest.addHeaders(Headers(Header.ContentLanguage.French)),
- )
+ finalResponse <- client(testRequest.addHeaders(Headers(Header.ContentLanguage.French)))
} yield assertTrue(status(finalResponse) == Status.Ok)
},
@@ -121,7 +115,7 @@ object TestServerSpec extends ZIOHttpSpec {
private def requestToCorrectPort =
for {
- port <- ZIO.serviceWith[Server](_.port)
+ port <- ZIO.serviceWithZIO[Server](_.port)
} yield Request
.get(url = URL.root.port(port))
.addHeaders(Headers(Header.Accept(MediaType.text.`plain`)))
diff --git a/zio-http-tools/src/main/scala/zio/http/tools/GenerateMediaTypes.scala b/zio-http-tools/src/main/scala/zio/http/tools/GenerateMediaTypes.scala
new file mode 100644
index 0000000000..c6bee4f001
--- /dev/null
+++ b/zio-http-tools/src/main/scala/zio/http/tools/GenerateMediaTypes.scala
@@ -0,0 +1,173 @@
+package zio.http.tools
+
+import scala.io.Source
+
+import zio._
+import zio.json._
+
+/////////////////////////
+// READING AND PARSING //
+/////////////////////////
+
+case class MimeType(
+ source: Option[String],
+ extensions: Option[List[String]] = None,
+ compressible: Option[Boolean] = None,
+ charset: Option[String] = None,
+)
+
+object MimeType {
+ implicit val decoder: JsonDecoder[MimeType] = DeriveJsonDecoder.gen[MimeType]
+}
+
+case class MimeDb(mimeTypes: Map[String, MimeType]) extends AnyVal {
+ def extend(extraTypes: Map[String, MimeType]): MimeDb = {
+ MimeDb(mimeTypes ++ extraTypes)
+ }
+}
+
+object MimeDb {
+ implicit val decoder: JsonDecoder[MimeDb] = JsonDecoder.map[String, MimeType].map(MimeDb(_))
+
+ // These types are not in the mime-db json
+ val extraTypes = Map(
+ "text/event-stream" -> MimeType(None, None, Some(true), None),
+ )
+
+ // Fetches the MIME types database from the jshttp/mime-db repository and
+ // returns a MimeDb object
+ def fetch: Task[MimeDb] = ZIO.attemptBlocking {
+ val url = "https://raw.githubusercontent.com/jshttp/mime-db/master/db.json"
+
+ val source = Source.fromURL(url)
+ val jsonData =
+ try { source.mkString }
+ finally { source.close() }
+
+ jsonData.fromJson[MimeDb] match {
+ case Right(db) => db.extend(extraTypes)
+ case Left(error) => throw new RuntimeException(s"Failed to parse JSON: $error")
+ }
+ }
+}
+
+///////////////
+// RENDERING //
+///////////////
+
+object RenderUtils {
+ def snakeCase(s: String): String = {
+ s.toLowerCase.replace("-", "_")
+ }
+
+ // hello -> "hello"
+ def renderString(s: String): String = {
+ "\"" + s + "\""
+ }
+
+ // hello there -> `hello there`
+ def renderEscaped(s: String): String = {
+ "`" + s + "`"
+ }
+}
+
+case class MediaTypeInfo(
+ mainType: String,
+ subType: String,
+ compressible: Boolean,
+ extensions: List[String],
+) {
+
+ def binary: Boolean = {
+ // If the main type is "image", "video", "audio", or "application", it is likely binary.
+ // Additionally, if the MIME type is not compressible, it is likely binary.
+ mainType match {
+ case "image" | "video" | "audio" | "font" | "model" | "multipart" => true
+ case "application" => !subType.startsWith("xml") && !subType.endsWith("json") && !subType.endsWith("javascript")
+ case "text" => false
+ case _ => !compressible
+ }
+ }
+
+ // Renders the media type info as a Scala code snippet
+ def render: String = {
+ val extensionsString =
+ if (extensions.isEmpty) ""
+ else s", ${extensions.map { string => s""""$string"""" }.mkString("List(", ", ", ")")}"
+
+ s"""
+lazy val `${subType}`: MediaType =
+ new MediaType("$mainType", "$subType", compressible = $compressible, binary = $binary$extensionsString)
+ """
+ }
+}
+
+object MediaTypeInfo {
+ def fromMimeDb(mimeDb: MimeDb): List[MediaTypeInfo] = {
+ mimeDb.mimeTypes.map { case (mimeType, details) =>
+ val Array(mainType, subType) = mimeType.split('/')
+ MediaTypeInfo(mainType, subType, details.compressible.getOrElse(false), details.extensions.getOrElse(List.empty))
+ }.toList
+ }
+}
+
+// Renders a group of media types as a Scala code snippet
+case class MediaTypeGroup(
+ mainType: String,
+ subTypes: List[MediaTypeInfo],
+) {
+ def render: String = {
+
+ s"""
+object ${RenderUtils.snakeCase(mainType)} {
+ ${subTypes.map(_.render).mkString("\n")}
+ lazy val all: List[MediaType] = List(${subTypes.map(t => RenderUtils.renderEscaped(t.subType)).mkString(", ")})
+ lazy val any: MediaType = new MediaType("$mainType", "*")
+}
+ """
+ }
+}
+
+object GenerateMediaTypes extends ZIOAppDefault {
+ val run =
+ for {
+ mimeDb <- MimeDb.fetch
+ mediaTypes = MediaTypeInfo.fromMimeDb(mimeDb)
+ mediaTypeGroups =
+ mediaTypes
+ .groupBy(_.mainType)
+ .map { case (mainType, subTypes) =>
+ MediaTypeGroup(mainType, subTypes)
+ }
+ .toList
+ file = MediaTypeFile(mediaTypeGroups)
+ mediaTypesPath = "../zio-http/shared/src/main/scala/zio/http/MediaTypes.scala"
+ _ <- ZIO.writeFile(mediaTypesPath, file.render)
+ } yield ()
+}
+
+// Renders a list of media type groups as a Scala code snippet
+case class MediaTypeFile(
+ groups: List[MediaTypeGroup],
+) {
+ def render: String = {
+ s"""
+// ⚠️ HEY YOU! IMPORTANT MESSAGE ⚠️
+// ==============================
+//
+// THIS FILE IS AUTOMATICALLY GENERATED BY `GenerateMediaTypes.scala`
+// So don't go editing it now, you hear? Otherwise your changes will
+// be overwritten the next time someone runs `sbt generateMediaTypes`
+
+package zio.http
+
+private[zio] trait MediaTypes {
+ private[zio] lazy val allMediaTypes: List[MediaType] =
+ ${groups.map(main => s"${RenderUtils.snakeCase(main.mainType)}.all").mkString(" ++ ")}
+ lazy val any: MediaType = new MediaType("*", "*")
+
+${groups.map(_.render).mkString("\n\n")}
+}
+ """
+ }
+}
diff --git a/zio-http/js/src/main/scala/zio/http/ZClientPlatformSpecific.scala b/zio-http/js/src/main/scala/zio/http/ZClientPlatformSpecific.scala
index 4503581450..1f9a3459c1 100644
--- a/zio-http/js/src/main/scala/zio/http/ZClientPlatformSpecific.scala
+++ b/zio-http/js/src/main/scala/zio/http/ZClientPlatformSpecific.scala
@@ -2,28 +2,40 @@ package zio.http
import zio._
+import zio.http.ZClient.Config
import zio.http.internal.FetchDriver
trait ZClientPlatformSpecific {
-// def customized: ZLayer[Config with ClientDriver with DnsResolver, Throwable, Client]
+ lazy val customized: ZLayer[Config with ZClient.Driver[Any, Throwable], Throwable, Client] = {
+ implicit val trace: Trace = Trace.empty
+ ZLayer.scoped {
+ for {
+ config <- ZIO.service[Config]
+ driver <- ZIO.service[ZClient.Driver[Any, Throwable]]
+ baseClient = ZClient.fromDriver(driver)
+ } yield
+ if (config.addUserAgentHeader)
+ baseClient.addHeader(ZClient.defaultUAHeader)
+ else
+ baseClient
+ }
+ }
- lazy val live: ZLayer[ZClient.Config, Throwable, Client] =
- default
+ lazy val live: ZLayer[ZClient.Config, Throwable, Client] = {
+ implicit val trace: Trace = Trace.empty
+ FetchDriver.live >>> customized
+ }.fresh
- // TODO should probably exist in js too
-// def configured(
-// path: NonEmptyChunk[String] = NonEmptyChunk("zio", "http", "client"),
-// )(implicit trace: Trace): ZLayer[DnsResolver, Throwable, Client] =
-// (
-// ZLayer.service[DnsResolver] ++
-// ZLayer(ZIO.config(Config.config.nested(path.head, path.tail: _*))) ++
-// ZLayer(ZIO.config(NettyConfig.config.nested(path.head, path.tail: _*)))
-// ).mapError(error => new RuntimeException(s"Configuration error: $error")) >>> live
+ def configured(
+ path: NonEmptyChunk[String] = NonEmptyChunk("zio", "http", "client"),
+ )(implicit trace: Trace): ZLayer[Any, Throwable, Client] =
+ ZLayer(ZIO.config(Config.config.nested(path.head, path.tail: _*)))
+ .mapError(error => new RuntimeException(s"Configuration error: $error")) >>> live
lazy val default: ZLayer[Any, Throwable, Client] = {
implicit val trace: Trace = Trace.empty
- FetchDriver.live >>> ZLayer(ZIO.serviceWith[FetchDriver](driver => ZClient.fromDriver(driver)))
+ ZLayer.succeed(Config.default) >>> live
}
}
diff --git a/zio-http/js/src/test/scala/zio/http/JSClientSpec.scala b/zio-http/js/src/test/scala/zio/http/JSClientSpec.scala
index 0b74c56630..6e6289efc7 100644
--- a/zio-http/js/src/test/scala/zio/http/JSClientSpec.scala
+++ b/zio-http/js/src/test/scala/zio/http/JSClientSpec.scala
@@ -6,14 +6,27 @@ import zio.test._
object JSClientSpec extends ZIOSpecDefault {
override def spec: Spec[TestEnvironment with Scope, Any] =
- suite("ClientSpec")(
+ suite("JSClientSpec")(
suite("HTTP")(
- test("Get") {
+ test("Get without User Agent") {
for {
+ res <- (for {
+ response <- ZIO.serviceWithZIO[Client] { _.url(url"https://example.com").get("") }
+ string <- response.body.asString
+ } yield (response, string))
+ .provideSome[Scope](ZLayer.succeed(ZClient.Config.default.addUserAgentHeader(false)) >>> ZClient.live)
+ (response, string) = res
+ } yield assertTrue(response.status.isSuccess, string.startsWith(""))
+ },
+ test("Get with User Agent") {
+ val client = (for {
response <- ZIO.serviceWithZIO[Client] { _.url(url"https://example.com").get("") }
string <- response.body.asString
- } yield assertTrue(response.status.isSuccess, string.startsWith(""))
- } @@ flaky, // calling a real website is not the best idea.
+ } yield (response, string)).provideSome[Scope](ZClient.default)
+ for {
+ isSuccess <- client.isSuccess
+ } yield assertTrue(isSuccess)
+ }, // calling a real website is not the best idea.
// Should be replaced with a local server, as soon as we have js server support
),
// suite("WebSocket")(
@@ -48,5 +61,5 @@ object JSClientSpec extends ZIOSpecDefault {
// } yield assertTrue(consoleMessages.contains("Server: Hello, World!"))
// }.provideSome[Scope & Client](ZLayer(Queue.bounded[String](100))),
// ),
- ).provideSome[Scope](ZClient.default)
+ )
}
diff --git a/zio-http/js/src/test/scala/zio/http/RegexSpec.scala b/zio-http/js/src/test/scala/zio/http/RegexSpec.scala
new file mode 100644
index 0000000000..b70f042091
--- /dev/null
+++ b/zio-http/js/src/test/scala/zio/http/RegexSpec.scala
@@ -0,0 +1,67 @@
+package zio.http
+
+import zio._
+import zio.test._
+
+object RegexSpec extends ZIOSpecDefault {
+ override def spec: Spec[TestEnvironment with Scope, Any] =
+ suite("RegexSpec")(
+ suite("Header")(
+ test("AcceptLanguage") {
+ ZIO.succeed(Header.AcceptLanguage).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentDisposition") {
+ ZIO.succeed(Header.ContentDisposition).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentMd5") {
+ ZIO.succeed(Header.ContentMd5).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentRange") {
+ ZIO.succeed(Header.ContentRange).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentSecurityPolicy.Source") {
+ ZIO.succeed(Header.ContentSecurityPolicy.Source).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentSecurityPolicy.TrustedTypesValue") {
+ ZIO.succeed(Header.ContentSecurityPolicy.TrustedTypesValue).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentSecurityPolicy") {
+ ZIO.succeed(Header.ContentSecurityPolicy).isSuccess.map(s => assertTrue(s))
+ },
+ test("ContentTransferEncoding") {
+ ZIO.succeed(Header.ContentTransferEncoding).isSuccess.map(s => assertTrue(s))
+ },
+ test("From") {
+ ZIO.succeed(Header.From).isSuccess.map(s => assertTrue(s))
+ },
+ test("Trailer") {
+ ZIO.succeed(Header.Trailer).isSuccess.map(s => assertTrue(s))
+ },
+ test("UserAgent") {
+ ZIO.succeed(Header.UserAgent).isSuccess.map(s => assertTrue(s))
+ },
+ test("WWWAuthenticate") {
+ ZIO.succeed(Header.WWWAuthenticate).isSuccess.map(s => assertTrue(s))
+ },
+ test("WWWAuthenticate") {
+ ZIO.succeed(Header.WWWAuthenticate).isSuccess.map(s => assertTrue(s))
+ },
+ ),
+ suite("HttpContentCodec")(
+ test("HttpContentCodec") {
+ ZIO.succeed(codec.HttpContentCodec).isSuccess.map(s => assertTrue(s))
+ },
+ ),
+ suite("OpenAPI")(
+ test("Key") {
+ ZIO.succeed(endpoint.openapi.OpenAPI.Key).isSuccess.map(s => assertTrue(s))
+ },
+ test("Path") {
+ ZIO.succeed(endpoint.openapi.OpenAPI.Path).isSuccess.map(s => assertTrue(s))
+ },
+ test("LiteralOrExpression") {
+ ZIO.succeed(endpoint.openapi.OpenAPI.LiteralOrExpression).isSuccess.map(s => assertTrue(s))
+ },
+ ),
+ )
+}
diff --git a/zio-http/jvm/src/main/scala/zio/http/HandlerPlatformSpecific.scala b/zio-http/jvm/src/main/scala/zio/http/HandlerPlatformSpecific.scala
index dcdc0c76a3..681159b801 100644
--- a/zio-http/jvm/src/main/scala/zio/http/HandlerPlatformSpecific.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/HandlerPlatformSpecific.scala
@@ -1,6 +1,7 @@
package zio.http
import java.io.{File, FileNotFoundException}
+import java.nio.charset.Charset
import java.util.zip.ZipFile
import zio.{Trace, ZIO}
@@ -13,21 +14,24 @@ trait HandlerPlatformSpecific {
/**
* Creates a handler from a resource path
*/
- def fromResource(path: String)(implicit trace: Trace): Handler[Any, Throwable, Any, Response] =
+ def fromResource(path: String, charset: Charset = Charsets.Utf8)(implicit
+ trace: Trace,
+ ): Handler[Any, Throwable, Any, Response] =
Handler.fromZIO {
ZIO
.attemptBlocking(getClass.getClassLoader.getResource(path))
.map { resource =>
if (resource == null) Handler.fail(new FileNotFoundException(s"Resource $path not found"))
- else fromResourceWithURL(resource)
+ else fromResourceWithURL(resource, charset)
}
}.flatten
private[zio] def fromResourceWithURL(
url: java.net.URL,
+ charset: Charset,
)(implicit trace: Trace): Handler[Any, Throwable, Any, Response] = {
url.getProtocol match {
- case "file" => Handler.fromFile(new File(url.getPath))
+ case "file" => Handler.fromFile(new File(url.getPath), charset)
case "jar" =>
val path = new java.net.URI(url.getPath).getPath // remove "file:" prefix and normalize whitespace
val bangIndex = path.indexOf('!')
@@ -56,8 +60,9 @@ trait HandlerPlatformSpecific {
.flatMap { case (entry, jar) => ZStream.fromInputStream(jar.getInputStream(entry)) }
response = Response(body = Body.fromStream(inZStream, contentLength))
} yield mediaType.fold(response) { t =>
+ val charset0 = if (t.mainType == "text" || !t.binary) Some(charset) else None
response
- .addHeader(Header.ContentType(t))
+ .addHeader(Header.ContentType(t, charset = charset0))
}
}
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/ServerPlatformSpecific.scala b/zio-http/jvm/src/main/scala/zio/http/ServerPlatformSpecific.scala
index b97eaa0c19..922a522b6a 100644
--- a/zio-http/jvm/src/main/scala/zio/http/ServerPlatformSpecific.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/ServerPlatformSpecific.scala
@@ -10,14 +10,25 @@ trait ServerPlatformSpecific {
private[http] val base: ZLayer[Driver & Config, Throwable, Server]
- val customized: ZLayer[Config & NettyConfig, Throwable, Server] = {
+ val customized: ZLayer[Config & NettyConfig, Throwable, Driver with Server] = {
implicit val trace: Trace = Trace.empty
- NettyDriver.customized >>> base
+
+ val baseExtra: ZLayer[Driver & Config, Throwable, Server with Driver] =
+ ZLayer.suspend(base) >+> ZLayer.environment[Driver]
+ val nettyExtra: ZLayer[Config & NettyConfig, Throwable, Driver with Config] =
+ NettyDriver.customized ++ ZLayer.environment[Config]
+ val composed: ZLayer[Config & NettyConfig, Throwable, Server with Driver] = nettyExtra >>> baseExtra
+ // NettyDriver.customized >>> base
+ composed
}
- val live: ZLayer[Config, Throwable, Server] = {
- implicit val trace: Trace = Trace.empty
- NettyDriver.live >+> base
+ val live: ZLayer[Config, Throwable, Server with Driver] = {
+ implicit val trace: Trace = Trace.empty
+ val baseExtra: ZLayer[Driver & Config, Throwable, Server with Driver] =
+ ZLayer.suspend(base) >+> ZLayer.environment[Driver]
+ val nettyExtra: ZLayer[Config, Throwable, Driver with Config] = NettyDriver.live ++ ZLayer.environment[Config]
+ val res: ZLayer[Config, Throwable, Server with Driver] = nettyExtra >>> baseExtra
+ res
}
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/ZClientPlatformSpecific.scala b/zio-http/jvm/src/main/scala/zio/http/ZClientPlatformSpecific.scala
index 1cf3ec0ff9..6d6a3e8df8 100644
--- a/zio-http/jvm/src/main/scala/zio/http/ZClientPlatformSpecific.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/ZClientPlatformSpecific.scala
@@ -8,7 +8,22 @@ import zio.http.netty.client.NettyClientDriver
trait ZClientPlatformSpecific {
- def customized: ZLayer[Config with ClientDriver with DnsResolver, Throwable, Client]
+ lazy val customized: ZLayer[Config with ClientDriver with DnsResolver, Throwable, Client] = {
+ implicit val trace: Trace = Trace.empty
+ ZLayer.scoped {
+ for {
+ config <- ZIO.service[Config]
+ driver <- ZIO.service[ClientDriver]
+ dnsResolver <- ZIO.service[DnsResolver]
+ connectionPool <- driver.createConnectionPool(dnsResolver, config.connectionPool)
+ baseClient = ZClient.fromDriver(new ZClient.DriverLive(driver)(connectionPool)(config))
+ } yield
+ if (config.addUserAgentHeader)
+ baseClient.addHeader(ZClient.defaultUAHeader)
+ else
+ baseClient
+ }
+ }
lazy val live: ZLayer[ZClient.Config with NettyConfig with DnsResolver, Throwable, Client] = {
implicit val trace: Trace = Trace.empty
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/AsyncBodyReader.scala b/zio-http/jvm/src/main/scala/zio/http/netty/AsyncBodyReader.scala
index db11dfa77b..6425d501a6 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/AsyncBodyReader.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/AsyncBodyReader.scala
@@ -18,10 +18,11 @@ package zio.http.netty
import java.io.IOException
+import scala.collection.mutable
+
+import zio.Chunk
import zio.stacktracer.TracingImplicits.disableAutoTrace
-import zio.{Chunk, ChunkBuilder}
-import zio.http.netty.AsyncBodyReader.State
import zio.http.netty.NettyBody.UnsafeAsync
import io.netty.buffer.ByteBufUtil
@@ -29,33 +30,38 @@ import io.netty.channel.{ChannelHandlerContext, SimpleChannelInboundHandler}
import io.netty.handler.codec.http.{HttpContent, LastHttpContent}
abstract class AsyncBodyReader extends SimpleChannelInboundHandler[HttpContent](true) {
+ import zio.http.netty.AsyncBodyReader._
+
+ private var state: State = State.Buffering
+ private val buffer = new mutable.ArrayBuilder.ofByte()
+ private var previousAutoRead: Boolean = false
+ private var readingDone: Boolean = false
+ private var ctx: ChannelHandlerContext = _
- private var state: State = State.Buffering
- private val buffer: ChunkBuilder[(Chunk[Byte], Boolean)] = ChunkBuilder.make[(Chunk[Byte], Boolean)]()
- private var previousAutoRead: Boolean = false
- private var ctx: ChannelHandlerContext = _
+ private def result(buffer: mutable.ArrayBuilder.ofByte): Chunk[Byte] = {
+ val arr = buffer.result()
+ Chunk.ByteArray(arr, 0, arr.length)
+ }
private[zio] def connect(callback: UnsafeAsync): Unit = {
+ val buffer0 = buffer // Avoid reading it from the heap in the synchronized block
this.synchronized {
state match {
case State.Buffering =>
- val result: Chunk[(Chunk[Byte], Boolean)] = buffer.result()
- val readingDone: Boolean = result.lastOption match {
- case None => false
- case Some((_, isLast)) => isLast
- }
-
- if (ctx.channel.isOpen || readingDone) {
- state = State.Direct(callback)
- result.foreach { case (chunk, isLast) =>
- callback(chunk, isLast)
+ state = State.Direct(callback)
+
+ if (readingDone) {
+ callback(result(buffer0), isLast = true)
+ } else if (ctx.channel().isOpen) {
+ callback match {
+ case UnsafeAsync.Aggregating(bufSize) => buffer.sizeHint(bufSize)
+ case cb => cb(result(buffer0), isLast = false)
}
ctx.read(): Unit
} else {
throw new IllegalStateException("Attempting to read from a closed channel, which will never finish")
}
-
- case State.Direct(_) =>
+ case _ =>
throw new IllegalStateException("Cannot connect twice")
}
}
@@ -71,26 +77,42 @@ abstract class AsyncBodyReader extends SimpleChannelInboundHandler[HttpContent](
val _ = ctx.channel().config().setAutoRead(previousAutoRead)
}
+ protected def onLastMessage(): Unit = ()
+
override def channelRead0(
ctx: ChannelHandlerContext,
msg: HttpContent,
): Unit = {
- val isLast = msg.isInstanceOf[LastHttpContent]
- val chunk = Chunk.fromArray(ByteBufUtil.getBytes(msg.content()))
+ val buffer0 = buffer // Avoid reading it from the heap in the synchronized block
this.synchronized {
+ val isLast = msg.isInstanceOf[LastHttpContent]
+ val content = ByteBufUtil.getBytes(msg.content())
+
+ if (isLast) {
+ readingDone = true
+ ctx.channel().pipeline().remove(this)
+ onLastMessage()
+ }
+
state match {
- case State.Buffering =>
- buffer += ((chunk, isLast))
- case State.Direct(callback) =>
- callback(chunk, isLast)
- ctx.read()
+ case State.Buffering =>
+ // `connect` method hasn't been called yet, add all incoming content to the buffer
+ buffer0.addAll(content)
+ case State.Direct(callback) if isLast && buffer0.knownSize == 0 =>
+ // Buffer is empty, we can just use the array directly
+ callback(Chunk.fromArray(content), isLast = true)
+ case State.Direct(callback: UnsafeAsync.Aggregating) =>
+ // We're aggregating the full response, only call the callback on the last message
+ buffer0.addAll(content)
+ if (isLast) callback(result(buffer0), isLast = true)
+ case State.Direct(callback) =>
+ // We're streaming, emit chunks as they come
+ callback(Chunk.fromArray(content), isLast)
}
- }
- if (isLast) {
- ctx.channel().pipeline().remove(this)
- }: Unit
+ if (!isLast) ctx.read(): Unit
+ }
}
override def exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable): Unit = {
@@ -117,6 +139,8 @@ abstract class AsyncBodyReader extends SimpleChannelInboundHandler[HttpContent](
}
object AsyncBodyReader {
+ private val FnUnit = () => ()
+
sealed trait State
object State {
@@ -124,4 +148,10 @@ object AsyncBodyReader {
final case class Direct(callback: UnsafeAsync) extends State
}
+
+ // For Scala 2.12. In Scala 2.13+, the methods directly implemented on ArrayBuilder[Byte] are selected over syntax.
+ private implicit class ByteArrayBuilderOps[A](private val self: mutable.ArrayBuilder[Byte]) extends AnyVal {
+ def addAll(as: Array[Byte]): Unit = self ++= as
+ def knownSize: Int = -1
+ }
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/NettyBody.scala b/zio-http/jvm/src/main/scala/zio/http/netty/NettyBody.scala
index ee58652262..ff868bdc4b 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/NettyBody.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/NettyBody.scala
@@ -18,18 +18,18 @@ package zio.http.netty
import java.nio.charset.Charset
+import zio._
import zio.stacktracer.TracingImplicits.disableAutoTrace
-import zio.{Chunk, Task, Trace, Unsafe, ZIO}
import zio.stream.ZStream
-import zio.http.Body.{UnsafeBytes, UnsafeWriteable}
+import zio.http.Body.UnsafeBytes
import zio.http.internal.BodyEncoding
-import zio.http.{Body, Boundary, Header, Headers, MediaType}
+import zio.http.{Body, Boundary, MediaType}
import io.netty.buffer.{ByteBuf, ByteBufUtil}
-import io.netty.channel.{Channel => JChannel}
import io.netty.util.AsciiString
+
object NettyBody extends BodyEncoding {
/**
@@ -55,8 +55,11 @@ object NettyBody extends BodyEncoding {
* Helper to create Body from ByteBuf
*/
private[zio] def fromByteBuf(byteBuf: ByteBuf, contentTypeHeader: Option[String]): Body = {
- val (mediaType, boundary) = mediaTypeAndBoundary(contentTypeHeader)
- ByteBufBody(byteBuf, mediaType, boundary)
+ if (byteBuf.readableBytes() == 0) Body.EmptyBody
+ else {
+ val (mediaType, boundary) = mediaTypeAndBoundary(contentTypeHeader)
+ Body.ArrayBody(ByteBufUtil.getBytes(byteBuf), mediaType, boundary)
+ }
}
private def mediaTypeAndBoundary(contentTypeHeader: Option[String]) = {
@@ -73,7 +76,6 @@ object NettyBody extends BodyEncoding {
override val mediaType: Option[MediaType] = None,
override val boundary: Option[Boundary] = None,
) extends Body
- with UnsafeWriteable
with UnsafeBytes {
override def asArray(implicit trace: Trace): Task[Array[Byte]] = ZIO.succeed(asciiString.array())
@@ -100,70 +102,48 @@ object NettyBody extends BodyEncoding {
override def knownContentLength: Option[Long] = Some(asciiString.length().toLong)
}
- private[zio] final case class ByteBufBody(
- val byteBuf: ByteBuf,
- override val mediaType: Option[MediaType] = None,
- override val boundary: Option[Boundary] = None,
- ) extends Body
- with UnsafeWriteable
- with UnsafeBytes {
-
- override def asArray(implicit trace: Trace): Task[Array[Byte]] = ZIO.succeed(ByteBufUtil.getBytes(byteBuf))
-
- override def isComplete: Boolean = true
-
- override def isEmpty: Boolean = false
-
- override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] = asArray.map(Chunk.fromArray)
-
- override def asStream(implicit trace: Trace): ZStream[Any, Throwable, Byte] =
- ZStream.unwrap(asChunk.map(ZStream.fromChunk(_)))
-
- override def toString(): String = s"Body.fromByteBuf($byteBuf)"
-
- override private[zio] def unsafeAsArray(implicit unsafe: Unsafe): Array[Byte] =
- ByteBufUtil.getBytes(byteBuf)
-
- override def contentType(newMediaType: MediaType): Body = copy(mediaType = Some(newMediaType))
-
- override def contentType(newMediaType: MediaType, newBoundary: Boundary): Body =
- copy(mediaType = Some(newMediaType), boundary = Some(newBoundary))
-
- override def knownContentLength: Option[Long] = Some(byteBuf.readableBytes().toLong)
- }
-
private[zio] final case class AsyncBody(
unsafeAsync: UnsafeAsync => Unit,
knownContentLength: Option[Long],
override val mediaType: Option[MediaType] = None,
override val boundary: Option[Boundary] = None,
- ) extends Body
- with UnsafeWriteable {
- override def asArray(implicit trace: Trace): Task[Array[Byte]] = asChunk.map(_.toArray)
+ ) extends Body {
+
+ override def asArray(implicit trace: Trace): Task[Array[Byte]] = asChunk.map {
+ case b: Chunk.ByteArray => b.array
+ case other => other.toArray
+ }
- override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] = asStream.runCollect
+ override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] =
+ ZIO.async { cb =>
+ try {
+ // Cap at 100kB as a precaution in case the server sends an invalid content length
+ unsafeAsync(UnsafeAsync.Aggregating(bufferSize(1024 * 100))(cb))
+ } catch {
+ case e: Throwable => cb(ZIO.fail(e))
+ }
+ }
override def asStream(implicit trace: Trace): ZStream[Any, Throwable, Byte] =
ZStream
.async[Any, Throwable, Byte](
emit =>
try {
- unsafeAsync(new UnsafeAsync {
- override def apply(message: Chunk[Byte], isLast: Boolean): Unit = {
- emit(ZIO.succeed(message))
- if (isLast) {
- emit(ZIO.fail(None))
- }
- }
- override def fail(cause: Throwable): Unit =
- emit(ZIO.fail(Some(cause)))
- })
+ unsafeAsync(new UnsafeAsync.Streaming(emit))
} catch {
case e: Throwable => emit(ZIO.fail(Option(e)))
},
- 4096,
+ bufferSize(4096),
)
+ // No need to create a large buffer when we know the response is small
+ private[this] def bufferSize(maxSize: Int): Int = {
+ val cl = knownContentLength.getOrElse(4096L)
+ if (cl <= 16L) 16
+ else if (cl >= maxSize) maxSize
+ else Integer.highestOneBit(cl.toInt - 1) << 1 // Round to next power of 2
+ }
+
override def isComplete: Boolean = false
override def isEmpty: Boolean = false
@@ -180,4 +160,30 @@ object NettyBody extends BodyEncoding {
def apply(message: Chunk[Byte], isLast: Boolean): Unit
def fail(cause: Throwable): Unit
}
+
+ private[zio] object UnsafeAsync {
+ private val FailNone = Exit.fail(None)
+
+ final case class Aggregating(bufferInitialSize: Int)(callback: Task[Chunk[Byte]] => Unit)(implicit trace: Trace)
+ extends UnsafeAsync {
+
+ def apply(message: Chunk[Byte], isLast: Boolean): Unit = {
+ assert(isLast)
+ callback(ZIO.succeed(message))
+ }
+
+ def fail(cause: Throwable): Unit =
+ callback(ZIO.fail(cause))
+ }
+
+ final class Streaming(emit: ZStream.Emit[Any, Throwable, Byte, Unit])(implicit trace: Trace) extends UnsafeAsync {
+ def apply(message: Chunk[Byte], isLast: Boolean): Unit = {
+ if (message.nonEmpty) emit(ZIO.succeed(message))
+ if (isLast) emit(FailNone)
+ }
+
+ def fail(cause: Throwable): Unit =
+ emit(ZIO.fail(Some(cause)))
+ }
+ }
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/NettyBodyWriter.scala b/zio-http/jvm/src/main/scala/zio/http/netty/NettyBodyWriter.scala
index 93acabad5a..3a39498cd2 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/NettyBodyWriter.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/NettyBodyWriter.scala
@@ -26,12 +26,11 @@ import zio.stream.ZStream
import zio.http.Body
import zio.http.Body._
-import zio.http.netty.NettyBody.{AsciiStringBody, AsyncBody, ByteBufBody, UnsafeAsync}
+import zio.http.netty.NettyBody.{AsciiStringBody, AsyncBody, UnsafeAsync}
import io.netty.buffer.Unpooled
import io.netty.channel._
import io.netty.handler.codec.http.{DefaultHttpContent, LastHttpContent}
-import io.netty.handler.stream.ChunkedNioFile
object NettyBodyWriter {
@@ -56,10 +55,6 @@ object NettyBodyWriter {
}
body match {
- case body: ByteBufBody =>
- ctx.write(new DefaultHttpContent(body.byteBuf))
- ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT)
- None
case body: FileBody =>
// We need to stream the file when compression is enabled otherwise the response encoding fails
val stream = ZStream.fromFile(body.file)
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/NettyResponse.scala b/zio-http/jvm/src/main/scala/zio/http/netty/NettyResponse.scala
index c8e7dffd53..9e68e07a1b 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/NettyResponse.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/NettyResponse.scala
@@ -24,17 +24,16 @@ import zio.http.netty.client.ClientResponseStreamHandler
import zio.http.netty.model.Conversions
import zio.http.{Body, Header, Response}
-import io.netty.buffer.Unpooled
+import io.netty.buffer.{ByteBufUtil, Unpooled}
import io.netty.channel.ChannelHandlerContext
import io.netty.handler.codec.http.{FullHttpResponse, HttpResponse}
object NettyResponse {
def apply(jRes: FullHttpResponse)(implicit unsafe: Unsafe): Response = {
- val status = Conversions.statusFromNetty(jRes.status())
- val headers = Conversions.headersFromNetty(jRes.headers())
- val copiedBuffer = Unpooled.copiedBuffer(jRes.content())
- val data = NettyBody.fromByteBuf(copiedBuffer, headers.headers.get(Header.ContentType.name))
+ val status = Conversions.statusFromNetty(jRes.status())
+ val headers = Conversions.headersFromNetty(jRes.headers())
+ val data = NettyBody.fromByteBuf(jRes.content(), headers.headers.get(Header.ContentType.name))
Response(status, headers, data)
}
@@ -56,6 +55,7 @@ object NettyResponse {
onComplete.unsafe.done(Exit.succeed(ChannelState.forStatus(status)))
Response(status, headers, Body.empty)
} else {
+ val contentType = headers.get(Header.ContentType)
val responseHandler = new ClientResponseStreamHandler(onComplete, keepAlive, status)
ctx
.pipeline()
@@ -65,7 +65,11 @@ object NettyResponse {
responseHandler,
): Unit
- val data = NettyBody.fromAsync(callback => responseHandler.connect(callback), knownContentLength)
+ val data = NettyBody.fromAsync(
+ callback => responseHandler.connect(callback),
+ knownContentLength,
+ contentType.map(_.renderedValue),
+ )
Response(status, headers, data)
}
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/client/ClientResponseStreamHandler.scala b/zio-http/jvm/src/main/scala/zio/http/netty/client/ClientResponseStreamHandler.scala
index b898944d4b..28e704771e 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/client/ClientResponseStreamHandler.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/client/ClientResponseStreamHandler.scala
@@ -35,18 +35,16 @@ final class ClientResponseStreamHandler(
private implicit val unsafe: Unsafe = Unsafe.unsafe
+ override def onLastMessage(): Unit =
+ if (keepAlive)
+ onComplete.unsafe.done(Exit.succeed(ChannelState.forStatus(status)))
+ else
+ onComplete.unsafe.done(Exit.succeed(ChannelState.Invalid))
+
override def channelRead0(ctx: ChannelHandlerContext, msg: HttpContent): Unit = {
val isLast = msg.isInstanceOf[LastHttpContent]
super.channelRead0(ctx, msg)
-
- if (isLast) {
- if (keepAlive)
- onComplete.unsafe.done(Exit.succeed(ChannelState.forStatus(status)))
- else {
- onComplete.unsafe.done(Exit.succeed(ChannelState.Invalid))
- ctx.close(): Unit
- }
- }
+ if (isLast && !keepAlive) ctx.close(): Unit
}
override def exceptionCaught(ctx: ChannelHandlerContext, cause: Throwable): Unit =
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyClientDriver.scala b/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyClientDriver.scala
index 0a0b4e44a5..6ca16548a9 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyClientDriver.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyClientDriver.scala
@@ -16,8 +16,6 @@
package zio.http.netty.client
-import scala.collection.mutable
-
import zio._
import zio.stacktracer.TracingImplicits.disableAutoTrace
@@ -28,10 +26,11 @@ import zio.http.netty._
import zio.http.netty.model.Conversions
import zio.http.netty.socket.NettySocketProtocol
-import io.netty.channel.{Channel, ChannelFactory, ChannelFuture, ChannelHandler, EventLoopGroup}
+import io.netty.channel.{Channel, ChannelFactory, ChannelFuture, EventLoopGroup}
import io.netty.handler.codec.PrematureChannelClosureException
import io.netty.handler.codec.http.websocketx.{WebSocketClientProtocolHandler, WebSocketFrame => JWebSocketFrame}
-import io.netty.handler.codec.http.{FullHttpRequest, HttpObjectAggregator, HttpRequest}
+import io.netty.handler.codec.http.{FullHttpRequest, HttpObjectAggregator}
+import io.netty.util.concurrent.GenericFutureListener
final case class NettyClientDriver private[netty] (
channelFactory: ChannelFactory[Channel],
@@ -50,129 +49,123 @@ final case class NettyClientDriver private[netty] (
enableKeepAlive: Boolean,
createSocketApp: () => WebSocketApp[Any],
webSocketConfig: WebSocketConfig,
- )(implicit trace: Trace): ZIO[Scope, Throwable, ChannelInterface] = {
- val f = NettyRequestEncoder.encode(req).flatMap { jReq =>
- for {
- _ <- Scope.addFinalizer {
- ZIO.attempt {
- jReq match {
- case fullRequest: FullHttpRequest =>
- if (fullRequest.refCnt() > 0)
- fullRequest.release(fullRequest.refCnt())
- case _ =>
- }
- }.ignore
- }
- queue <- Queue.unbounded[WebSocketChannelEvent]
- nettyChannel = NettyChannel.make[JWebSocketFrame](channel)
- webSocketChannel = WebSocketChannel.make(nettyChannel, queue)
- app = createSocketApp()
- _ <- app.handler.runZIO(webSocketChannel).ignoreLogged.interruptible.forkScoped
- } yield {
- val pipeline = channel.pipeline()
- val toRemove: mutable.Set[ChannelHandler] = new mutable.HashSet[ChannelHandler]()
-
- if (location.scheme.isWebSocket) {
- val httpObjectAggregator = new HttpObjectAggregator(Int.MaxValue)
- val inboundHandler = new WebSocketClientInboundHandler(onResponse, onComplete)
-
- pipeline.addLast(Names.HttpObjectAggregator, httpObjectAggregator)
- pipeline.addLast(Names.ClientInboundHandler, inboundHandler)
-
- toRemove.add(httpObjectAggregator)
- toRemove.add(inboundHandler)
-
- val headers = Conversions.headersToNetty(req.headers)
- val config = NettySocketProtocol
- .clientBuilder(app.customConfig.getOrElse(webSocketConfig))
- .customHeaders(headers)
- .webSocketUri(req.url.encode)
- .build()
-
- // Handles the heavy lifting required to upgrade the connection to a WebSocket connection
-
- val webSocketClientProtocol = new WebSocketClientProtocolHandler(config)
- val webSocket = new WebSocketAppHandler(nettyRuntime, queue, Some(onComplete))
+ )(implicit trace: Trace): ZIO[Scope, Throwable, ChannelInterface] =
+ if (location.scheme.isWebSocket)
+ requestWebsocket(channel, req, onResponse, onComplete, createSocketApp, webSocketConfig)
+ else
+ requestHttp(channel, req, onResponse, onComplete, enableKeepAlive)
- pipeline.addLast(Names.WebSocketClientProtocolHandler, webSocketClientProtocol)
- pipeline.addLast(Names.WebSocketHandler, webSocket)
-
- toRemove.add(webSocketClientProtocol)
- toRemove.add(webSocket)
-
- pipeline.fireChannelRegistered()
- pipeline.fireChannelActive()
-
- new ChannelInterface {
- override def resetChannel: ZIO[Any, Throwable, ChannelState] =
- ZIO.succeed(
- ChannelState.Invalid,
- ) // channel becomes invalid - reuse of websocket channels not supported currently
-
- override def interrupt: ZIO[Any, Throwable, Unit] =
- NettyFutureExecutor.executed(channel.disconnect())
- }
- } else {
- val clientInbound =
- new ClientInboundHandler(
- nettyRuntime,
- req,
- jReq,
- onResponse,
- onComplete,
- enableKeepAlive,
- )
-
- pipeline.addLast(Names.ClientInboundHandler, clientInbound)
- toRemove.add(clientInbound)
-
- val clientFailureHandler = new ClientFailureHandler(onResponse, onComplete)
- pipeline.addLast(Names.ClientFailureHandler, clientFailureHandler)
- toRemove.add(clientFailureHandler)
-
- pipeline.fireChannelRegistered()
- pipeline.fireUserEventTriggered(ClientInboundHandler.SendRequest)
-
- val frozenToRemove = toRemove.toSet
-
- new ChannelInterface {
- override def resetChannel: ZIO[Any, Throwable, ChannelState] =
- ZIO.attempt {
- frozenToRemove.foreach(pipeline.remove)
- ChannelState.Reusable // channel can be reused
- }
-
- override def interrupt: ZIO[Any, Throwable, Unit] =
- NettyFutureExecutor.executed(channel.disconnect())
+ private def requestHttp(
+ channel: Channel,
+ req: Request,
+ onResponse: Promise[Throwable, Response],
+ onComplete: Promise[Throwable, ChannelState],
+ enableKeepAlive: Boolean,
+ )(implicit trace: Trace): RIO[Scope, ChannelInterface] =
+ ZIO
+ .succeed(NettyRequestEncoder.encode(req))
+ .tapSome { case fullReq: FullHttpRequest =>
+ Scope.addFinalizer {
+ ZIO.succeed {
+ val refCount = fullReq.refCnt()
+ if (refCount > 0) fullReq.release(refCount) else ()
}
}
}
- }
+ .map { jReq =>
+ val closeListener: GenericFutureListener[ChannelFuture] = { (_: ChannelFuture) =>
+ // If onComplete was already set, it means another fiber is already in the process of fulfilling the promises
+ // so we don't need to fulfill `onResponse`
+ nettyRuntime.unsafeRunSync {
+ onComplete.interrupt && onResponse.fail(NettyClientDriver.PrematureChannelClosure)
+ }(Unsafe.unsafe, trace): Unit
+ }
- f.ensuring {
- // If the channel was closed and the promises were not completed, this will lead to the request hanging so we need
- // to listen to the close future and complete the promises
- ZIO.unless(location.scheme.isWebSocket) {
- ZIO.succeedUnsafe { implicit u =>
- channel.closeFuture().addListener { (_: ChannelFuture) =>
- // If onComplete was already set, it means another fiber is already in the process of fulfilling the promises
- // so we don't need to fulfill `onResponse`
- nettyRuntime.unsafeRunSync {
- ZIO
- .whenZIO(onComplete.interrupt)(
- onResponse.fail(
- new PrematureChannelClosureException(
- "Channel closed while executing the request. This is likely caused due to a client connection misconfiguration",
- ),
- ),
- )
- .unit
+ val pipeline = channel.pipeline()
+
+ pipeline.addLast(
+ Names.ClientInboundHandler,
+ new ClientInboundHandler(nettyRuntime, req, jReq, onResponse, onComplete, enableKeepAlive),
+ )
+
+ pipeline.addLast(
+ Names.ClientFailureHandler,
+ new ClientFailureHandler(onResponse, onComplete),
+ )
+
+ pipeline
+ .fireChannelRegistered()
+ .fireUserEventTriggered(ClientInboundHandler.SendRequest)
+
+ channel.closeFuture().addListener(closeListener)
+ new ChannelInterface {
+ override def resetChannel: ZIO[Any, Throwable, ChannelState] = {
+ ZIO.attempt {
+ channel.closeFuture().removeListener(closeListener)
+ pipeline.remove(Names.ClientInboundHandler)
+ pipeline.remove(Names.ClientFailureHandler)
+ ChannelState.Reusable // channel can be reused
}
}
+
+ override def interrupt: ZIO[Any, Throwable, Unit] =
+ ZIO.suspendSucceed {
+ channel.closeFuture().removeListener(closeListener)
+ NettyFutureExecutor.executed(channel.disconnect())
+ }
}
}
- }
+ private def requestWebsocket(
+ channel: Channel,
+ req: Request,
+ onResponse: Promise[Throwable, Response],
+ onComplete: Promise[Throwable, ChannelState],
+ createSocketApp: () => WebSocketApp[Any],
+ webSocketConfig: WebSocketConfig,
+ )(implicit trace: Trace): RIO[Scope, ChannelInterface] = {
+ for {
+ queue <- Queue.unbounded[WebSocketChannelEvent]
+ nettyChannel = NettyChannel.make[JWebSocketFrame](channel)
+ webSocketChannel = WebSocketChannel.make(nettyChannel, queue)
+ app = createSocketApp()
+ _ <- app.handler.runZIO(webSocketChannel).ignoreLogged.interruptible.forkScoped
+ } yield {
+ val pipeline = channel.pipeline()
+
+ val httpObjectAggregator = new HttpObjectAggregator(Int.MaxValue)
+ val inboundHandler = new WebSocketClientInboundHandler(onResponse, onComplete)
+
+ pipeline.addLast(Names.HttpObjectAggregator, httpObjectAggregator)
+ pipeline.addLast(Names.ClientInboundHandler, inboundHandler)
+
+ val headers = Conversions.headersToNetty(req.headers)
+ val config = NettySocketProtocol
+ .clientBuilder(app.customConfig.getOrElse(webSocketConfig))
+ .customHeaders(headers)
+ .webSocketUri(req.url.encode)
+ .build()
+
+ // Handles the heavy lifting required to upgrade the connection to a WebSocket connection
+
+ val webSocketClientProtocol = new WebSocketClientProtocolHandler(config)
+ val webSocket = new WebSocketAppHandler(nettyRuntime, queue, Some(onComplete))
+
+ pipeline.addLast(Names.WebSocketClientProtocolHandler, webSocketClientProtocol)
+ pipeline.addLast(Names.WebSocketHandler, webSocket)
+
+ pipeline.fireChannelRegistered()
+ pipeline.fireChannelActive()
+
+ new ChannelInterface {
+ override def resetChannel: ZIO[Any, Throwable, ChannelState] =
+ // channel becomes invalid - reuse of websocket channels not supported currently
+ Exit.succeed(ChannelState.Invalid)
+
+ override def interrupt: ZIO[Any, Throwable, Unit] =
+ NettyFutureExecutor.executed(channel.disconnect())
+ }
+ }
}
override def createConnectionPool(dnsResolver: DnsResolver, config: ConnectionPoolConfig)(implicit
@@ -196,4 +189,8 @@ object NettyClientDriver {
} yield NettyClientDriver(channelFactory, eventLoopGroup, nettyRuntime)
}
+ private val PrematureChannelClosure = new PrematureChannelClosureException(
+ "Channel closed while executing the request. This is likely caused due to a client connection misconfiguration",
+ )
+
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyConnectionPool.scala b/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyConnectionPool.scala
index e657fe7c01..bdc52a647d 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyConnectionPool.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyConnectionPool.scala
@@ -106,26 +106,41 @@ object NettyConnectionPool {
for {
resolvedHosts <- dnsResolver.resolve(location.host)
- pickedHost <- Random.nextIntBounded(resolvedHosts.size)
- host = resolvedHosts(pickedHost)
- channelFuture <- ZIO.attempt {
- val bootstrap = new Bootstrap()
- .channelFactory(channelFactory)
- .group(eventLoopGroup)
- .remoteAddress(new InetSocketAddress(host, location.port))
- .withOption[Integer](ChannelOption.CONNECT_TIMEOUT_MILLIS, connectionTimeout.map(_.toMillis.toInt))
- .handler(initializer)
- (localAddress match {
- case Some(addr) => bootstrap.localAddress(addr)
- case _ => bootstrap
- }).connect()
+ hosts <- Random.shuffle(resolvedHosts.toList)
+ hostsNec <- ZIO.succeed(NonEmptyChunk.fromIterable(hosts.head, hosts.tail))
+ ch <- collectFirstSuccess(hostsNec) { host =>
+ ZIO.suspend {
+ val bootstrap = new Bootstrap()
+ .channelFactory(channelFactory)
+ .group(eventLoopGroup)
+ .remoteAddress(new InetSocketAddress(host, location.port))
+ .withOption[Integer](ChannelOption.CONNECT_TIMEOUT_MILLIS, connectionTimeout.map(_.toMillis.toInt))
+ .handler(initializer)
+ localAddress.foreach(bootstrap.localAddress)
+
+ val channelFuture = bootstrap.connect()
+ val ch = channelFuture.channel()
+ Scope.addFinalizer {
+ NettyFutureExecutor.executed {
+ channelFuture.cancel(true)
+ ch.close()
+ }.when(ch.isOpen).ignoreLogged
+ } *> NettyFutureExecutor.executed(channelFuture).as(ch)
+ }
}
- _ <- NettyFutureExecutor.executed(channelFuture)
- ch <- ZIO.attempt(channelFuture.channel())
- _ <- Scope.addFinalizer(NettyFutureExecutor.executed(ch.close()).when(ch.isOpen).ignoreLogged)
} yield ch
}
+ private def collectFirstSuccess[R, E, A, B](
+ as: NonEmptyChunk[A],
+ )(f: A => ZIO[R, E, B])(implicit trace: Trace): ZIO[R, E, B] = {
+ ZIO.suspendSucceed {
+ val it = as.iterator
+ def loop: ZIO[R, E, B] = f(it.next()).catchAll(e => if (it.hasNext) loop else ZIO.fail(e))
+ loop
+ }
+ }
+
/**
* Refreshes the idle timeout handler on the channel pipeline.
* @return
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyRequestEncoder.scala b/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyRequestEncoder.scala
index fc1466fe7f..f20a8d90fd 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyRequestEncoder.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/client/NettyRequestEncoder.scala
@@ -16,29 +16,24 @@
package zio.http.netty.client
+import zio.Unsafe
import zio.stacktracer.TracingImplicits.disableAutoTrace
-import zio.{Task, Trace, ZIO}
-import zio.http.Request
-import zio.http.netty._
import zio.http.netty.model.Conversions
+import zio.http.{Body, Request}
import io.netty.buffer.Unpooled
import io.netty.handler.codec.http.{DefaultFullHttpRequest, DefaultHttpRequest, HttpHeaderNames, HttpRequest}
+
private[zio] object NettyRequestEncoder {
/**
* Converts a ZIO HTTP request to a Netty HTTP request.
*/
- def encode(req: Request)(implicit trace: Trace): Task[HttpRequest] = {
+ def encode(req: Request): HttpRequest = {
val method = Conversions.methodToNetty(req.method)
val jVersion = Conversions.versionToNetty(req.version)
-
- def replaceEmptyPathWithSlash(url: zio.http.URL) = if (url.path.isEmpty) url.addLeadingSlash else url
-
- // As per the spec, the path should contain only the relative path.
- // Host and port information should be in the headers.
- val path = replaceEmptyPathWithSlash(req.url).relative.addLeadingSlash.encode
+ val path = Conversions.urlToNetty(req.url)
val headers = Conversions.headersToNetty(req.allHeaders)
@@ -48,19 +43,17 @@ private[zio] object NettyRequestEncoder {
case _ =>
}
- if (req.body.isComplete) {
- req.body.asArray.map { array =>
+ req.body match {
+ case body: Body.UnsafeBytes =>
+ val array = body.unsafeAsArray(Unsafe.unsafe)
val content = Unpooled.wrappedBuffer(array)
- val writerIndex = content.writerIndex()
- headers.set(HttpHeaderNames.CONTENT_LENGTH, writerIndex.toString)
+ headers.set(HttpHeaderNames.CONTENT_LENGTH, array.length.toString)
val jReq = new DefaultFullHttpRequest(jVersion, method, path, content)
jReq.headers().set(headers)
jReq
- }
- } else {
- ZIO.attempt {
+ case _ =>
req.body.knownContentLength match {
case Some(length) =>
headers.set(HttpHeaderNames.CONTENT_LENGTH, length.toString)
@@ -68,7 +61,7 @@ private[zio] object NettyRequestEncoder {
headers.set(HttpHeaderNames.TRANSFER_ENCODING, "chunked")
}
new DefaultHttpRequest(jVersion, method, path, headers)
- }
}
}
+
}
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala b/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala
index 9658e437ef..76ef429a4c 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/model/Conversions.scala
@@ -64,6 +64,13 @@ private[netty] object Conversions {
case Headers.Empty => new DefaultHttpHeaders()
}
+ def urlToNetty(url: URL): String = {
+ // As per the spec, the path should contain only the relative path.
+ // Host and port information should be in the headers.
+ val url0 = if (url.path.isEmpty) url.addLeadingSlash else url
+ url0.relative.addLeadingSlash.encode
+ }
+
private def nettyHeadersIterator(headers: HttpHeaders): Iterator[Header] =
new AbstractIterator[Header] {
private val nettyIterator = headers.iteratorCharSequence()
diff --git a/zio-http/jvm/src/main/scala/zio/http/netty/server/ServerInboundHandler.scala b/zio-http/jvm/src/main/scala/zio/http/netty/server/ServerInboundHandler.scala
index 65e425cd68..4df974e941 100644
--- a/zio-http/jvm/src/main/scala/zio/http/netty/server/ServerInboundHandler.scala
+++ b/zio-http/jvm/src/main/scala/zio/http/netty/server/ServerInboundHandler.scala
@@ -20,7 +20,6 @@ import java.io.IOException
import java.net.InetSocketAddress
import java.util.concurrent.atomic.LongAdder
-import scala.annotation.tailrec
import scala.util.control.NonFatal
import zio._
@@ -38,6 +37,7 @@ import io.netty.handler.codec.http._
import io.netty.handler.codec.http.websocketx.{WebSocketFrame => JWebSocketFrame, WebSocketServerProtocolHandler}
import io.netty.handler.ssl.SslHandler
import io.netty.handler.timeout.ReadTimeoutException
+import io.netty.util.ReferenceCountUtil
@Sharable
private[zio] final case class ServerInboundHandler(
@@ -52,7 +52,7 @@ private[zio] final case class ServerInboundHandler(
private var runtime: NettyRuntime = _
val inFlightRequests: LongAdder = new LongAdder()
- val readClientCert = config.sslConfig.exists(_.includeClientCert)
+ private val readClientCert = config.sslConfig.exists(_.includeClientCert)
def refreshApp(): Unit = {
val pair = appRef.get()
@@ -67,36 +67,31 @@ private[zio] final case class ServerInboundHandler(
}
}
+ private val releaseRequest = () => inFlightRequests.decrement()
+
override def channelRead0(ctx: ChannelHandlerContext, msg: HttpObject): Unit = {
msg match {
case jReq: HttpRequest =>
- val req = makeZioRequest(ctx, jReq)
inFlightRequests.increment()
-
- val releaseRequest = { () =>
- inFlightRequests.decrement()
- jReq match {
- case jFullReq: FullHttpRequest =>
- if (jFullReq.refCnt() > 0) {
- val _ = jFullReq.release()
- }
- case _ =>
- }
- ()
- }
-
ensureHasApp()
- val exit =
+
+ try {
if (jReq.decoderResult().isFailure) {
val throwable = jReq.decoderResult().cause()
- Exit.succeed(Response.fromThrowable(throwable))
- } else
- app(req)
- if (!attemptImmediateWrite(ctx, exit)) {
- writeResponse(ctx, runtime, exit, jReq)(releaseRequest)
- } else {
- releaseRequest()
+ attemptFastWrite(ctx, Response.fromThrowable(throwable))
+ releaseRequest()
+ } else {
+ val req = makeZioRequest(ctx, jReq)
+ val exit = app(req)
+ if (attemptImmediateWrite(ctx, exit)) {
+ releaseRequest()
+ } else {
+ writeResponse(ctx, runtime, exit, req)(releaseRequest)
+ }
+ }
+ } finally {
+ ReferenceCountUtil.safeRelease(jReq)
}
case msg: HttpContent =>
@@ -167,11 +162,11 @@ private[zio] final case class ServerInboundHandler(
ctx: ChannelHandlerContext,
runtime: NettyRuntime,
response: Response,
- jRequest: HttpRequest,
+ request: Request,
): Task[Option[Task[Unit]]] = {
response.body match {
case WebsocketBody(socketApp) if response.status == Status.SwitchingProtocols =>
- upgradeToWebSocket(ctx, jRequest, socketApp, runtime).as(None)
+ upgradeToWebSocket(ctx, request, socketApp, runtime).as(None)
case _ =>
ZIO.attempt {
val jResponse = NettyResponseEncoder.encode(response)
@@ -207,16 +202,6 @@ private[zio] final case class ServerInboundHandler(
}
}
- private def isResponseCompressible(req: HttpRequest): Boolean = {
- config.responseCompression match {
- case None => false
- case Some(cfg) =>
- val headers = req.headers()
- val headerName = Header.AcceptEncoding.name
- cfg.options.exists(opt => headers.containsValue(headerName, opt.name, true))
- }
- }
-
private def makeZioRequest(ctx: ChannelHandlerContext, nettyReq: HttpRequest): Request = {
val nettyHttpVersion = nettyReq.protocolVersion()
val protocolVersion = nettyHttpVersion match {
@@ -273,50 +258,46 @@ private[zio] final case class ServerInboundHandler(
*/
private def upgradeToWebSocket(
ctx: ChannelHandlerContext,
- jReq: HttpRequest,
+ request: Request,
webSocketApp: WebSocketApp[Any],
runtime: NettyRuntime,
): Task[Unit] = {
- jReq match {
- case jReq: FullHttpRequest =>
- Queue
- .unbounded[WebSocketChannelEvent]
- .tap { queue =>
- ZIO.suspend {
- val nettyChannel = NettyChannel.make[JWebSocketFrame](ctx.channel())
- val webSocketChannel = WebSocketChannel.make(nettyChannel, queue)
- webSocketApp.handler.runZIO(webSocketChannel).ignoreLogged.forkDaemon
- }
- }
- .flatMap { queue =>
- ZIO.attempt {
- ctx
- .channel()
- .pipeline()
- .addLast(
- new WebSocketServerProtocolHandler(
- NettySocketProtocol
- .serverBuilder(webSocketApp.customConfig.getOrElse(config.webSocketConfig))
- .build(),
- ),
- )
- .addLast(Names.WebSocketHandler, new WebSocketAppHandler(runtime, queue, None))
-
- val retained = jReq.retainedDuplicate()
- val _ = ctx.channel().eventLoop().submit { () => ctx.fireChannelRead(retained) }
- }
- }
- case jReq: HttpRequest =>
+ Queue
+ .unbounded[WebSocketChannelEvent]
+ .tap { queue =>
ZIO.suspend {
- val fullRequest = new DefaultFullHttpRequest(jReq.protocolVersion(), jReq.method(), jReq.uri())
- fullRequest.headers().setAll(jReq.headers())
- upgradeToWebSocket(ctx: ChannelHandlerContext, fullRequest, webSocketApp, runtime)
+ val nettyChannel = NettyChannel.make[JWebSocketFrame](ctx.channel())
+ val webSocketChannel = WebSocketChannel.make(nettyChannel, queue)
+ webSocketApp.handler.runZIO(webSocketChannel).ignoreLogged.forkDaemon
}
- }
+ }
+ .flatMap { queue =>
+ ZIO.attempt {
+ ctx
+ .channel()
+ .pipeline()
+ .addLast(
+ new WebSocketServerProtocolHandler(
+ NettySocketProtocol
+ .serverBuilder(webSocketApp.customConfig.getOrElse(config.webSocketConfig))
+ .build(),
+ ),
+ )
+ .addLast(Names.WebSocketHandler, new WebSocketAppHandler(runtime, queue, None))
+
+ val jReq = new DefaultFullHttpRequest(
+ Conversions.versionToNetty(request.version),
+ Conversions.methodToNetty(request.method),
+ Conversions.urlToNetty(request.url),
+ )
+ jReq.headers().setAll(Conversions.headersToNetty(request.allHeaders))
+ ctx.channel().eventLoop().submit { () => ctx.fireChannelRead(jReq) }: Unit
+ }
+ }
}
- private def writeNotFound(ctx: ChannelHandlerContext, jReq: HttpRequest): Unit = {
- val response = Response.notFound(jReq.uri())
+ private def writeNotFound(ctx: ChannelHandlerContext, req: Request): Unit = {
+ val response = Response.notFound(req.url.encode)
attemptFastWrite(ctx, response): Unit
}
@@ -324,7 +305,7 @@ private[zio] final case class ServerInboundHandler(
ctx: ChannelHandlerContext,
runtime: NettyRuntime,
exit: ZIO[Any, Response, Response],
- jReq: HttpRequest,
+ req: Request,
)(ensured: () => Unit): Unit = {
runtime.run(ctx, ensured) {
exit.sandbox.catchAll { error =>
@@ -343,12 +324,12 @@ private[zio] final case class ServerInboundHandler(
if (response ne null) {
val done = attemptFastWrite(ctx, response)
if (!done)
- attemptFullWrite(ctx, runtime, response, jReq)
+ attemptFullWrite(ctx, runtime, response, req)
else
ZIO.none
} else {
if (ctx.channel().isOpen) {
- writeNotFound(ctx, jReq)
+ writeNotFound(ctx, req)
}
ZIO.none
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/ClientConnectionSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ClientConnectionSpec.scala
new file mode 100644
index 0000000000..30f418adae
--- /dev/null
+++ b/zio-http/jvm/src/test/scala/zio/http/ClientConnectionSpec.scala
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2021 - 2023 Sporta Technologies PVT LTD & the ZIO HTTP contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package zio.http
+
+import java.net.{InetAddress, UnknownHostException}
+
+import zio._
+import zio.test.Assertion._
+import zio.test.TestAspect._
+import zio.test._
+
+import zio.http.internal.{DynamicServer, HttpRunnableSpec, serverTestLayer}
+import zio.http.netty.NettyConfig
+
+object ClientConnectionSpec extends HttpRunnableSpec {
+
+ private def tests =
+ List(
+ test("tries a different IP address when the connection fails") {
+ val app = Handler.ok.toRoutes.deploy(Request()).map(_.status)
+ assertZIO(app)(equalTo(Status.Ok))
+ } @@ nonFlaky(10),
+ )
+
+ override def spec = {
+ suite("ClientConnectionSpec") {
+ serve.as(tests)
+ }.provideSome[DynamicServer & Server & Client](Scope.default)
+ .provideShared(
+ DynamicServer.live,
+ serverTestLayer,
+ Client.live,
+ ZLayer.succeed(Client.Config.default.connectionTimeout(10.millis)),
+ ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
+ ZLayer.succeed(TestResolver),
+ ) @@ sequential @@ withLiveClock @@ withLiveRandom
+ }
+
+ private object TestResolver extends DnsResolver {
+ import scala.collection.compat._
+
+ override def resolve(host: String)(implicit trace: Trace): ZIO[Any, UnknownHostException, Chunk[InetAddress]] = {
+ ZIO.succeed {
+ Chunk.from((0 to 10).map { i =>
+ InetAddress.getByAddress(Array(127, 0, 0, i.toByte))
+ })
+ }
+ }
+ }
+}
diff --git a/zio-http/jvm/src/test/scala/zio/http/ClientSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ClientSpec.scala
index cdc23e1ece..5315a16abd 100644
--- a/zio-http/jvm/src/test/scala/zio/http/ClientSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/ClientSpec.scala
@@ -22,7 +22,7 @@ import scala.annotation.nowarn
import zio._
import zio.test.Assertion._
-import zio.test.TestAspect.{sequential, timeout, withLiveClock}
+import zio.test.TestAspect.{flaky, sequential, timeout, withLiveClock}
import zio.test._
import zio.stream.ZStream
@@ -100,6 +100,26 @@ object ClientSpec extends HttpRunnableSpec {
val effect = app.deployAndRequest(requestCode).runZIO(())
assertZIO(effect)(isTrue)
},
+ test("request can be timed out manually while awaiting connection") {
+ // Unfortunately we have to use a real URL here, as we can't really simulate a long connection time
+ val url = URL.decode("https://test.com").toOption.get
+ val resp = ZIO.scoped(ZClient.request(Request.get(url))).timeout(500.millis)
+ assertZIO(resp)(isNone)
+ } @@ timeout(5.seconds) @@ flaky(5),
+ test("authorization header without scheme") {
+ val app =
+ Handler
+ .fromFunction[Request] { req =>
+ req.headers.get(Header.Authorization) match {
+ case Some(h) => Response.text(h.renderedValue)
+ case None => Response.unauthorized("missing auth")
+ }
+ }
+ .toRoutes
+ val responseContent =
+ app.deploy(Request(headers = Headers(Header.Authorization.Unparsed("", "my-token")))).flatMap(_.body.asString)
+ assertZIO(responseContent)(equalTo("my-token"))
+ } @@ timeout(5.seconds),
)
override def spec = {
diff --git a/zio-http/jvm/src/test/scala/zio/http/ClientStreamingSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ClientStreamingSpec.scala
index f18338092d..e354b29614 100644
--- a/zio-http/jvm/src/test/scala/zio/http/ClientStreamingSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/ClientStreamingSpec.scala
@@ -208,7 +208,7 @@ object ClientStreamingSpec extends HttpRunnableSpec {
port <- server(streamingServer)
client <- ZIO.service[Client]
result <- check(Gen.int(1, N)) { chunkSize =>
- (for {
+ for {
bytes <- Random.nextBytes(N)
form = Form(
Chunk(
@@ -233,7 +233,7 @@ object ClientStreamingSpec extends HttpRunnableSpec {
collected.map.contains("file"),
collected.map.contains("foo"),
collected.get("file").get.asInstanceOf[FormField.Binary].data == bytes,
- )).tapErrorCause(cause => ZIO.debug(cause.prettyPrint))
+ )
}
} yield result
} @@ samples(20) @@ TestAspect.ifEnvNotSet("CI"),
diff --git a/zio-http/jvm/src/test/scala/zio/http/ContentTypeSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ContentTypeSpec.scala
index c9fc132d6e..7e40a9228c 100644
--- a/zio-http/jvm/src/test/scala/zio/http/ContentTypeSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/ContentTypeSpec.scala
@@ -18,7 +18,7 @@ package zio.http
import zio._
import zio.test.Assertion.{equalTo, isNone, isSome}
-import zio.test.TestAspect.withLiveClock
+import zio.test.TestAspect.{sequential, withLiveClock}
import zio.test._
import zio.http.internal.{DynamicServer, HttpRunnableSpec, serverTestLayer}
@@ -34,7 +34,9 @@ object ContentTypeSpec extends HttpRunnableSpec {
test("js") {
val res =
Handler.fromResource("TestFile3.js").sandbox.toRoutes.deploy(Request()).map(_.header(Header.ContentType))
- assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.application.`javascript`))))
+ assertZIO(res)(
+ isSome(equalTo(Header.ContentType(MediaType.text.`javascript`, charset = Some(Charsets.Utf8)))),
+ )
},
test("no extension") {
val res = Handler.fromResource("TestFile4").sandbox.toRoutes.deploy(Request()).map(_.header(Header.ContentType))
@@ -43,12 +45,12 @@ object ContentTypeSpec extends HttpRunnableSpec {
test("css") {
val res =
Handler.fromResource("TestFile5.css").sandbox.toRoutes.deploy(Request()).map(_.header(Header.ContentType))
- assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.text.`css`))))
+ assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.text.`css`, charset = Some(Charsets.Utf8)))))
},
test("mp3") {
val res =
Handler.fromResource("TestFile6.mp3").sandbox.toRoutes.deploy(Request()).map(_.header(Header.ContentType))
- assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.audio.`mpeg`))))
+ assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.audio.`mp3`))))
},
test("unidentified extension") {
val res =
@@ -74,6 +76,8 @@ object ContentTypeSpec extends HttpRunnableSpec {
override def spec = {
suite("Content-type") {
serve.as(List(contentSpec))
- }.provideShared(DynamicServer.live, serverTestLayer, Client.default, Scope.default) @@ withLiveClock
+ }
+ .provideSome[DynamicServer & Server & Client](Scope.default)
+ .provideShared(DynamicServer.live, serverTestLayer, Client.default) @@ withLiveClock @@ sequential
}
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/DualSSLSpec.scala b/zio-http/jvm/src/test/scala/zio/http/DualSSLSpec.scala
index 18cf609579..8087f86c69 100644
--- a/zio-http/jvm/src/test/scala/zio/http/DualSSLSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/DualSSLSpec.scala
@@ -50,7 +50,7 @@ object DualSSLSpec extends ZIOHttpSpec {
includeClientCert = true,
)
- val config = Server.Config.default.port(8073).ssl(sslConfigWithTrustedClient)
+ val config = Server.Config.default.port(8073).ssl(sslConfigWithTrustedClient).logWarningOnFatalError(false)
val payload = Gen.alphaNumericStringBounded(10000, 20000)
diff --git a/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala b/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala
index 9e1b0117fc..65897ad0d5 100644
--- a/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala
@@ -86,7 +86,7 @@ object FormSpec extends ZIOHttpSpec {
form2 == form,
)
},
- test("encoding with custom paramaters [charset]") {
+ test("encoding with custom parameters [charset]") {
val form = Form(
FormField.textField(
@@ -144,6 +144,30 @@ object FormSpec extends ZIOHttpSpec {
}
},
+ test("decoding no lf at the end") {
+ val body = Chunk.fromArray(
+ s"""|--(((AaB03x)))${CR}
+ |Content-Disposition: form-data; name="hocon-data"${CR}
+ |Content-Type: text/plain${CR}
+ |${CR}
+ |foos: []${CR}
+ |--(((AaB03x)))${CR}
+ |Content-Disposition: form-data; name="json-data"${CR}
+ |Content-Type: text/plain${CR}
+ |${CR}
+ |{ "bars": [] }${CR}
+ |--(((AaB03x)))--""".stripMargin.getBytes(),
+ )
+
+ val form = Form(
+ FormField.textField("hocon-data", "foos: []", MediaType.text.`plain`),
+ FormField.textField("json-data", """{ "bars": [] }""", MediaType.text.`plain`),
+ )
+
+ Form
+ .fromMultipartBytes(body)
+ .map(form2 => assertTrue(form2 == form))
+ },
)
val multiFormStreamingSuite: Spec[Any, Throwable] =
@@ -271,6 +295,33 @@ object FormSpec extends ZIOHttpSpec {
collected.get("file").get.asInstanceOf[FormField.Binary].data == bytes,
)
},
+ test("StreamingForm dynamically resizes") {
+ val N = 1000
+ val expected = Chunk.fromArray(Array.fill(N)(scala.util.Random.nextInt()).map(_.toByte))
+ val form =
+ Form(
+ Chunk(
+ FormField.binaryField(
+ name = "identifier",
+ data = Chunk(10.toByte),
+ mediaType = MediaType.application.`octet-stream`,
+ ),
+ FormField.StreamingBinary(
+ name = "blob",
+ data = ZStream.fromChunk(expected),
+ contentType = MediaType.application.`octet-stream`,
+ ),
+ ),
+ )
+ val boundary = Boundary("X-INSOMNIA-BOUNDARY")
+ for {
+ formBytes <- form.multipartBytes(boundary).runCollect
+ formByteStream = ZStream.fromChunk(formBytes)
+ streamingForm = StreamingForm(formByteStream, boundary, 16)
+ out <- streamingForm.collectAll
+ res = out.get("blob").get.asInstanceOf[FormField.Binary].data
+ } yield assertTrue(res == expected)
+ } @@ timeout(3.seconds),
test("decoding random form") {
check(Gen.chunkOfBounded(2, 8)(formField)) { fields =>
for {
@@ -311,6 +362,30 @@ object FormSpec extends ZIOHttpSpec {
)
}
} @@ samples(10),
+ test("output stream maintains the same chunk structure as the input stream") {
+ val form = Form(
+ Chunk(
+ FormField.StreamingBinary(
+ name = "blob",
+ data = ZStream.fromChunk(Chunk(1, 2).map(_.toByte)) ++
+ ZStream.fromChunk(Chunk(3).map(_.toByte)),
+ contentType = MediaType.application.`octet-stream`,
+ ),
+ ),
+ )
+ val boundary = Boundary("X-INSOMNIA-BOUNDARY")
+ val formByteStream = form.multipartBytes(boundary)
+ val streamingForm = StreamingForm(formByteStream, boundary)
+ val expected = Chunk(Chunk[Byte](1, 2), Chunk[Byte](3))
+ streamingForm.fields.flatMap {
+ case sb: FormField.StreamingBinary => sb.data
+ case _ => ZStream.empty
+ }
+ .mapChunks(Chunk.single)
+ .filter(_.nonEmpty)
+ .runCollect
+ .map { c => assertTrue(c == expected) }
+ },
) @@ sequential
def spec =
diff --git a/zio-http/jvm/src/test/scala/zio/http/KeepAliveSpec.scala b/zio-http/jvm/src/test/scala/zio/http/KeepAliveSpec.scala
index b8f50f4047..ab825669c5 100644
--- a/zio-http/jvm/src/test/scala/zio/http/KeepAliveSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/KeepAliveSpec.scala
@@ -16,7 +16,7 @@
package zio.http
-import zio.Scope
+import zio._
import zio.test.Assertion.{equalTo, isNone, isSome}
import zio.test.TestAspect.{sequential, withLiveClock}
import zio.test.{Spec, assert}
@@ -66,7 +66,9 @@ object KeepAliveSpec extends HttpRunnableSpec {
override def spec: Spec[Any, Throwable] = {
suite("KeepAliveSpec") {
keepAliveSpec
- }.provide(DynamicServer.live, serverTestLayer, Client.default, Scope.default) @@ withLiveClock @@ sequential
+ }
+ .provideSome[DynamicServer & Server & Client](Scope.default)
+ .provide(DynamicServer.live, serverTestLayer, Client.default) @@ withLiveClock @@ sequential
}
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/MultipartMixedSpec.scala b/zio-http/jvm/src/test/scala/zio/http/MultipartMixedSpec.scala
index 6192a7c028..8a6a4a97c9 100644
--- a/zio-http/jvm/src/test/scala/zio/http/MultipartMixedSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/MultipartMixedSpec.scala
@@ -210,7 +210,7 @@ object MultipartMixedSpec extends ZIOHttpSpec {
test("property") {
check(gens.genTestCase) { testCase =>
- zio.Console.printLine(testCase) *> testCase.runTests
+ testCase.runTests
}
} @@ TestAspect.shrinks(0)
@@ -248,8 +248,8 @@ object MultipartMixedSpec extends ZIOHttpSpec {
gens.breaker.fixed(512),
)
- val innerTests = inner.runTests.map(_.label("inner")).debug("inner")
- val outerTests = outer.runTests.map(_.label("outer")).debug("outer")
+ val innerTests = inner.runTests.map(_.label("inner"))
+ val outerTests = outer.runTests.map(_.label("outer"))
val nestedTests = {
val expectedNested = Nested.Multi(
@@ -262,7 +262,6 @@ object MultipartMixedSpec extends ZIOHttpSpec {
outer.partsToNested.map { collected =>
zio.test.assert(collected)(Assertion.equalTo(expectedNested)).label("nestedTests")
}
- .debug("nestedTests")
}
(innerTests <*> outerTests <*> nestedTests).map { case (i, o, n) =>
@@ -308,8 +307,8 @@ object MultipartMixedSpec extends ZIOHttpSpec {
gens.breaker.fixed(512),
)
- val innerTests = inner.runTests.map(_.label("inner")).debug("inner")
- val outerTests = outer.runTests.map(_.label("outer")).debug("outer")
+ val innerTests = inner.runTests.map(_.label("inner"))
+ val outerTests = outer.runTests.map(_.label("outer"))
val nestedTests = {
val expectedNested = Nested.Multi(
@@ -322,7 +321,6 @@ object MultipartMixedSpec extends ZIOHttpSpec {
outer.partsToNested.map { collected =>
zio.test.assert(collected)(Assertion.equalTo(expectedNested)).label("nestedTests")
}
- .debug("nestedTests")
}
(innerTests <*> outerTests <*> nestedTests).map { case (i, o, n) =>
@@ -364,8 +362,8 @@ object MultipartMixedSpec extends ZIOHttpSpec {
gens.breaker.fixed(512),
)
- val innerTests = inner.runTests.map(_.label("inner")).debug("inner")
- val outerTests = outer.runTests.map(_.label("outer")).debug("outer")
+ val innerTests = inner.runTests.map(_.label("inner"))
+ val outerTests = outer.runTests.map(_.label("outer"))
val nestedTests = {
val expectedNested = Nested.Multi(
@@ -379,7 +377,6 @@ object MultipartMixedSpec extends ZIOHttpSpec {
outer.partsToNested.map { collected =>
zio.test.assert(collected)(Assertion.equalTo(expectedNested)).label("nestedTests")
}
- .debug("nestedTests")
}
(innerTests <*> outerTests <*> nestedTests).map { case (i, o, n) =>
diff --git a/zio-http/jvm/src/test/scala/zio/http/RequestStreamingServerSpec.scala b/zio-http/jvm/src/test/scala/zio/http/RequestStreamingServerSpec.scala
index 69647acb2a..0a97d09f50 100644
--- a/zio-http/jvm/src/test/scala/zio/http/RequestStreamingServerSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/RequestStreamingServerSpec.scala
@@ -78,16 +78,14 @@ object RequestStreamingServerSpec extends HttpRunnableSpec {
val host = req.headers.get(Header.Host).get
val newRequest =
req.copy(url = req.url.path("/2").host(host.hostAddress).port(host.port.getOrElse(80)))
- ZIO.debug(s"#1: got response, forwarding") *>
- ZIO.serviceWithZIO[Client] { client =>
- client.request(newRequest)
- }
+ ZIO.serviceWithZIO[Client] { client =>
+ client.request(newRequest)
+ }
},
Method.POST / "2" -> handler { (req: Request) =>
- ZIO.debug("#2: got response, collecting") *>
- req.body.asChunk.map { body =>
- Response.text(body.length.toString)
- }
+ req.body.asChunk.map { body =>
+ Response.text(body.length.toString)
+ }
},
).sandbox
val sizes = Chunk(0, 8192, 1024 * 1024)
diff --git a/zio-http/jvm/src/test/scala/zio/http/ResponseCompressionSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ResponseCompressionSpec.scala
index c03957ebbe..5223b33c45 100644
--- a/zio-http/jvm/src/test/scala/zio/http/ResponseCompressionSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/ResponseCompressionSpec.scala
@@ -88,10 +88,11 @@ object ResponseCompressionSpec extends ZIOHttpSpec {
server <- ZIO.service[Server]
client <- ZIO.service[Client]
_ <- server.install(app)
+ port <- server.port
response <- client.request(
Request(
method = Method.GET,
- url = URL(Path.root / "text", kind = URL.Location.Absolute(Scheme.HTTP, "localhost", Some(server.port))),
+ url = URL(Path.root / "text", kind = URL.Location.Absolute(Scheme.HTTP, "localhost", Some(port))),
)
.addHeader(Header.AcceptEncoding(Header.AcceptEncoding.GZip(), Header.AcceptEncoding.Deflate())),
)
@@ -110,10 +111,11 @@ object ResponseCompressionSpec extends ZIOHttpSpec {
server <- ZIO.service[Server]
client <- ZIO.service[Client]
_ <- server.install(app)
+ port <- server.port
response <- client.request(
Request(
method = Method.GET,
- url = URL(Path.root / "file", kind = URL.Location.Absolute(Scheme.HTTP, "localhost", Some(server.port))),
+ url = URL(Path.root / "file", kind = URL.Location.Absolute(Scheme.HTTP, "localhost", Some(port))),
)
.addHeader(Header.AcceptEncoding(Header.AcceptEncoding.GZip(), Header.AcceptEncoding.Deflate())),
)
@@ -134,10 +136,11 @@ object ResponseCompressionSpec extends ZIOHttpSpec {
server <- ZIO.service[Server]
client <- ZIO.service[Client]
_ <- server.install(app)
+ port <- server.port
response <- client.request(
Request(
method = Method.GET,
- url = URL(Path.root / endpoint, kind = URL.Location.Absolute(Scheme.HTTP, "localhost", Some(server.port))),
+ url = URL(Path.root / endpoint, kind = URL.Location.Absolute(Scheme.HTTP, "localhost", Some(port))),
)
.addHeader(Header.AcceptEncoding(Header.AcceptEncoding.GZip(), Header.AcceptEncoding.Deflate())),
)
diff --git a/zio-http/jvm/src/test/scala/zio/http/RoutesSpec.scala b/zio-http/jvm/src/test/scala/zio/http/RoutesSpec.scala
index c6ca58d121..30cc386bf1 100644
--- a/zio-http/jvm/src/test/scala/zio/http/RoutesSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/RoutesSpec.scala
@@ -18,6 +18,8 @@ package zio.http
import zio.test._
+import zio.http.codec.PathCodec
+
object RoutesSpec extends ZIOHttpSpec {
def extractStatus(response: Response): Status = response.status
@@ -47,5 +49,64 @@ object RoutesSpec extends ZIOHttpSpec {
result <- app.runZIO(Request(body = body))
} yield assertTrue(result.body == body)
},
+ test("routes with different path parameter arities should all be handled") {
+ val one = Method.GET / string("first") -> Handler.ok
+ val getone = Request.get("/1")
+
+ val two = Method.GET / string("prefix") / string("second") -> Handler.internalServerError
+ val gettwo = Request.get("/2/two")
+
+ val onetwo = Routes(one, two)
+ val twoone = Routes(two, one)
+
+ for {
+ onetwoone <- onetwo.runZIO(getone)
+ onetwotwo <- onetwo.runZIO(gettwo)
+ twooneone <- twoone.runZIO(getone)
+ twoonetwo <- twoone.runZIO(gettwo)
+ } yield {
+ assertTrue(
+ extractStatus(onetwoone) == Status.Ok,
+ extractStatus(onetwotwo) == Status.InternalServerError,
+ extractStatus(twooneone) == Status.Ok,
+ extractStatus(twoonetwo) == Status.InternalServerError,
+ )
+ }
+ },
+ test("nest routes") {
+ import PathCodec._
+ import zio._
+ case object IdFormatError
+ val routes = literal("to") / Routes(
+ Method.GET / "other" -> handler(ZIO.fail(IdFormatError)),
+ Method.GET / "do" / string("id") -> handler { (id: String, _: Request) => Response.text(s"GET /to/do/${id}") },
+ ).handleError { case IdFormatError =>
+ Response.badRequest
+ }
+ routes
+ .run(
+ path = Path.root / "to" / "do" / "123",
+ )
+ .map(response => assertTrue(response.status == Status.Ok))
+ },
+ test("alternative path segments") {
+ val app = Routes(
+ Method.GET / anyOf("foo", "bar", "baz") -> Handler.ok,
+ )
+
+ for {
+ foo <- app.runZIO(Request.get("/foo"))
+ bar <- app.runZIO(Request.get("/bar"))
+ baz <- app.runZIO(Request.get("/baz"))
+ box <- app.runZIO(Request.get("/box"))
+ } yield {
+ assertTrue(
+ extractStatus(foo) == Status.Ok,
+ extractStatus(bar) == Status.Ok,
+ extractStatus(baz) == Status.Ok,
+ extractStatus(box) == Status.NotFound,
+ )
+ }
+ },
)
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/SSLSpec.scala b/zio-http/jvm/src/test/scala/zio/http/SSLSpec.scala
index 16cb728ef8..80bc8bbd53 100644
--- a/zio-http/jvm/src/test/scala/zio/http/SSLSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/SSLSpec.scala
@@ -27,7 +27,7 @@ import zio.http.netty.client.NettyClientDriver
object SSLSpec extends ZIOHttpSpec {
val sslConfig = SSLConfig.fromResource("server.crt", "server.key")
- val config = Server.Config.default.port(8073).ssl(sslConfig)
+ val config = Server.Config.default.port(8073).ssl(sslConfig).logWarningOnFatalError(false)
val clientSSL1 = ClientSSLConfig.FromCertResource("server.crt")
val clientSSL2 = ClientSSLConfig.FromCertResource("ss2.crt.pem")
diff --git a/zio-http/jvm/src/test/scala/zio/http/ServerStartSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ServerStartSpec.scala
index d2806b0d12..000266f5a0 100644
--- a/zio-http/jvm/src/test/scala/zio/http/ServerStartSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/ServerStartSpec.scala
@@ -51,6 +51,15 @@ object ServerStartSpec extends HttpRunnableSpec {
ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
)
},
+ test("application can shutdown if server is not started") {
+ ZIO
+ .succeed(assertCompletes)
+ .provide(
+ Server.customized.unit,
+ ZLayer.succeed(Server.Config.default.port(8089)),
+ ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
+ )
+ },
)
override def spec: Spec[TestEnvironment with Scope, Any] = serverStartSpec @@ withLiveClock
diff --git a/zio-http/jvm/src/test/scala/zio/http/StaticFileRoutesSpec.scala b/zio-http/jvm/src/test/scala/zio/http/StaticFileRoutesSpec.scala
new file mode 100644
index 0000000000..16da294208
--- /dev/null
+++ b/zio-http/jvm/src/test/scala/zio/http/StaticFileRoutesSpec.scala
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2021 - 2023 Sporta Technologies PVT LTD & the ZIO HTTP contributors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package zio.http
+
+import java.nio.file.{Files, Path => NIOPath}
+
+import zio._
+import zio.test.Assertion._
+import zio.test.TestAspect.{sequential, withLiveClock}
+import zio.test.{TestAspect, assert, assertZIO}
+
+import zio.http.internal.{DynamicServer, HttpRunnableSpec, serverTestLayer}
+
+object StaticFileRoutesSpec extends HttpRunnableSpec {
+
+ private val createTempFile = ZIO.attempt(Files.createTempFile("", ".jpg"))
+ private def deleteTempFile(tempPath: NIOPath) = ZIO.attempt(Files.deleteIfExists(tempPath)).ignore
+ private val createAndDeleteTempFile = createTempFile.flatMap(f => deleteTempFile(f).as(f))
+
+ override def spec = suite("StaticFileRoutesSpec") {
+ serve.as(List(staticSpec))
+ }
+ .provideSome[DynamicServer & Server & Client](Scope.default)
+ .provideShared(DynamicServer.live, serverTestLayer, Client.default) @@ withLiveClock @@ sequential
+
+ private def staticSpec = suite("Static RandomAccessFile Server")(
+ suite("serveDirectory")(
+ test("serve an existing file") {
+ ZIO.acquireRelease(createTempFile)(deleteTempFile) flatMap { tempPath =>
+ val tempDir = tempPath.getParent.toFile
+ val tempFile = tempPath.getFileName.toString
+ val path = Path.empty / "assets"
+ val routes = Routes.serveDirectory(path, tempDir).sandbox.deploy
+ val request = Request.get(URL(path / tempFile))
+ routes(request)
+ } map { response =>
+ assert(response.status)(equalTo(Status.Ok)) &&
+ assert(response.header(Header.ContentLength))(isSome(equalTo(Header.ContentLength(0L)))) &&
+ assert(response.header(Header.ContentType))(isSome(equalTo(Header.ContentType(MediaType.image.`jpeg`))))
+ }
+ },
+ test("serve a non-existing file") {
+ createAndDeleteTempFile.flatMap { tempPath =>
+ val tempDir = tempPath.getParent.toFile
+ val tempFile = tempPath.getFileName.toString
+ val path = Path.empty / "assets"
+ val routes = Routes.serveDirectory(path, tempDir).sandbox.deploy
+ val request = Request.get(URL(path / tempFile))
+ assertZIO(routes(request).map(_.status))(equalTo(Status.NotFound))
+ }
+ },
+ ),
+ suite("serveResources")(
+ test("serve an existing resource") {
+ val existing = "TestFile1.txt"
+ val path = Path.root / "assets"
+ val routes = Routes.serveResources(path, "TestStatic").sandbox.deploy
+ val request = Request.get(URL(path / existing))
+ for {
+ response <- routes(request)
+ body <- response.body.asString
+ } yield {
+ assert(response.status)(equalTo(Status.Ok)) &&
+ assert(response.header(Header.ContentLength))(isSome(equalTo(Header.ContentLength(50L)))) &&
+ assert(body)(equalTo("This file is added for testing Static File Server.")) &&
+ assert(response.header(Header.ContentType))(
+ isSome(equalTo(Header.ContentType(MediaType.text.plain, charset = Some(Charsets.Utf8)))),
+ )
+ }
+ },
+ test("serve a non-existing resource") {
+ val nonExisting = "Nothing.txt"
+ val path = Path.root / "assets"
+ val routes = Routes.serveResources(path, "TestStatic").sandbox.deploy
+ val request = Request.get(URL(path / nonExisting))
+ assertZIO(routes(request).map(_.status))(equalTo(Status.NotFound))
+ },
+ test("insecurely serve a resource from \".\"") {
+ val existing = "TestFile.txt"
+ val path = Path.root / "assets"
+ val routes = Routes.serveResources(path, ".")
+ val request = Request.get(URL(path / existing))
+ assertZIO(routes(request).map(_.status))(equalTo(Status.InternalServerError))
+ },
+ ),
+ ) @@ TestAspect.blocking
+}
diff --git a/zio-http/jvm/src/test/scala/zio/http/StaticFileServerSpec.scala b/zio-http/jvm/src/test/scala/zio/http/StaticFileServerSpec.scala
index 89807edf02..cddbd2525a 100644
--- a/zio-http/jvm/src/test/scala/zio/http/StaticFileServerSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/StaticFileServerSpec.scala
@@ -20,7 +20,7 @@ import java.io.File
import zio._
import zio.test.Assertion._
-import zio.test.TestAspect.{unix, withLiveClock}
+import zio.test.TestAspect.{mac, os, sequential, unix, withLiveClock}
import zio.test.assertZIO
import zio.http.internal.{DynamicServer, HttpRunnableSpec, serverTestLayer}
@@ -33,20 +33,22 @@ object StaticFileServerSpec extends HttpRunnableSpec {
private val testArchivePath = getClass.getResource("/TestArchive.jar").getPath
private val resourceOk =
Handler
- .fromResourceWithURL(new java.net.URI(s"jar:file:$testArchivePath!/TestFile.txt").toURL)
+ .fromResourceWithURL(new java.net.URI(s"jar:file:$testArchivePath!/TestFile.txt").toURL, Charsets.Utf8)
.sandbox
.toRoutes
.deploy
private val resourceNotFound =
Handler
- .fromResourceWithURL(new java.net.URI(s"jar:file:$testArchivePath!/NonExistent.txt").toURL)
+ .fromResourceWithURL(new java.net.URI(s"jar:file:$testArchivePath!/NonExistent.txt").toURL, Charsets.Utf8)
.sandbox
.toRoutes
.deploy
override def spec = suite("StaticFileServerSpec") {
serve.as(List(staticSpec))
- }.provideShared(DynamicServer.live, serverTestLayer, Client.default, Scope.default) @@ withLiveClock
+ }
+ .provideSome[DynamicServer & Server & Client](Scope.default)
+ .provideShared(DynamicServer.live, serverTestLayer, Client.default) @@ withLiveClock @@ sequential
private def staticSpec = suite("Static RandomAccessFile Server")(
suite("fromResource")(
@@ -64,8 +66,8 @@ object StaticFileServerSpec extends HttpRunnableSpec {
assertZIO(res)(equalTo("foo\nbar"))
},
test("should have content-type") {
- val res = fileOk.run().debug("fileOk").map(_.header(Header.ContentType))
- assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.text.plain))))
+ val res = fileOk.run().map(_.header(Header.ContentType))
+ assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.text.plain, charset = Some(Charsets.Utf8)))))
},
test("should respond with empty if file not found") {
val res = fileNotFound.run().map(_.status)
@@ -88,7 +90,7 @@ object StaticFileServerSpec extends HttpRunnableSpec {
val res = Handler.fromFile(tmpFile).sandbox.toRoutes.deploy.run().map(_.status)
assertZIO(res)(equalTo(Status.Forbidden))
}
- } @@ unix,
+ } @@ os(o => o.isUnix || o.isMac),
),
suite("invalid file")(
test("should respond with 500") {
@@ -116,10 +118,10 @@ object StaticFileServerSpec extends HttpRunnableSpec {
},
test("should have content-type") {
val res = resourceOk.run().map(_.header(Header.ContentType))
- assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.text.plain))))
+ assertZIO(res)(isSome(equalTo(Header.ContentType(MediaType.text.plain, charset = Some(Charsets.Utf8)))))
},
test("should respond with empty if not found") {
- val res = resourceNotFound.run().debug("not found").map(_.status)
+ val res = resourceNotFound.run().map(_.status)
assertZIO(res)(equalTo(Status.NotFound))
},
),
diff --git a/zio-http/jvm/src/test/scala/zio/http/WebSocketSpec.scala b/zio-http/jvm/src/test/scala/zio/http/WebSocketSpec.scala
index 197bce56ee..3ea000d991 100644
--- a/zio-http/jvm/src/test/scala/zio/http/WebSocketSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/WebSocketSpec.scala
@@ -23,196 +23,205 @@ import zio.test.{TestClock, assertCompletes, assertTrue, assertZIO, testClock}
import zio.http.ChannelEvent.UserEvent.HandshakeComplete
import zio.http.ChannelEvent.{Read, Unregistered, UserEvent, UserEventTriggered}
-import zio.http.internal.{DynamicServer, HttpRunnableSpec, serverTestLayer}
+import zio.http.internal.{DynamicServer, HttpRunnableSpec, serverTestLayer, testNettyServerConfig, testServerConfig}
object WebSocketSpec extends HttpRunnableSpec {
- private val websocketSpec = suite("WebsocketSpec")(
- test("channel events between client and server") {
- for {
- msg <- MessageCollector.make[WebSocketChannelEvent]
- url <- DynamicServer.wsURL
- id <- DynamicServer.deploy {
- Handler.webSocket { channel =>
+ private val websocketSpec =
+ List(
+ test("channel events between client and server") {
+ for {
+ msg <- MessageCollector.make[WebSocketChannelEvent]
+ url <- DynamicServer.wsURL
+ id <- DynamicServer.deploy {
+ Handler.webSocket { channel =>
+ channel.receiveAll {
+ case event @ Read(frame) => channel.send(Read(frame)) *> msg.add(event)
+ case event: Unregistered.type => msg.add(event, isDone = true)
+ case event => msg.add(event)
+ }
+ }.toRoutes
+ }
+
+ res <- ZIO.scoped {
+ Handler.webSocket { channel =>
+ channel.receiveAll {
+ case UserEventTriggered(HandshakeComplete) =>
+ channel.send(Read(WebSocketFrame.text("FOO")))
+ case Read(WebSocketFrame.Text("FOO")) =>
+ channel.send(Read(WebSocketFrame.text("BAR")))
+ case Read(WebSocketFrame.Text("BAR")) =>
+ channel.shutdown
+ case _ =>
+ ZIO.unit
+ }
+ }.connect(url, Headers(DynamicServer.APP_ID, id)) *> {
+ for {
+ events <- msg.await
+ expected = List(
+ UserEventTriggered(HandshakeComplete),
+ Read(WebSocketFrame.text("FOO")),
+ Read(WebSocketFrame.text("BAR")),
+ Unregistered,
+ )
+ } yield assertTrue(events == expected)
+ }
+ }
+ } yield res
+ },
+ test("on close interruptibility") {
+ for {
+
+ // Maintain a flag to check if the close handler was completed
+ isSet <- Promise.make[Nothing, Unit]
+ isStarted <- Promise.make[Nothing, Unit]
+ clock <- testClock
+
+ // Setup websocket server
+
+ serverHttp = Handler.webSocket { channel =>
channel.receiveAll {
- case event @ Read(frame) => channel.send(Read(frame)) *> msg.add(event)
- case event: Unregistered.type => msg.add(event, isDone = true)
- case event => msg.add(event)
+ case Unregistered =>
+ isStarted.succeed(()) <&> isSet.succeed(()).delay(5 seconds).withClock(clock)
+ case _ =>
+ ZIO.unit
}
- }.toRoutes
- }
+ }.toRoutes.deployWS
- res <- ZIO.scoped {
- Handler.webSocket { channel =>
+ // Setup Client
+ // Client closes the connection after 1 second
+ clientSocket = Handler.webSocket { channel =>
channel.receiveAll {
case UserEventTriggered(HandshakeComplete) =>
- channel.send(Read(WebSocketFrame.text("FOO")))
- case Read(WebSocketFrame.Text("FOO")) =>
- channel.send(Read(WebSocketFrame.text("BAR")))
- case Read(WebSocketFrame.Text("BAR")) =>
- channel.shutdown
+ channel.send(Read(WebSocketFrame.close(1000))).delay(1 second).withClock(clock)
case _ =>
ZIO.unit
}
- }.connect(url, Headers(DynamicServer.APP_ID, id)) *> {
- for {
- events <- msg.await
- expected = List(
- UserEventTriggered(HandshakeComplete),
- Read(WebSocketFrame.text("FOO")),
- Read(WebSocketFrame.text("BAR")),
- Unregistered,
- )
- } yield assertTrue(events == expected)
}
- }
- } yield res
- },
- test("on close interruptibility") {
- for {
-
- // Maintain a flag to check if the close handler was completed
- isSet <- Promise.make[Nothing, Unit]
- isStarted <- Promise.make[Nothing, Unit]
- clock <- testClock
-
- // Setup websocket server
-
- serverHttp = Handler.webSocket { channel =>
- channel.receiveAll {
- case Unregistered =>
- isStarted.succeed(()) <&> isSet.succeed(()).delay(5 seconds).withClock(clock)
- case _ =>
- ZIO.unit
- }
- }.toRoutes.deployWS
-
- // Setup Client
- // Client closes the connection after 1 second
- clientSocket = Handler.webSocket { channel =>
- channel.receiveAll {
- case UserEventTriggered(HandshakeComplete) =>
- channel.send(Read(WebSocketFrame.close(1000))).delay(1 second).withClock(clock)
- case _ =>
- ZIO.unit
+
+ // Deploy the server and send it a socket request
+ _ <- serverHttp.runZIO(clientSocket)
+
+ // Wait for the close handler to complete
+ _ <- TestClock.adjust(2 seconds)
+ _ <- isStarted.await
+ _ <- TestClock.adjust(5 seconds)
+ _ <- isSet.await
+
+ // Check if the close handler was completed
+ } yield assertCompletes
+ } @@ nonFlaky(25),
+ test("Multiple websocket upgrades") {
+ val app =
+ Handler.webSocket(channel => channel.send(ChannelEvent.Read(WebSocketFrame.text("BAR")))).toRoutes.deployWS
+ val codes = ZIO
+ .foreach(1 to 1024)(_ => app.runZIO(WebSocketApp.unit).map(_.status))
+ .map(_.count(_ == Status.SwitchingProtocols))
+
+ assertZIO(codes)(equalTo(1024))
+ } @@ ignore,
+ test("channel events between client and server when the provided URL is HTTP") {
+ for {
+ msg <- MessageCollector.make[WebSocketChannelEvent]
+ url <- DynamicServer.httpURL
+ id <- DynamicServer.deploy {
+ Handler.webSocket { channel =>
+ channel.receiveAll {
+ case event @ Read(frame) => channel.send(Read(frame)) *> msg.add(event)
+ case event: Unregistered.type => msg.add(event, isDone = true)
+ case event => msg.add(event)
+ }
+ }.toRoutes
}
- }
-
- // Deploy the server and send it a socket request
- _ <- serverHttp.runZIO(clientSocket)
-
- // Wait for the close handler to complete
- _ <- TestClock.adjust(2 seconds)
- _ <- isStarted.await
- _ <- TestClock.adjust(5 seconds)
- _ <- isSet.await
-
- // Check if the close handler was completed
- } yield assertCompletes
- } @@ nonFlaky,
- test("Multiple websocket upgrades") {
- val app =
- Handler.webSocket(channel => channel.send(ChannelEvent.Read(WebSocketFrame.text("BAR")))).toRoutes.deployWS
- val codes = ZIO
- .foreach(1 to 1024)(_ => app.runZIO(WebSocketApp.unit).map(_.status))
- .map(_.count(_ == Status.SwitchingProtocols))
-
- assertZIO(codes)(equalTo(1024))
- } @@ ignore,
- test("channel events between client and server when the provided URL is HTTP") {
- for {
- msg <- MessageCollector.make[WebSocketChannelEvent]
- url <- DynamicServer.httpURL
- id <- DynamicServer.deploy {
- Handler.webSocket { channel =>
- channel.receiveAll {
- case event @ Read(frame) => channel.send(Read(frame)) *> msg.add(event)
- case event: Unregistered.type => msg.add(event, isDone = true)
- case event => msg.add(event)
- }
- }.toRoutes
- }
- res <- ZIO.scoped {
- Handler.webSocket { channel =>
- channel.receiveAll {
- case UserEventTriggered(HandshakeComplete) =>
- channel.send(Read(WebSocketFrame.text("FOO")))
- case Read(WebSocketFrame.Text("FOO")) =>
- channel.send(Read(WebSocketFrame.text("BAR")))
- case Read(WebSocketFrame.Text("BAR")) =>
- channel.shutdown
- case _ =>
- ZIO.unit
+ res <- ZIO.scoped {
+ Handler.webSocket { channel =>
+ channel.receiveAll {
+ case UserEventTriggered(HandshakeComplete) =>
+ channel.send(Read(WebSocketFrame.text("FOO")))
+ case Read(WebSocketFrame.Text("FOO")) =>
+ channel.send(Read(WebSocketFrame.text("BAR")))
+ case Read(WebSocketFrame.Text("BAR")) =>
+ channel.shutdown
+ case _ =>
+ ZIO.unit
+ }
+ }.connect(url, Headers(DynamicServer.APP_ID, id)) *> {
+ for {
+ events <- msg.await
+ expected = List(
+ UserEventTriggered(HandshakeComplete),
+ Read(WebSocketFrame.text("FOO")),
+ Read(WebSocketFrame.text("BAR")),
+ Unregistered,
+ )
+ } yield assertTrue(events == expected)
}
- }.connect(url, Headers(DynamicServer.APP_ID, id)) *> {
- for {
- events <- msg.await
- expected = List(
- UserEventTriggered(HandshakeComplete),
- Read(WebSocketFrame.text("FOO")),
- Read(WebSocketFrame.text("BAR")),
- Unregistered,
- )
- } yield assertTrue(events == expected)
}
- }
- } yield res
- },
- test("Client connection is interruptible") {
- for {
- url <- DynamicServer.httpURL
- id <- DynamicServer.deploy {
- Handler.webSocket { channel =>
- ZIO.debug("receiveAll") *>
- channel.receiveAll { evt =>
- println(evt)
- evt match {
- case ChannelEvent.UserEventTriggered(UserEvent.HandshakeComplete) =>
- ZIO.debug("registered") *>
- ZIO
- .foreachDiscard(1 to 100) { idx =>
- ZIO.debug(s"sending $idx") *>
- channel.send(Read(WebSocketFrame.text(idx.toString))) *> ZIO.sleep(100.millis)
- }
- .forkScoped
- case _ => ZIO.unit
- }
+ } yield res
+ },
+ test("Client connection is interruptible") {
+ for {
+ url <- DynamicServer.httpURL
+ id <- DynamicServer.deploy {
+ Handler.webSocket { channel =>
+ channel.receiveAll {
+ case ChannelEvent.UserEventTriggered(UserEvent.HandshakeComplete) =>
+ ZIO
+ .foreachDiscard(1 to 100) { idx =>
+ channel.send(Read(WebSocketFrame.text(idx.toString))) *> ZIO.sleep(100.millis)
+ }
+ .forkScoped
+ case _ => ZIO.unit
}
- }.toRoutes
- }
+ }.toRoutes
+ }
- queue1 <- Queue.unbounded[String]
- queue2 <- Queue.unbounded[String]
- _ <- ZIO.scoped {
- Handler.webSocket { channel =>
- channel.receiveAll {
- case Read(WebSocketFrame.Text(s)) =>
- println(s"read $s")
- queue1.offer(s)
- case _ =>
- ZIO.unit
- }.onInterrupt(ZIO.debug("ws interrupted"))
- }.connect(url, Headers(DynamicServer.APP_ID, id)) *>
- queue1.take
- .tap(s =>
- ZIO.debug(s"got $s") *>
- queue2.offer(s),
- )
- .repeatUntil(_ == "5")
- .timeout(1.second)
- .debug
- }
- result <- queue2.takeAll
- } yield assertTrue(result == Chunk("1", "2", "3", "4", "5"))
- },
- )
-
- override def spec = suite("Server") {
- serve.as(List(websocketSpec))
- }
- .provideShared(DynamicServer.live, serverTestLayer, Client.default, Scope.default) @@
- diagnose(30.seconds) @@ withLiveClock @@ sequential
+ queue1 <- Queue.unbounded[String]
+ queue2 <- Queue.unbounded[String]
+ _ <- ZIO.scoped {
+ Handler.webSocket { channel =>
+ channel.receiveAll {
+ case Read(WebSocketFrame.Text(s)) =>
+ queue1.offer(s)
+ case _ =>
+ ZIO.unit
+ }
+ }.connect(url, Headers(DynamicServer.APP_ID, id)) *>
+ queue1.take
+ .tap(s => queue2.offer(s))
+ .repeatUntil(_ == "5")
+ .timeout(1.second)
+ }
+ result <- queue2.takeAll
+ } yield assertTrue(result == Chunk("1", "2", "3", "4", "5"))
+ },
+ )
+
+ private val withStreamingEnabled =
+ suite("request streaming enabled")(
+ serve.as(websocketSpec),
+ )
+ .provideSome[DynamicServer & Server & Client](Scope.default)
+ .provideShared(
+ DynamicServer.live,
+ ZLayer.succeed(Server.Config.default.onAnyOpenPort.enableRequestStreaming),
+ testNettyServerConfig,
+ Server.customized,
+ Client.default,
+ ) @@ sequential
+
+ private val withStreamingDisabled =
+ suite("request streaming disabled")(
+ serve.as(websocketSpec),
+ )
+ .provideSome[DynamicServer & Server & Client](Scope.default)
+ .provideShared(DynamicServer.live, serverTestLayer, Client.default) @@ sequential
+
+ override def spec = suite("WebSocketSpec")(
+ withStreamingDisabled,
+ withStreamingEnabled,
+ ) @@ diagnose(30.seconds) @@ withLiveClock
final class MessageCollector[A](ref: Ref[List[A]], promise: Promise[Nothing, Unit]) {
def add(a: A, isDone: Boolean = false): UIO[Unit] = ref.update(_ :+ a) <* promise.succeed(()).when(isDone)
diff --git a/zio-http/jvm/src/test/scala/zio/http/ZIOHttpSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ZIOHttpSpec.scala
index 2a70d0bd10..29cace4900 100644
--- a/zio-http/jvm/src/test/scala/zio/http/ZIOHttpSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/ZIOHttpSpec.scala
@@ -5,5 +5,5 @@ import zio.test._
trait ZIOHttpSpec extends ZIOSpecDefault {
override def aspects: Chunk[TestAspectPoly] =
- Chunk(TestAspect.timeout(60.seconds), TestAspect.timed)
+ Chunk(TestAspect.timeout(60.seconds), TestAspect.timed, TestAspect.silentLogging, TestAspect.silent)
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/codec/PathCodecSpec.scala b/zio-http/jvm/src/test/scala/zio/http/codec/PathCodecSpec.scala
index 68216f7d82..6dfdba639b 100644
--- a/zio-http/jvm/src/test/scala/zio/http/codec/PathCodecSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/codec/PathCodecSpec.scala
@@ -24,6 +24,7 @@ import zio._
import zio.test._
import zio.http._
+import zio.http.codec.PathCodec.Segment
import zio.http.codec._
object PathCodecSpec extends ZIOHttpSpec {
@@ -115,6 +116,67 @@ object PathCodecSpec extends ZIOHttpSpec {
)
},
),
+ suite("decoding with sub-segment codecs")(
+ test("int") {
+ val codec = PathCodec.empty /
+ string("foo") /
+ "instances" /
+ int("a") ~ "_" ~ int("b") /
+ "bar" /
+ int("baz")
+
+ assertTrue(codec.decode(Path("/abc/instances/123_13/bar/42")) == Right(("abc", 123, 13, 42)))
+ },
+ test("uuid") {
+ val codec = PathCodec.empty /
+ string("foo") /
+ "foo" /
+ uuid("a") ~ "__" ~ int("b") /
+ "bar" /
+ int("baz")
+
+ val id = UUID.randomUUID()
+ val p = s"/abc/foo/${id}__13/bar/42"
+ assertTrue(codec.decode(Path(p)) == Right(("abc", id, 13, 42)))
+ },
+ test("string before literal") {
+ val codec = PathCodec.empty /
+ string("foo") /
+ "foo" /
+ string("a") ~ "__" ~ int("b") /
+ "bar" /
+ int("baz")
+ assertTrue(codec.decode(Path("/abc/foo/cba__13/bar/42")) == Right(("abc", "cba", 13, 42)))
+ },
+ test("string before int") {
+ val codec = PathCodec.empty /
+ string("foo") /
+ "foo" /
+ string("a") ~ int("b") /
+ "bar" /
+ int("baz")
+ assertTrue(codec.decode(Path("/abc/foo/cba13/bar/42")) == Right(("abc", "cba", 13, 42)))
+ },
+ test("string before long") {
+ val codec = PathCodec.empty /
+ string("foo") /
+ "foo" /
+ string("a") ~ long("b") /
+ "bar" /
+ int("baz")
+ assertTrue(codec.decode(Path("/abc/foo/cba133333333333/bar/42")) == Right(("abc", "cba", 133333333333L, 42)))
+ },
+ test("trailing literal") {
+ val codec = PathCodec.empty /
+ string("foo") /
+ "instances" /
+ int("a") ~ "what" /
+ "bar" /
+ int("baz")
+
+ assertTrue(codec.decode(Path("/abc/instances/123what/bar/42")) == Right(("abc", 123, 42)))
+ },
+ ),
suite("representation")(
test("empty") {
val codec = PathCodec.empty
@@ -149,6 +211,13 @@ object PathCodecSpec extends ZIOHttpSpec {
assertTrue(codec.render == "/users/{user-id}/posts/{post-id}")
},
+ test("/users/{first-name}_{last-name}") {
+ val codec =
+ PathCodec.empty / PathCodec.literal("users") /
+ string("first-name") ~ "_" ~ string("last-name")
+
+ assertTrue(codec.render == "/users/{first-name}_{last-name}")
+ },
test("transformed") {
val codec =
PathCodec.path("/users") /
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/AuthSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/AuthSpec.scala
index f697d5162c..739f211682 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/AuthSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/AuthSpec.scala
@@ -26,7 +26,9 @@ object AuthSpec extends ZIOSpecDefault {
test("Auth with context") {
val endpoint = Endpoint(Method.GET / "test").out[String](MediaType.text.`plain`)
val routes =
- Routes(endpoint.implement(handler((_: Unit) => ZIO.serviceWith[AuthContext](_.value)))) @@ basicAuthContext
+ Routes(
+ endpoint.implementHandler(handler((_: Unit) => ZIO.serviceWith[AuthContext](_.value))),
+ ) @@ basicAuthContext
val response = routes.run(
Request(
method = Method.GET,
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/BadRequestSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/BadRequestSpec.scala
index 009c6a56e3..aa0cc3999b 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/BadRequestSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/BadRequestSpec.scala
@@ -17,7 +17,7 @@ object BadRequestSpec extends ZIOSpecDefault {
val endpoint = Endpoint(Method.GET / "test")
.query(QueryCodec.queryInt("age"))
.out[Unit]
- val route = endpoint.implement(handler((_: Int) => ()))
+ val route = endpoint.implementHandler(handler((_: Int) => ()))
val request =
Request(method = Method.GET, url = url"/test?age=1&age=2").addHeader(Header.Accept(MediaType.text.`html`))
val expectedBody =
@@ -38,7 +38,7 @@ object BadRequestSpec extends ZIOSpecDefault {
val endpoint = Endpoint(Method.GET / "test")
.query(QueryCodec.queryInt("age"))
.out[Unit]
- val route = endpoint.implement(handler((_: Int) => ()))
+ val route = endpoint.implementHandler(handler((_: Int) => ()))
val request =
Request(method = Method.GET, url = url"/test?age=1&age=2")
.addHeader(Header.Accept(MediaType.application.json))
@@ -53,7 +53,7 @@ object BadRequestSpec extends ZIOSpecDefault {
val endpoint = Endpoint(Method.GET / "test")
.query(QueryCodec.queryInt("age"))
.out[Unit]
- val route = endpoint.implement(handler((_: Int) => ()))
+ val route = endpoint.implementHandler(handler((_: Int) => ()))
val request =
Request(method = Method.GET, url = url"/test?age=1&age=2")
.addHeader(Header.Accept(MediaType.application.`atf`))
@@ -69,7 +69,7 @@ object BadRequestSpec extends ZIOSpecDefault {
.query(QueryCodec.queryInt("age"))
.out[Unit]
.emptyErrorResponse
- val route = endpoint.implement(handler((_: Int) => ()))
+ val route = endpoint.implementHandler(handler((_: Int) => ()))
val request =
Request(method = Method.GET, url = url"/test?age=1&age=2")
.addHeader(Header.Accept(MediaType.application.`atf`))
@@ -83,7 +83,7 @@ object BadRequestSpec extends ZIOSpecDefault {
val endpoint = Endpoint(Method.GET / "test")
.query(QueryCodec.queryInt("age"))
.out[Unit]
- val route = endpoint.implement(handler((_: Int) => ()))
+ val route = endpoint.implementHandler(handler((_: Int) => ()))
val request =
Request(method = Method.GET, url = url"/test?age=1&age=2")
.addHeader(Header.Accept(MediaType.application.json))
@@ -99,7 +99,7 @@ object BadRequestSpec extends ZIOSpecDefault {
.query(QueryCodec.queryInt("age"))
.out[Unit]
.outCodecError(default)
- val route = endpoint.implement(handler((_: Int) => ()))
+ val route = endpoint.implementHandler(handler((_: Int) => ()))
val request =
Request(method = Method.GET, url = url"/test?age=1&age=2")
.addHeader(Header.Accept(MediaType.application.json))
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/CustomErrorSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/CustomErrorSpec.scala
index 0b59d3a610..b42382f1af 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/CustomErrorSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/CustomErrorSpec.scala
@@ -39,7 +39,7 @@ object CustomErrorSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.out[String]
.outError[String](Status.Custom(customCode))
- .implement {
+ .implementHandler {
Handler.fromFunctionZIO { userId =>
ZIO.fail(s"path(users, $userId)")
}
@@ -66,7 +66,7 @@ object CustomErrorSpec extends ZIOHttpSpec {
HttpCodec.error[TestError.UnexpectedError](Status.InternalServerError),
HttpCodec.error[TestError.InvalidUser](Status.NotFound),
)
- .implement {
+ .implementHandler {
Handler.fromFunctionZIO { userId =>
if (userId == myUserId) ZIO.fail(TestError.InvalidUser(userId))
else ZIO.fail(TestError.UnexpectedError("something went wrong"))
@@ -100,7 +100,7 @@ object CustomErrorSpec extends ZIOHttpSpec {
.in[User](Doc.p("User schema with id"))
.out[String]
.emptyErrorResponse
- .implement {
+ .implementHandler {
Handler.fromFunctionZIO { _ =>
ZIO.succeed("User ID is greater than 0")
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/MultipartSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/MultipartSpec.scala
index 128eb4685d..f3ad67df34 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/MultipartSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/MultipartSpec.scala
@@ -23,6 +23,8 @@ import zio.test._
import zio.stream.ZStream
+import zio.schema.{DeriveSchema, Schema}
+
import zio.http.Method._
import zio.http._
import zio.http.codec._
@@ -53,7 +55,7 @@ object MultipartSpec extends ZIOHttpSpec {
HttpCodec.content[Int]("height", MediaType.text.`plain`) ++
HttpCodec.content[ImageMetadata]("metadata"),
)
- .implement {
+ .implementHandler {
Handler.succeed(
(
ZStream.fromChunk(bytes),
@@ -109,7 +111,7 @@ object MultipartSpec extends ZIOHttpSpec {
HttpCodec.content[Int](MediaType.text.`plain`) ++
HttpCodec.content[ImageMetadata],
)
- .implement {
+ .implementHandler {
Handler.succeed(
(
ZStream.fromChunk(bytes),
@@ -156,7 +158,7 @@ object MultipartSpec extends ZIOHttpSpec {
.in[String]("title")
.in[ImageMetadata]("metadata", Doc.p("Image metadata with description and creation date and time"))
.out[(Long, String, ImageMetadata)]
- .implement {
+ .implementHandler {
Handler.fromFunctionZIO { case (stream, title, metadata) =>
stream.runCount.map(count => (count, title, metadata))
}
@@ -236,7 +238,7 @@ object MultipartSpec extends ZIOHttpSpec {
}
}
val route =
- endpoint.implement(Handler.identity[Any])
+ endpoint.implementHandler(Handler.identity[Any])
val form =
Form(
@@ -275,6 +277,37 @@ object MultipartSpec extends ZIOHttpSpec {
)
}
},
+ test("override default content type if set explicitly") {
+ import zio._
+ import zio.http._
+ import zio.http.codec._
+ import zio.http.endpoint.EndpointMiddleware.None
+ import zio.schema.DeriveSchema.gen
+ import zio.stream.ZStream
+
+ val endpoint: Endpoint[Int, Int, ZNothing, (Book, ZStream[Any, Nothing, Byte]), None] =
+ Endpoint(RoutePattern.GET / "books" / PathCodec.int("id"))
+ .outCodec(
+ HttpCodec.content[Book]("book", MediaType.application.`json`) ++
+ HttpCodec.binaryStream("file", MediaType.application.`octet-stream`) ++
+ HeaderCodec.contentType.expect(Header.ContentType(MediaType.multipart.`mixed`)),
+ )
+ for {
+ result <- (endpoint
+ .implementPurely(_ =>
+ (Book("John's Book", List("John Doe")), ZStream.from(Chunk.fromArray("the book file".getBytes))),
+ )
+ .toRoutes @@ Middleware.debug).run(path = Path.root / "books" / "123")
+ } yield assertTrue(
+ result.status == Status.Ok,
+ result.headers.getAll(Header.ContentType).map(_.mediaType) == Chunk(MediaType.multipart.`mixed`),
+ )
+ },
),
)
+
+ case class Book(title: String, authors: List[String])
+ object Book {
+ implicit val schema: Schema[Book] = DeriveSchema.gen[Book]
+ }
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/NotFoundSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/NotFoundSpec.scala
index 1594d5fb6b..79ed17e155 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/NotFoundSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/NotFoundSpec.scala
@@ -43,7 +43,7 @@ object NotFoundSpec extends ZIOHttpSpec {
Routes(
Endpoint(GET / "users" / int("userId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId)"
}
@@ -51,7 +51,7 @@ object NotFoundSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId") / "posts" / int("postId"))
.query(query("name"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, name) =>
s"path(users, $userId, posts, $postId) query(name=$name)"
}
@@ -68,7 +68,7 @@ object NotFoundSpec extends ZIOHttpSpec {
Routes(
Endpoint(GET / "users" / int("userId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId)"
}
@@ -76,7 +76,7 @@ object NotFoundSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId") / "posts" / int("postId"))
.query(query("name"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, name) =>
s"path(users, $userId, posts, $postId) query(name=$name)"
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/QueryParameterSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/QueryParameterSpec.scala
index 884fbb99bf..768de94dff 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/QueryParameterSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/QueryParameterSpec.scala
@@ -34,7 +34,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Routes(
Endpoint(GET / "users" / int("userId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId)"
}
@@ -42,7 +42,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId") / "posts" / int("postId"))
.query(query("name"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, name) =>
s"path(users, $userId, posts, $postId) query(name=$name)"
}
@@ -63,7 +63,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(query("details").optional)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, details) =>
s"path(users, $userId, $details)"
}
@@ -83,7 +83,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
.query(query("key").optional)
.query(query("value").optional)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, key, value) =>
s"path(users, $userId, $key, $value)"
}
@@ -103,7 +103,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("key"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, keys) =>
s"""path(users, $userId, ${keys.mkString(", ")})"""
}
@@ -132,7 +132,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("key").optional)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, keys) =>
s"""path(users, $userId, $keys)"""
}
@@ -162,7 +162,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("key") & queryAll("value"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, keys, values) =>
s"""path(users, $userId, $keys, $values)"""
}
@@ -187,7 +187,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("multi") & query("single"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, multi, single) =>
s"""path(users, $userId, $multi, $single)"""
}
@@ -208,7 +208,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("left") | queryAllBool("right"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, eitherOfParameters) =>
s"path(users, $userId, $eitherOfParameters)"
}
@@ -238,7 +238,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("left") | queryAll("right"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, queryParams) =>
s"path(users, $userId, $queryParams)"
}
@@ -267,7 +267,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.query(queryAll("left") | query("right"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, queryParams) =>
s"path(users, $userId, $queryParams)"
}
@@ -295,7 +295,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users")
.query(queryAllInt("ints"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case queryParams =>
s"path(users, $queryParams)"
}
@@ -313,7 +313,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users")
.query(queryAllInt("ints"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case queryParams =>
s"path(users, $queryParams)"
}
@@ -330,7 +330,7 @@ object QueryParameterSpec extends ZIOHttpSpec {
Endpoint(GET / "users")
.query(queryInt("ints"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case queryParams =>
s"path(users, $queryParams)"
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/RequestSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/RequestSpec.scala
index 12af7bba14..1973fcab9d 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/RequestSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/RequestSpec.scala
@@ -44,7 +44,7 @@ object RequestSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId"))
.header(HeaderCodec.name[java.util.UUID]("X-Correlation-ID"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, correlationId) =>
s"path(users, $userId) header(correlationId=$correlationId)"
}
@@ -52,7 +52,7 @@ object RequestSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId") / "posts" / int("postId"))
.header(HeaderCodec.name[java.util.UUID]("X-Correlation-ID"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, correlationId) =>
s"path(users, $userId, posts, $postId) header(correlationId=$correlationId)"
}
@@ -78,7 +78,7 @@ object RequestSpec extends ZIOHttpSpec {
.query(query("id"))
.out[Int](MediaType.text.`plain`)
val routes =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.succeed(id)
}
@@ -100,7 +100,7 @@ object RequestSpec extends ZIOHttpSpec {
.query(query("id"))
.out[Int](MediaType.text.`plain`)
val routes =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.succeed(id)
}
@@ -122,7 +122,7 @@ object RequestSpec extends ZIOHttpSpec {
.query(query("id"))
.out[Int](Status.NotFound)
val routes =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.succeed(id)
}
@@ -140,7 +140,7 @@ object RequestSpec extends ZIOHttpSpec {
Endpoint(GET / "posts")
.query(queryInt("id"))
.out[Int]
- val routes = endpoint.implement { Handler.succeed(id) }
+ val routes = endpoint.implementHandler { Handler.succeed(id) }
for {
response <- routes.toRoutes.runZIO(
Request.get(url"/posts?id=$notAnId").addHeader(Header.Accept(MediaType.application.`json`)),
@@ -159,7 +159,7 @@ object RequestSpec extends ZIOHttpSpec {
.header(HeaderCodec.name[java.util.UUID]("X-Correlation-ID"))
.out[Int]
val routes =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.succeed(id)
}
@@ -178,7 +178,7 @@ object RequestSpec extends ZIOHttpSpec {
.header(HeaderCodec.name[java.util.UUID]("X-Correlation-ID"))
.out[Int]
val routes =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.succeed(id)
}
@@ -195,7 +195,7 @@ object RequestSpec extends ZIOHttpSpec {
Routes(
Endpoint(GET / "users" / int("userId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId)"
}
@@ -204,7 +204,7 @@ object RequestSpec extends ZIOHttpSpec {
.query(query("name"))
.query(query("age"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, name, age) =>
s"path(users, $userId, posts, $postId) query(name=$name, age=$age)"
}
@@ -225,7 +225,7 @@ object RequestSpec extends ZIOHttpSpec {
Endpoint(GET / "users")
.query(queryInt("userId") | query("userId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
val value = userId.fold(_.toString, identity)
s"path(users) query(userId=$value)"
@@ -240,11 +240,11 @@ object RequestSpec extends ZIOHttpSpec {
test("broad api") {
check(Gen.int, Gen.int, Gen.int, Gen.int) { (userId, postId, commentId, replyId) =>
val broadUsers =
- Endpoint(GET / "users").out[String](Doc.p("Created user id")).implement {
+ Endpoint(GET / "users").out[String](Doc.p("Created user id")).implementHandler {
Handler.succeed("path(users)")
}
val broadUsersId =
- Endpoint(GET / "users" / int("userId")).out[String].implement {
+ Endpoint(GET / "users" / int("userId")).out[String].implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId)"
}
@@ -252,7 +252,7 @@ object RequestSpec extends ZIOHttpSpec {
val boardUsersPosts =
Endpoint(GET / "users" / int("userId") / "posts")
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId, posts)"
}
@@ -260,7 +260,7 @@ object RequestSpec extends ZIOHttpSpec {
val boardUsersPostsId =
Endpoint(GET / "users" / int("userId") / "posts" / int("postId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId) =>
s"path(users, $userId, posts, $postId)"
}
@@ -271,7 +271,7 @@ object RequestSpec extends ZIOHttpSpec {
"users" / int("userId") / "posts" / int("postId") / "comments",
)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId) =>
s"path(users, $userId, posts, $postId, comments)"
}
@@ -282,15 +282,15 @@ object RequestSpec extends ZIOHttpSpec {
"users" / int("userId") / "posts" / int("postId") / "comments" / int("commentId"),
)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, commentId) =>
s"path(users, $userId, posts, $postId, comments, $commentId)"
}
}
val broadPosts =
- Endpoint(GET / "posts").out[String].implement(Handler.succeed("path(posts)"))
+ Endpoint(GET / "posts").out[String].implementHandler(Handler.succeed("path(posts)"))
val broadPostsId =
- Endpoint(GET / "posts" / int("postId")).out[String].implement {
+ Endpoint(GET / "posts" / int("postId")).out[String].implementHandler {
Handler.fromFunction { postId =>
s"path(posts, $postId)"
}
@@ -298,7 +298,7 @@ object RequestSpec extends ZIOHttpSpec {
val boardPostsComments =
Endpoint(GET / "posts" / int("postId") / "comments")
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { postId =>
s"path(posts, $postId, comments)"
}
@@ -306,15 +306,15 @@ object RequestSpec extends ZIOHttpSpec {
val boardPostsCommentsId =
Endpoint(GET / "posts" / int("postId") / "comments" / int("commentId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (postId, commentId) =>
s"path(posts, $postId, comments, $commentId)"
}
}
val broadComments =
- Endpoint(GET / "comments").out[String].implement(Handler.succeed("path(comments)"))
+ Endpoint(GET / "comments").out[String].implementHandler(Handler.succeed("path(comments)"))
val broadCommentsId =
- Endpoint(GET / "comments" / int("commentId")).out[String].implement {
+ Endpoint(GET / "comments" / int("commentId")).out[String].implementHandler {
Handler.fromFunction { commentId =>
s"path(comments, $commentId)"
}
@@ -322,7 +322,7 @@ object RequestSpec extends ZIOHttpSpec {
val broadUsersComments =
Endpoint(GET / "users" / int("userId") / "comments")
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { userId =>
s"path(users, $userId, comments)"
}
@@ -330,7 +330,7 @@ object RequestSpec extends ZIOHttpSpec {
val broadUsersCommentsId =
Endpoint(GET / "users" / int("userId") / "comments" / int("commentId"))
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, commentId) =>
s"path(users, $userId, comments, $commentId)"
}
@@ -341,7 +341,7 @@ object RequestSpec extends ZIOHttpSpec {
"users" / int("userId") / "posts" / int("postId") / "comments" / int("commentId") / "replies",
)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, commentId) =>
s"path(users, $userId, posts, $postId, comments, $commentId, replies)"
}
@@ -353,7 +353,7 @@ object RequestSpec extends ZIOHttpSpec {
"replies" / int("replyId"),
)
.out[String]
- .implement {
+ .implementHandler {
Handler.fromFunction { case (userId, postId, commentId, replyId) =>
s"path(users, $userId, posts, $postId, comments, $commentId, replies, $replyId)"
}
@@ -411,7 +411,7 @@ object RequestSpec extends ZIOHttpSpec {
check(Gen.alphaNumericString, Gen.alphaNumericString) { (queryValue, headerValue) =>
val headerOrQuery = HeaderCodec.name[String]("X-Header") | QueryCodec.query("header")
val endpoint = Endpoint(GET / "test").out[String].inCodec(headerOrQuery)
- val routes = endpoint.implement(Handler.identity).toRoutes
+ val routes = endpoint.implementHandler(Handler.identity).toRoutes
val request = Request.get(
URL
.decode(s"/test?header=$queryValue")
@@ -446,7 +446,7 @@ object RequestSpec extends ZIOHttpSpec {
val headerOrQuery = HeaderCodec.name[String]("X-Header") | StatusCodec.status(Status.Created)
val endpoint = Endpoint(GET / "test").query(QueryCodec.queryBool("Created")).outCodec(headerOrQuery)
val routes =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.fromFunction { created =>
if (created) Right(()) else Left("not created")
}
@@ -485,7 +485,7 @@ object RequestSpec extends ZIOHttpSpec {
.in[NewPost](Doc.p("New post"))
.out[PostCreated](Status.Created, MediaType.application.`json`)
val routes =
- endpoint.implement(Handler.succeed(PostCreated(postId))).toRoutes
+ endpoint.implementHandler(Handler.succeed(PostCreated(postId))).toRoutes
val request =
Request
.post(
@@ -513,7 +513,7 @@ object RequestSpec extends ZIOHttpSpec {
.in[NewPost]
.out[Int]
val routes =
- endpoint.implement(Handler.succeed(postId)).toRoutes
+ endpoint.implementHandler(Handler.succeed(postId)).toRoutes
for {
response <- routes.runZIO(
@@ -532,7 +532,7 @@ object RequestSpec extends ZIOHttpSpec {
check(Gen.chunkOfBounded(1, 1024)(Gen.byte)) { bytes =>
val route = Endpoint(GET / "test-byte-stream")
.outStream[Byte](Doc.p("Test data"))
- .implement(Handler.succeed(ZStream.fromChunk(bytes).rechunk(16)))
+ .implementHandler(Handler.succeed(ZStream.fromChunk(bytes).rechunk(16)))
.toRoutes
for {
@@ -556,7 +556,7 @@ object RequestSpec extends ZIOHttpSpec {
check(Gen.chunkOfBounded(1, 1024)(Gen.byte)) { bytes =>
val route = Endpoint(GET / "test-byte-stream")
.outStream[Byte](Status.Ok, MediaType.image.png)
- .implement(Handler.succeed(ZStream.fromChunk(bytes).rechunk(16)))
+ .implementHandler(Handler.succeed(ZStream.fromChunk(bytes).rechunk(16)))
.toRoutes
for {
@@ -581,7 +581,7 @@ object RequestSpec extends ZIOHttpSpec {
val route = Endpoint(POST / "test-byte-stream")
.inStream[Byte]
.out[Long]
- .implement {
+ .implementHandler {
Handler.fromFunctionZIO { byteStream =>
byteStream.runCount
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/RoundtripSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/RoundtripSpec.scala
index d22d583cc1..aef2838f4c 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/RoundtripSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/RoundtripSpec.scala
@@ -42,9 +42,9 @@ object RoundtripSpec extends ZIOHttpSpec {
ZLayer.make[Server & Client & Scope](
Server.customized,
ZLayer.succeed(Server.Config.default.onAnyOpenPort.enableRequestStreaming),
- Client.customized.map(env => ZEnvironment(env.get @@ ZClientAspect.debug)),
+ Client.customized.map(env => ZEnvironment(env.get)),
ClientDriver.shared,
- NettyDriver.customized,
+ // NettyDriver.customized,
ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
ZLayer.succeed(ZClient.Config.default),
DnsResolver.default,
@@ -149,7 +149,7 @@ object RoundtripSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId") / "posts" / int("postId")).out[Post]
val usersPostHandler =
- usersPostAPI.implement {
+ usersPostAPI.implementHandler {
Handler.fromFunction { case (userId, postId) =>
Post(postId, "title", "body", userId)
}
@@ -169,7 +169,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.header(HeaderCodec.accept)
val usersPostHandler =
- usersPostAPI.implement {
+ usersPostAPI.implementHandler {
Handler.fromFunction { case (userId, postId, _) =>
Post(postId, "title", "body", userId)
}
@@ -190,7 +190,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.header(HeaderCodec.accept)
val usersPostHandler =
- usersPostAPI.implement {
+ usersPostAPI.implementHandler {
Handler.fromFunction { case (userId, postId, _) =>
Post(postId, "title", "body", userId)
}
@@ -212,7 +212,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.out[Post]
val handler =
- api.implement {
+ api.implementHandler {
Handler.fromFunction { case (id, userId, name, details) =>
Post(id, name.getOrElse("-"), details.getOrElse("-"), userId)
}
@@ -245,7 +245,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.out[String] ?? Doc.p("doc")
@nowarn("msg=dead code")
- val handler = api.implement {
+ val handler = api.implementHandler {
Handler.fromFunction { case (accountId, name, instanceName, args, env) =>
throw new RuntimeException("I can't code")
s"$accountId, $name, $instanceName, $args, $env"
@@ -268,7 +268,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.in[Post]
.out[String]
- val route = api.implement {
+ val route = api.implementHandler {
Handler.fromFunction { case (userId, post) =>
s"userId: $userId, post: $post"
}
@@ -283,7 +283,7 @@ object RoundtripSpec extends ZIOHttpSpec {
},
test("byte stream input") {
val api = Endpoint(PUT / "upload").inStream[Byte].out[Long]
- val route = api.implement {
+ val route = api.implementHandler {
Handler.fromFunctionZIO { bytes =>
bytes.runCount
}
@@ -300,7 +300,7 @@ object RoundtripSpec extends ZIOHttpSpec {
},
test("byte stream output") {
val api = Endpoint(GET / "download").query(QueryCodec.queryInt("count")).outStream[Byte]
- val route = api.implement {
+ val route = api.implementHandler {
Handler.fromFunctionZIO { count =>
Random.nextBytes(count).map(chunk => ZStream.fromChunk(chunk).rechunk(1024))
}
@@ -320,7 +320,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.in[Post]("post")
.out[String]
- val route = api.implement {
+ val route = api.implementHandler {
Handler.fromFunction { case (name, value, post) =>
s"name: $name, value: $value, post: $post"
}
@@ -337,7 +337,7 @@ object RoundtripSpec extends ZIOHttpSpec {
val api = Endpoint(POST / "test")
.outError[String](Status.Custom(999))
- val route = api.implement(Handler.fail("42"))
+ val route = api.implementHandler(Handler.fail("42"))
testEndpointError(
api,
@@ -346,91 +346,6 @@ object RoundtripSpec extends ZIOHttpSpec {
"42",
)
},
- test("middleware error returned") {
-
- val alwaysFailingMiddleware = EndpointMiddleware(
- authorization,
- HttpCodec.empty,
- HttpCodec.error[String](Status.Custom(900)),
- )
-
- val endpoint =
- Endpoint(GET / "users" / int("userId")).out[Int] @@ alwaysFailingMiddleware
-
- val endpointRoute =
- endpoint.implement(Handler.identity)
-
- val routes = endpointRoute.toRoutes
-
- val app = routes @@ alwaysFailingMiddleware
- .implement[Any, Unit](_ => ZIO.fail("FAIL"))(_ => ZIO.unit)
-
- for {
- port <- Server.install(app)
- executorLayer = ZLayer(ZIO.serviceWith[Client](makeExecutor(_, port, Authorization.Basic("user", "pass"))))
-
- out <- ZIO
- .serviceWithZIO[EndpointExecutor[alwaysFailingMiddleware.In]] { executor =>
- executor.apply(endpoint.apply(42))
- }
- .provideSome[Client & Scope](executorLayer)
- .flip
- } yield assert(out)(equalTo("FAIL"))
- },
- test("failed middleware deserialization") {
- val alwaysFailingMiddleware = EndpointMiddleware(
- authorization,
- HttpCodec.empty,
- HttpCodec.error[String](Status.Custom(900)),
- )
-
- val endpoint =
- Endpoint(GET / "users" / int("userId")).out[Int] @@ alwaysFailingMiddleware
-
- val alwaysFailingMiddlewareWithAnotherSignature = EndpointMiddleware(
- authorization,
- HttpCodec.empty,
- HttpCodec.error[Long](Status.Custom(900)),
- )
-
- val endpointWithAnotherSignature =
- Endpoint(GET / "users" / int("userId")).out[Int] @@ alwaysFailingMiddlewareWithAnotherSignature
-
- val endpointRoute =
- endpoint.implement(Handler.identity)
-
- val routes = endpointRoute.toRoutes
-
- val app = routes @@ alwaysFailingMiddleware.implement[Any, Unit](_ => ZIO.fail("FAIL"))(_ => ZIO.unit)
-
- for {
- port <- Server.install(app)
- executorLayer = ZLayer(ZIO.serviceWith[Client](makeExecutor(_, port, Authorization.Basic("user", "pass"))))
-
- cause <- ZIO
- .serviceWithZIO[EndpointExecutor[alwaysFailingMiddleware.In]] { executor =>
- executor.apply(endpointWithAnotherSignature.apply(42))
- }
- .provideSome[Client with Scope](executorLayer)
- .cause
- } yield assert(cause.prettyPrint)(
- containsString(
- "java.lang.IllegalStateException: Cannot deserialize using endpoint error codec",
- ),
- ) && assert(cause.prettyPrint)(
- containsString(
- "java.lang.IllegalStateException: Cannot deserialize using middleware error codec",
- ),
- ) && assert(cause.prettyPrint)(
- containsString(
- "Suppressed: java.lang.IllegalStateException: Trying to decode with Undefined codec.",
- ),
- ) && assert(cause.prettyPrint)(
- containsString(
- "Suppressed: zio.http.codec.HttpCodecError$MalformedBody: Malformed request body failed to decode: (expected a number, got F)",
- ),
- )
- },
test("Failed endpoint deserialization") {
val endpoint =
Endpoint(GET / "users" / int("userId")).out[Int].outError[Int](Status.Custom(999))
@@ -439,7 +354,7 @@ object RoundtripSpec extends ZIOHttpSpec {
Endpoint(GET / "users" / int("userId")).out[Int].outError[String](Status.Custom(999))
val endpointRoute =
- endpoint.implement {
+ endpoint.implementHandler {
Handler.fromFunctionZIO { id =>
ZIO.fail(id)
}
@@ -457,21 +372,9 @@ object RoundtripSpec extends ZIOHttpSpec {
}
.provideSome[Client with Scope](executorLayer)
.cause
- } yield assert(cause.prettyPrint)(
- containsString(
- "java.lang.IllegalStateException: Cannot deserialize using endpoint error codec",
- ),
- ) && assert(cause.prettyPrint)(
- containsString(
- "java.lang.IllegalStateException: Cannot deserialize using middleware error codec",
- ),
- ) && assert(cause.prettyPrint)(
- containsString(
- "Suppressed: java.lang.IllegalStateException: Trying to decode with Undefined codec.",
- ),
- ) && assert(cause.prettyPrint)(
- containsString(
- """Suppressed: zio.http.codec.HttpCodecError$MalformedBody: Malformed request body failed to decode: (expected '"' got '4')""",
+ } yield assertTrue(
+ cause.prettyPrint.contains(
+ """zio.http.codec.HttpCodecError$MalformedBody: Malformed request body failed to decode: (expected '"' got '4')""",
),
)
},
@@ -482,7 +385,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.inStream[Byte]("file")
.out[String]
- val route = api.implement {
+ val route = api.implementHandler {
Handler.fromFunctionZIO { case (name, value, file) =>
file.runCount.map { n =>
s"name: $name, value: $value, count: $n"
@@ -506,7 +409,7 @@ object RoundtripSpec extends ZIOHttpSpec {
.inStream[Byte]("file")
.out[String]
- val route = api.implement {
+ val route = api.implementHandler {
Handler.fromFunctionZIO { case (name, metadata, file) =>
file.runCount.map { n =>
s"name: $name, metadata: $metadata, count: $n"
@@ -555,7 +458,7 @@ object RoundtripSpec extends ZIOHttpSpec {
ZLayer.succeed(Server.Config.default.onAnyOpenPort.enableRequestStreaming),
Client.customized.map(env => ZEnvironment(env.get @@ clientDebugAspect)),
ClientDriver.shared,
- NettyDriver.customized,
+ // NettyDriver.customized,
ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
ZLayer.succeed(ZClient.Config.default),
DnsResolver.default,
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/OpenAPIGenSpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/OpenAPIGenSpec.scala
index 9b037371b2..26b26f642c 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/OpenAPIGenSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/OpenAPIGenSpec.scala
@@ -4,7 +4,7 @@ import zio.json.ast.Json
import zio.test._
import zio.{Scope, ZIO}
-import zio.schema.annotation.{caseName, discriminatorName, noDiscriminator, optionalField, transientField}
+import zio.schema.annotation._
import zio.schema.{DeriveSchema, Schema}
import zio.http.Method.{GET, POST}
@@ -113,6 +113,25 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
case class NestedThree(name: String) extends SimpleNestedSealedTrait
}
+ @description("A recursive structure")
+ case class Recursive(
+ nestedOption: Option[Recursive],
+ nestedList: List[Recursive],
+ nestedMap: Map[String, Recursive],
+ nestedSet: Set[Recursive],
+ nestedEither: Either[Recursive, Recursive],
+ nestedTuple: (Recursive, Recursive),
+ nestedOverAnother: NestedRecursive,
+ )
+ object Recursive {
+ implicit val schema: Schema[Recursive] = DeriveSchema.gen[Recursive]
+ }
+ case class NestedRecursive(next: Recursive)
+ object NestedRecursive {
+ implicit val schema: Schema[NestedRecursive] = DeriveSchema.gen[NestedRecursive]
+ }
+
+ @description("A simple payload")
case class Payload(content: String)
object Payload {
@@ -713,6 +732,7 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
.content[NotFoundError]
.examples("not found" -> NotFoundError("not found")),
)
+ .examplesOut("other" -> Right(NotFoundError("other")))
val generated = OpenAPIGen.fromEndpoints("Simple Endpoint", "1.0", endpoint)
val json = toJsonAst(generated)
@@ -726,24 +746,20 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "paths" : {
| "/static" : {
| "get" : {
- | "requestBody" :
- | {
+ | "requestBody" : {
| "content" : {
| "application/json" : {
- | "schema" :
- | {
+ | "schema" : {
| "$ref" : "#/components/schemas/SimpleInputBody"
| },
| "examples" : {
- | "john" :
- | {
+ | "john" : {
| "value" : {
| "name" : "John",
| "age" : 42
| }
| },
- | "jane" :
- | {
+ | "jane" : {
| "value" : {
| "name" : "Jane",
| "age" : 43
@@ -755,12 +771,10 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "required" : true
| },
| "responses" : {
- | "default" :
- | {
+ | "default" : {
| "content" : {
| "application/json" : {
- | "schema" :
- | {
+ | "schema" : {
| "anyOf" : [
| {
| "$ref" : "#/components/schemas/SimpleOutputBody"
@@ -772,22 +786,24 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "description" : ""
| },
| "examples" : {
- | "john" :
- | {
+ | "john" : {
| "value" : {
| "userName" : "John",
| "score" : 42
| }
| },
- | "jane" :
- | {
+ | "jane" : {
| "value" : {
| "userName" : "Jane",
| "score" : 43
| }
| },
- | "not found" :
- | {
+ | "other" : {
+ | "value" : {
+ | "message" : "other"
+ | }
+ | },
+ | "not found" : {
| "value" : {
| "message" : "not found"
| }
@@ -802,32 +818,25 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| },
| "components" : {
| "schemas" : {
- | "NotFoundError" :
- | {
- | "type" :
- | "object",
+ | "NotFoundError" : {
+ | "type" : "object",
| "properties" : {
| "message" : {
- | "type" :
- | "string"
+ | "type" : "string"
| }
| },
| "required" : [
| "message"
| ]
| },
- | "SimpleInputBody" :
- | {
- | "type" :
- | "object",
+ | "SimpleInputBody" : {
+ | "type" : "object",
| "properties" : {
| "name" : {
- | "type" :
- | "string"
+ | "type" : "string"
| },
| "age" : {
- | "type" :
- | "integer",
+ | "type" : "integer",
| "format" : "int32"
| }
| },
@@ -836,18 +845,14 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "age"
| ]
| },
- | "SimpleOutputBody" :
- | {
- | "type" :
- | "object",
+ | "SimpleOutputBody" : {
+ | "type" : "object",
| "properties" : {
| "userName" : {
- | "type" :
- | "string"
+ | "type" : "string"
| },
| "score" : {
- | "type" :
- | "integer",
+ | "type" : "integer",
| "format" : "int32"
| }
| },
@@ -2251,36 +2256,29 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "/root/{name}" : {
| "get" : {
| "parameters" : [
- |
- | {
+ | {
| "name" : "name",
| "in" : "path",
| "required" : true,
- | "schema" :
- | {
- | "type" :
- | "string"
+ | "schema" : {
+ | "type" : "string"
| },
| "examples" : {
- | "hi" :
- | {
+ | "hi" : {
| "value" : "name_value"
| }
| },
| "style" : "simple"
| }
| ],
- | "requestBody" :
- | {
+ | "requestBody" : {
| "content" : {
| "application/json" : {
- | "schema" :
- | {
+ | "schema" : {
| "$ref" : "#/components/schemas/Payload"
| },
| "examples" : {
- | "hi" :
- | {
+ | "hi" : {
| "value" : {
| "content" : "input"
| }
@@ -2291,14 +2289,11 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "required" : true
| },
| "responses" : {
- | "200" :
- | {
+ | "200" : {
| "content" : {
| "application/json" : {
- | "schema" :
- | {
- | "type" :
- | "string"
+ | "schema" : {
+ | "type" : "string"
| }
| }
| }
@@ -2309,19 +2304,17 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| },
| "components" : {
| "schemas" : {
- | "Payload" :
- | {
- | "type" :
- | "object",
+ | "Payload" : {
+ | "type" : "object",
| "properties" : {
| "content" : {
- | "type" :
- | "string"
+ | "type" : "string"
| }
| },
| "required" : [
| "content"
- | ]
+ | ],
+ | "description" : "A simple payload"
| }
| }
| }
@@ -2351,55 +2344,45 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "/root/{name}" : {
| "get" : {
| "parameters" : [
- |
- | {
+ | {
| "name" : "name",
| "in" : "path",
| "required" : true,
- | "schema" :
- | {
- | "type" :
- | "string"
+ | "schema" : {
+ | "type" : "string"
| },
| "examples" : {
- | "hi" :
- | {
+ | "hi" : {
| "value" : "name_value"
| },
- | "ho" :
- | {
+ | "ho" : {
| "value" : "name_value2"
| }
| },
| "style" : "simple"
| }
| ],
- | "requestBody" :
- | {
+ | "requestBody" : {
| "content" : {
| "application/json" : {
- | "schema" :
- | {
+ | "schema" : {
| "anyOf" : [
| {
| "$ref" : "#/components/schemas/Payload"
| },
| {
- | "type" :
- | "string"
+ | "type" : "string"
| }
| ],
| "description" : ""
| },
| "examples" : {
- | "hi" :
- | {
+ | "hi" : {
| "value" : {
| "content" : "input"
| }
| },
- | "ho" :
- | {
+ | "ho" : {
| "value" : "input"
| }
| }
@@ -2408,14 +2391,11 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "required" : true
| },
| "responses" : {
- | "200" :
- | {
+ | "200" : {
| "content" : {
| "application/json" : {
- | "schema" :
- | {
- | "type" :
- | "string"
+ | "schema" : {
+ | "type" : "string"
| }
| }
| }
@@ -2426,19 +2406,17 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| },
| "components" : {
| "schemas" : {
- | "Payload" :
- | {
- | "type" :
- | "object",
+ | "Payload" : {
+ | "type" : "object",
| "properties" : {
| "content" : {
- | "type" :
- | "string"
+ | "type" : "string"
| }
| },
| "required" : [
| "content"
- | ]
+ | ],
+ | "description" : "A simple payload"
| }
| }
| }
@@ -2468,6 +2446,132 @@ object OpenAPIGenSpec extends ZIOSpecDefault {
| "components" : {}
|}""".stripMargin))
},
+ test("Non content codecs are ignored when building multipart schema") {
+ // We only test there is no exception when building the schema
+ val endpoint =
+ Endpoint(RoutePattern.POST / "post")
+ .in[Int]("foo")
+ .in[Boolean]("bar")
+ .query(QueryCodec.query("q"))
+ .out[Unit]
+
+ SwaggerUI.routes("docs/openapi", OpenAPIGen.fromEndpoints(endpoint))
+ assertCompletes
+ },
+ test("Recursive schema") {
+ val endpoint = Endpoint(RoutePattern.POST / "folder")
+ .out[Recursive]
+ val openApi = OpenAPIGen.fromEndpoints(endpoint)
+ val json = toJsonAst(openApi)
+ val expectedJson =
+ """
+ |{
+ | "openapi" : "3.1.0",
+ | "info" : {
+ | "title" : "",
+ | "version" : ""
+ | },
+ | "paths" : {
+ | "/folder" : {
+ | "post" : {
+ | "responses" : {
+ | "200" :
+ | {
+ | "content" : {
+ | "application/json" : {
+ | "schema" :
+ | {
+ | "$ref" : "#/components/schemas/Recursive"
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ | }
+ | },
+ | "components" : {
+ | "schemas" : {
+ | "NestedRecursive" :
+ | {
+ | "type" :
+ | "object",
+ | "properties" : {
+ | "next" : {
+ | "$ref" : "#/components/schemas/Recursive"
+ | }
+ | },
+ | "required" : [
+ | "next"
+ | ]
+ | },
+ | "Recursive" :
+ | {
+ | "type" :
+ | "object",
+ | "properties" : {
+ | "nestedSet" : {
+ | "type" :
+ | "array",
+ | "items" : {
+ | "$ref" : "#/components/schemas/Recursive"
+ | }
+ | },
+ | "nestedEither" : {
+ | "oneOf" : [
+ | {
+ | "$ref" : "#/components/schemas/Recursive"
+ | },
+ | {
+ | "$ref" : "#/components/schemas/Recursive"
+ | }
+ | ]
+ | },
+ | "nestedTuple" : {
+ | "allOf" : [
+ | {
+ | "$ref" : "#/components/schemas/Recursive"
+ | },
+ | {
+ | "$ref" : "#/components/schemas/Recursive"
+ | }
+ | ]
+ | },
+ | "nestedOption" : {
+ | "$ref" : "#/components/schemas/Recursive"
+ | },
+ | "nestedList" : {
+ | "type" :
+ | "array",
+ | "items" : {
+ | "$ref" : "#/components/schemas/Recursive"
+ | }
+ | },
+ | "nestedOverAnother" : {
+ | "$ref" : "#/components/schemas/NestedRecursive"
+ | }
+ | },
+ | "additionalProperties" :
+ | {
+ | "$ref" : "#/components/schemas/Recursive"
+ | },
+ | "required" : [
+ | "nestedOption",
+ | "nestedList",
+ | "nestedMap",
+ | "nestedSet",
+ | "nestedEither",
+ | "nestedTuple",
+ | "nestedOverAnother"
+ | ],
+ | "description" : "A recursive structure"
+ | }
+ | }
+ | }
+ |}
+ |""".stripMargin
+ assertTrue(json == toJsonAst(expectedJson))
+ },
)
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/SwaggerUISpec.scala b/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/SwaggerUISpec.scala
index a7bfbb7f61..77f0edc009 100644
--- a/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/SwaggerUISpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/endpoint/openapi/SwaggerUISpec.scala
@@ -15,7 +15,7 @@ object SwaggerUISpec extends ZIOSpecDefault {
test("should return the swagger ui page") {
val getUser = Endpoint(Method.GET / "users" / int("userId")).out[Int]
- val getUserRoute = getUser.implement { Handler.fromFunction[Int] { id => id } }
+ val getUserRoute = getUser.implementHandler { Handler.fromFunction[Int] { id => id } }
val getUserPosts =
Endpoint(Method.GET / "users" / int("userId") / "posts" / int("postId"))
@@ -23,7 +23,7 @@ object SwaggerUISpec extends ZIOSpecDefault {
.out[List[String]]
val getUserPostsRoute =
- getUserPosts.implement[Any] {
+ getUserPosts.implementHandler[Any] {
Handler.fromFunctionZIO[(Int, Int, String)] { case (id1: Int, id2: Int, query: String) =>
ZIO.succeed(List(s"API2 RESULT parsed: users/$id1/posts/$id2?name=$query"))
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/headers/AuthorizationSpec.scala b/zio-http/jvm/src/test/scala/zio/http/headers/AuthorizationSpec.scala
index bc618ebb79..72d0a2292d 100644
--- a/zio-http/jvm/src/test/scala/zio/http/headers/AuthorizationSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/headers/AuthorizationSpec.scala
@@ -32,7 +32,7 @@ object AuthorizationSpec extends ZIOHttpSpec {
test("parsing of invalid Authorization values") {
assertTrue(
Authorization.parse("").isLeft,
- Authorization.parse("something").isLeft,
+ Authorization.parse("something").isRight,
)
},
test("parsing and encoding is symmetrical") {
diff --git a/zio-http/jvm/src/test/scala/zio/http/internal/DynamicServer.scala b/zio-http/jvm/src/test/scala/zio/http/internal/DynamicServer.scala
index 0f1d070b9a..62b2005bc6 100644
--- a/zio-http/jvm/src/test/scala/zio/http/internal/DynamicServer.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/internal/DynamicServer.scala
@@ -95,7 +95,7 @@ object DynamicServer {
def get(id: Id): UIO[Option[Routes[Any, Response]]] = ref.get.map(_.get(id))
- def port: ZIO[Any, Nothing, Int] = start.map(_.port)
+ def port: ZIO[Any, Nothing, Int] = start.flatMap(_.port)
def setStart(s: Server): UIO[Boolean] = pr.complete(ZIO.attempt(s).orDie)
diff --git a/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/AuthSpec.scala b/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/AuthSpec.scala
index 4b8179bf62..3242734c33 100644
--- a/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/AuthSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/AuthSpec.scala
@@ -119,11 +119,11 @@ object AuthSpec extends ZIOHttpSpec with HttpAppTestExtensions {
val app = secureRoutes
for {
s1 <- app.runZIO(Request.get(URL(Path.root / "a")).copy(headers = successBasicHeader))
- s1Body <- s1.body.asString.debug("s1Body")
+ s1Body <- s1.body.asString
s2 <- app.runZIO(Request.get(URL(Path.root / "b" / "1")).copy(headers = successBasicHeader))
- s2Body <- s2.body.asString.debug("s2Body")
+ s2Body <- s2.body.asString
s3 <- app.runZIO(Request.get(URL(Path.root / "c" / "name")).copy(headers = successBasicHeader))
- s3Body <- s3.body.asString.debug("s3Body")
+ s3Body <- s3.body.asString
resultStatus = s1.status == Status.Ok && s2.status == Status.Ok && s3.status == Status.Ok
resultBody = s1Body == "user" && s2Body == "for id: 1: user" && s3Body == "for name: name: user"
} yield assertTrue(resultStatus, resultBody)
diff --git a/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/WebSpec.scala b/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/WebSpec.scala
index 42257b1e41..2237a3bd86 100644
--- a/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/WebSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/internal/middlewares/WebSpec.scala
@@ -249,8 +249,7 @@ object WebSpec extends ZIOHttpSpec with HttpAppTestExtensions { self =>
for {
url <- ZIO.fromEither(URL.decode(url))
- response <- app.runZIO(Request.get(url = url)).debug("response")
- _ <- ZIO.debug(response.headerOrFail(Header.Location))
+ response <- app.runZIO(Request.get(url = url))
} yield assertTrue(
extractStatus(response) == status,
response.header(Header.Location) == location.map(l => Header.Location(URL.decode(l).toOption.get)),
diff --git a/zio-http/jvm/src/test/scala/zio/http/internal/package.scala b/zio-http/jvm/src/test/scala/zio/http/internal/package.scala
index af499564de..c0d6d0ee20 100644
--- a/zio-http/jvm/src/test/scala/zio/http/internal/package.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/internal/package.scala
@@ -25,7 +25,7 @@ import zio.http.netty.client.NettyClientDriver
package object internal {
val testServerConfig: ZLayer[Any, Nothing, Server.Config] =
- ZLayer.succeed(Server.Config.default.onAnyOpenPort)
+ ZLayer.succeed(Server.Config.default.onAnyOpenPort.logWarningOnFatalError(false))
val testNettyServerConfig: ZLayer[Any, Nothing, NettyConfig] =
ZLayer.succeed(
diff --git a/zio-http/jvm/src/test/scala/zio/http/netty/NettyStreamBodySpec.scala b/zio-http/jvm/src/test/scala/zio/http/netty/NettyStreamBodySpec.scala
index ad4acef187..5b0e097866 100644
--- a/zio-http/jvm/src/test/scala/zio/http/netty/NettyStreamBodySpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/netty/NettyStreamBodySpec.scala
@@ -4,12 +4,14 @@ import zio._
import zio.test.TestAspect.withLiveClock
import zio.test.{Spec, TestEnvironment, assertTrue}
-import zio.stream.{ZStream, ZStreamAspect}
+import zio.stream.{ZPipeline, ZStream, ZStreamAspect}
import zio.http.ZClient.Config
import zio.http._
import zio.http.internal.HttpRunnableSpec
+import zio.http.multipart.mixed.MultipartMixed
import zio.http.netty.NettyConfig.LeakDetectionLevel
+import zio.http.netty.NettyStreamBodySpec.app
object NettyStreamBodySpec extends HttpRunnableSpec {
@@ -101,6 +103,82 @@ object NettyStreamBodySpec extends HttpRunnableSpec {
)
}
},
+ test("properly decodes body's boundary") {
+ def trackablePart(content: String): ZIO[Any, Nothing, (MultipartMixed.Part, Promise[Nothing, Boolean])] = {
+ zio.Promise.make[Nothing, Boolean].map { p =>
+ MultipartMixed.Part(
+ Headers(Header.ContentType(MediaType.text.`plain`)),
+ ZStream(content)
+ .via(ZPipeline.utf8Encode)
+ .ensuring(p.succeed(true)),
+ ) ->
+ p
+ }
+ }
+ def trackableMultipartMixed(
+ b: Boundary,
+ )(partsContents: String*): ZIO[Any, Nothing, (MultipartMixed, Seq[Promise[Nothing, Boolean]])] = {
+ ZIO
+ .foreach(partsContents)(trackablePart)
+ .map { tps =>
+ val (parts, promisises) = tps.unzip
+ val mpm = MultipartMixed.fromParts(ZStream.fromIterable(parts), b, 1)
+ (mpm, promisises)
+ }
+ }
+
+ def serve(resp: Response): ZIO[Any, Throwable, RuntimeFlags] = {
+ val app = Routes(Method.GET / "it" -> handler(resp))
+ for {
+ portPromise <- Promise.make[Throwable, Int]
+ _ <- Server
+ .install(app)
+ .intoPromise(portPromise)
+ .zipRight(ZIO.never)
+ .provide(
+ ZLayer.succeed(NettyConfig.defaultWithFastShutdown.leakDetection(LeakDetectionLevel.PARANOID)),
+ ZLayer.succeed(Server.Config.default.onAnyOpenPort),
+ Server.customized,
+ )
+ .fork
+ port <- portPromise.await
+ } yield port
+ }
+
+ for {
+ mpmAndPromises <- trackableMultipartMixed(Boundary("this_is_a_boundary"))(
+ "this is the boring part 1",
+ "and this is the boring part two",
+ )
+ (mpm, promises) = mpmAndPromises
+ resp = Response(body =
+ Body.fromStreamChunked(mpm.source).contentType(MediaType.multipart.`mixed`, mpm.boundary),
+ )
+ .addHeader(Header.ContentType(MediaType.multipart.`mixed`, Some(mpm.boundary)))
+ port <- serve(resp)
+ client <- ZIO.service[Client]
+ req = Request.get(s"http://localhost:$port/it")
+ actualResp <- client(req)
+ actualMpm <- actualResp.body.asMultipartMixed
+ partsResults <- actualMpm.parts.zipWithIndex.mapZIO { case (part, idx) =>
+ val pr = promises(idx.toInt)
+ // todo: due to server side buffering can't really expect the promises to be uncompleted BEFORE pulling on the client side
+ part.toBody.asString <*>
+ pr.isDone
+ }.runCollect
+ } yield {
+ zio.test.assertTrue {
+ actualResp.headers(Header.ContentType) == resp.headers(Header.ContentType) &&
+ actualResp.body.boundary == Some(mpm.boundary) &&
+ actualMpm.boundary == mpm.boundary &&
+ partsResults == Chunk(
+ // todo: due to server side buffering can't really expect the promises to be uncompleted BEFORE pulling on the client side
+ ("this is the boring part 1", true),
+ ("and this is the boring part two", true),
+ )
+ }
+ }
+ },
).provide(
singleConnectionClient,
Scope.default,
diff --git a/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyConnectionPoolSpec.scala b/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyConnectionPoolSpec.scala
index b7fe1b575a..532ba26aab 100644
--- a/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyConnectionPoolSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyConnectionPoolSpec.scala
@@ -195,7 +195,7 @@ object NettyConnectionPoolSpec extends HttpRunnableSpec {
}.provideSome[Client & Scope](
ZLayer(appKeepAliveEnabled.unit),
DynamicServer.live,
- ZLayer.succeed(Server.Config.default.idleTimeout(500.millis).onAnyOpenPort),
+ ZLayer.succeed(Server.Config.default.idleTimeout(500.millis).onAnyOpenPort.logWarningOnFatalError(false)),
testNettyServerConfig,
Server.customized,
) @@ withLiveClock
@@ -211,7 +211,7 @@ object NettyConnectionPoolSpec extends HttpRunnableSpec {
}.provideSome[Scope](
ZLayer(appKeepAliveEnabled.unit),
DynamicServer.live,
- ZLayer.succeed(Server.Config.default.idleTimeout(500.millis).onAnyOpenPort),
+ ZLayer.succeed(Server.Config.default.idleTimeout(500.millis).onAnyOpenPort.logWarningOnFatalError(false)),
testNettyServerConfig,
Server.customized,
Client.live,
@@ -249,6 +249,37 @@ object NettyConnectionPoolSpec extends HttpRunnableSpec {
serverTestLayer,
) @@ withLiveClock @@ nonFlaky(10)
+ private def connectionPoolIssuesSpec = {
+ suite("ConnectionPoolIssuesSpec")(
+ test("Reusing connections doesn't cause memory leaks") {
+ Random.nextString(1024 * 1024).flatMap { text =>
+ val resp = Response.text(text)
+ Handler
+ .succeed(resp)
+ .toRoutes
+ .deployAndRequest { client =>
+ ZIO.foreachParDiscard(0 to 10) { _ =>
+ ZIO
+ .scoped[Any](client.request(Request()).flatMap(_.body.asArray))
+ .repeatN(200)
+ }
+ }(Request())
+ .as(assertCompletes)
+ }
+ },
+ )
+ }.provide(
+ ZLayer(appKeepAliveEnabled.unit),
+ DynamicServer.live,
+ serverTestLayer,
+ Client.customized,
+ ZLayer.succeed(ZClient.Config.default.dynamicConnectionPool(1, 512, 60.seconds)),
+ NettyClientDriver.live,
+ DnsResolver.default,
+ ZLayer.succeed(NettyConfig.defaultWithFastShutdown),
+ Scope.default,
+ )
+
def connectionPoolSpec: Spec[Any, Throwable] =
suite("ConnectionPool")(
suite("fixed")(
@@ -310,7 +341,7 @@ object NettyConnectionPoolSpec extends HttpRunnableSpec {
)
override def spec: Spec[Scope, Throwable] = {
- connectionPoolSpec @@ sequential @@ withLiveClock
+ (connectionPoolSpec + connectionPoolIssuesSpec) @@ sequential @@ withLiveClock
}
}
diff --git a/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyRequestEncoderSpec.scala b/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyRequestEncoderSpec.scala
index 7b989f3f7e..196c206500 100644
--- a/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyRequestEncoderSpec.scala
+++ b/zio-http/jvm/src/test/scala/zio/http/netty/client/NettyRequestEncoderSpec.scala
@@ -16,11 +16,11 @@
package zio.http.netty.client
+import zio.ZIO
import zio.test.Assertion._
import zio.test._
import zio.http.internal.HttpGen
-import zio.http.netty._
import zio.http.netty.model.Conversions
import zio.http.{Body, QueryParams, Request, URL, ZIOHttpSpec}
@@ -59,68 +59,72 @@ object NettyRequestEncoderSpec extends ZIOHttpSpec {
def spec = suite("EncodeClientParams")(
test("method") {
check(anyClientParam) { params =>
- val req = encode(params).map(_.method())
+ val req = ZIO.succeed(encode(params)).map(_.method())
assertZIO(req)(equalTo(Conversions.methodToNetty(params.method)))
}
},
test("method on Body.RandomAccessFile") {
check(HttpGen.clientParamsForFileBody()) { params =>
- val req = encode(params).map(_.method())
+ val req = ZIO.succeed(encode(params)).map(_.method())
assertZIO(req)(equalTo(Conversions.methodToNetty(params.method)))
}
},
suite("uri")(
test("uri") {
check(anyClientParam) { params =>
- val req = encode(params).map(_.uri())
+ val req = ZIO.succeed(encode(params)).map(_.uri())
assertZIO(req)(equalTo(params.url.relative.addLeadingSlash.encode))
}
},
test("uri on Body.RandomAccessFile") {
check(HttpGen.clientParamsForFileBody()) { params =>
- val req = encode(params).map(_.uri())
+ val req = ZIO.succeed(encode(params)).map(_.uri())
assertZIO(req)(equalTo(params.url.relative.addLeadingSlash.encode))
}
},
),
test("content-length") {
check(clientParamWithFiniteData(5)) { params =>
- val req = encode(params).map(
- _.headers().getInt(HttpHeaderNames.CONTENT_LENGTH).toLong,
- )
+ val req = ZIO
+ .succeed(encode(params))
+ .map(
+ _.headers().getInt(HttpHeaderNames.CONTENT_LENGTH).toLong,
+ )
assertZIO(req)(equalTo(5L))
}
},
test("host header") {
check(anyClientParam) { params =>
val req =
- encode(params).map(i => Option(i.headers().get(HttpHeaderNames.HOST)))
+ ZIO.succeed(encode(params)).map(i => Option(i.headers().get(HttpHeaderNames.HOST)))
assertZIO(req)(equalTo(params.url.hostPort))
}
},
test("host header when absolute url") {
check(clientParamWithAbsoluteUrl) { params =>
- val req = encode(params)
+ val req = ZIO
+ .succeed(encode(params))
.map(i => Option(i.headers().get(HttpHeaderNames.HOST)))
assertZIO(req)(equalTo(params.url.hostPort))
}
},
test("only one host header exists") {
check(clientParamWithAbsoluteUrl) { params =>
- val req = encode(params)
+ val req = ZIO
+ .succeed(encode(params))
.map(_.headers().getAll(HttpHeaderNames.HOST).size)
assertZIO(req)(equalTo(1))
}
},
test("http version") {
check(anyClientParam) { params =>
- val req = encode(params).map(i => i.protocolVersion())
+ val req = ZIO.succeed(encode(params)).map(i => i.protocolVersion())
assertZIO(req)(equalTo(Conversions.versionToNetty(params.version)))
}
},
test("url with an empty path and query params") {
check(clientParamWithEmptyPathAndQueryParams) { params =>
- val uri = encode(params).map(_.uri)
+ val uri = ZIO.succeed(encode(params)).map(_.uri)
assertZIO(uri)(not(equalTo(params.url.encode))) &&
assertZIO(uri)(equalTo(params.url.addLeadingSlash.encode))
}
@@ -128,7 +132,7 @@ object NettyRequestEncoderSpec extends ZIOHttpSpec {
test("leading slash added to path") {
val url = URL.decode("https://api.github.com").toOption.get / "something" / "else"
val req = Request(url = url)
- val encoded = encode(req).map(_.uri)
+ val encoded = ZIO.succeed(encode(req)).map(_.uri)
assertZIO(encoded)(equalTo("/something/else"))
},
)
diff --git a/zio-http/shared/src/main/scala-2/zio/http/UrlInterpolator.scala b/zio-http/shared/src/main/scala-2/zio/http/UrlInterpolator.scala
index 01aab0a34f..f1a2c2864b 100644
--- a/zio-http/shared/src/main/scala-2/zio/http/UrlInterpolator.scala
+++ b/zio-http/shared/src/main/scala-2/zio/http/UrlInterpolator.scala
@@ -34,13 +34,8 @@ private[http] object UrlInterpolatorMacro {
val result = URL.decode(p) match {
case Left(error) => c.abort(c.enclosingPosition, s"Invalid URL: ${error.getMessage}")
case Right(url) =>
- if (url.isAbsolute) {
- val uri = url.encode
- q"_root_.zio.http.URL.fromAbsoluteURI(new _root_.java.net.URI($uri)).get"
- } else {
- val uri = url.encode
- q"_root_.zio.http.URL.fromRelativeURI(new _root_.java.net.URI($uri)).get"
- }
+ val uri = url.encode
+ q"_root_.zio.http.URL.fromURI(new _root_.java.net.URI($uri)).get"
}
c.Expr[URL](result)
case Apply(_, List(Apply(_, staticPartLiterals))) =>
@@ -86,13 +81,7 @@ private[http] object UrlInterpolatorMacro {
q"$acc + $part"
}
- val result = if (url.isAbsolute) {
- q"_root_.zio.http.URL.fromAbsoluteURI(new _root_.java.net.URI($concatenated)).get"
- } else {
- q"_root_.zio.http.URL.fromRelativeURI(new _root_.java.net.URI($concatenated)).get"
- }
-
- c.Expr[URL](result)
+ c.Expr[URL](q"_root_.zio.http.URL.fromURI(new _root_.java.net.URI($concatenated)).get")
}
}
}
diff --git a/zio-http/shared/src/main/scala-3/zio/http/UrlInterpolator.scala b/zio-http/shared/src/main/scala-3/zio/http/UrlInterpolator.scala
index 485187d89b..bcd8eba2df 100644
--- a/zio-http/shared/src/main/scala-3/zio/http/UrlInterpolator.scala
+++ b/zio-http/shared/src/main/scala-3/zio/http/UrlInterpolator.scala
@@ -45,11 +45,7 @@ private[http] object UrlInterpolatorMacro {
case Left(error) => errorAndAbort(s"Invalid URL: $error", sc)
case Right(url) =>
val uri = Expr(url.encode)
- if (url.isAbsolute) {
- '{ URL.fromAbsoluteURI(new java.net.URI($uri)).get }
- } else {
- '{ URL.fromRelativeURI(new java.net.URI($uri)).get }
- }
+ '{ URL.fromURI(new java.net.URI($uri)).get }
}
} else {
val injectedPartExamples =
@@ -96,15 +92,7 @@ private[http] object UrlInterpolatorMacro {
'{$acc + $part}
}
- if (url.isAbsolute) {
- '{
- URL.fromAbsoluteURI(new java.net.URI($concatenated)).get
- }
- } else {
- '{
- URL.fromRelativeURI(new java.net.URI($concatenated)).get
- }
- }
+ '{ URL.fromURI(new java.net.URI($concatenated)).get }
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/Body.scala b/zio-http/shared/src/main/scala/zio/http/Body.scala
index 119447f33f..c3655f7ce0 100644
--- a/zio-http/shared/src/main/scala/zio/http/Body.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Body.scala
@@ -342,8 +342,6 @@ object Body {
def fromSocketApp(app: WebSocketApp[Any]): WebsocketBody =
WebsocketBody(app)
- private[zio] trait UnsafeWriteable extends Body
-
private[zio] trait UnsafeBytes extends Body {
private[zio] def unsafeAsArray(implicit unsafe: Unsafe): Array[Byte]
}
@@ -352,7 +350,7 @@ object Body {
* Helper to create empty Body
*/
- private[zio] object EmptyBody extends Body with UnsafeWriteable with UnsafeBytes {
+ private[zio] object EmptyBody extends Body with UnsafeBytes {
override def asArray(implicit trace: Trace): Task[Array[Byte]] = zioEmptyArray
@@ -383,7 +381,6 @@ object Body {
override val mediaType: Option[MediaType] = None,
override val boundary: Option[Boundary] = None,
) extends Body
- with UnsafeWriteable
with UnsafeBytes { self =>
override def asArray(implicit trace: Trace): Task[Array[Byte]] = ZIO.succeed(data.toArray)
@@ -392,7 +389,7 @@ object Body {
override def isEmpty: Boolean = data.isEmpty
- override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] = ZIO.succeed(data)
+ override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] = Exit.succeed(data)
override def asStream(implicit trace: Trace): ZStream[Any, Throwable, Byte] =
ZStream.unwrap(asChunk.map(ZStream.fromChunk(_)))
@@ -414,16 +411,15 @@ object Body {
override val mediaType: Option[MediaType] = None,
override val boundary: Option[Boundary] = None,
) extends Body
- with UnsafeWriteable
with UnsafeBytes { self =>
- override def asArray(implicit trace: Trace): Task[Array[Byte]] = ZIO.succeed(data)
+ override def asArray(implicit trace: Trace): Task[Array[Byte]] = Exit.succeed(data)
override def isComplete: Boolean = true
override def isEmpty: Boolean = data.isEmpty
- override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] = ZIO.succeed(Chunk.fromArray(data))
+ override def asChunk(implicit trace: Trace): Task[Chunk[Byte]] = Exit.succeed(Chunk.fromArray(data))
override def asStream(implicit trace: Trace): ZStream[Any, Throwable, Byte] =
ZStream.unwrap(asChunk.map(ZStream.fromChunk(_)))
@@ -446,8 +442,7 @@ object Body {
fileSize: Long,
override val mediaType: Option[MediaType] = None,
override val boundary: Option[Boundary] = None,
- ) extends Body
- with UnsafeWriteable {
+ ) extends Body {
override def asArray(implicit trace: Trace): Task[Array[Byte]] = ZIO.attemptBlocking {
Files.readAllBytes(file.toPath)
@@ -536,8 +531,8 @@ object Body {
}
- private val zioEmptyArray = ZIO.succeed(Array.empty[Byte])(Trace.empty)
+ private val zioEmptyArray = Exit.succeed(Array.emptyByteArray)
- private val zioEmptyChunk = ZIO.succeed(Chunk.empty[Byte])(Trace.empty)
+ private val zioEmptyChunk = Exit.succeed(Chunk.empty[Byte])
}
diff --git a/zio-http/shared/src/main/scala/zio/http/Handler.scala b/zio-http/shared/src/main/scala/zio/http/Handler.scala
index a88e7552cc..2fec39a6a3 100644
--- a/zio-http/shared/src/main/scala/zio/http/Handler.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Handler.scala
@@ -848,10 +848,14 @@ object Handler extends HandlerPlatformSpecific with HandlerVersionSpecific {
}
}
- def fromFile[R](makeFile: => File)(implicit trace: Trace): Handler[R, Throwable, Any, Response] =
- fromFileZIO(ZIO.attempt(makeFile))
+ def fromFile[R](makeFile: => File, charset: Charset = Charsets.Utf8)(implicit
+ trace: Trace,
+ ): Handler[R, Throwable, Any, Response] =
+ fromFileZIO(ZIO.attempt(makeFile), charset)
- def fromFileZIO[R](getFile: ZIO[R, Throwable, File])(implicit trace: Trace): Handler[R, Throwable, Any, Response] = {
+ def fromFileZIO[R](getFile: ZIO[R, Throwable, File], charset: Charset = Charsets.Utf8)(implicit
+ trace: Trace,
+ ): Handler[R, Throwable, Any, Response] = {
Handler.fromZIO[R, Throwable, Response](
ZIO.blocking {
getFile.flatMap { file =>
@@ -870,7 +874,9 @@ object Handler extends HandlerPlatformSpecific with HandlerVersionSpecific {
// not the file extension, to determine how to process a URL.
// {{{https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type}}}
determineMediaType(pathName) match {
- case Some(mediaType) => ZIO.succeed(response.addHeader(Header.ContentType(mediaType)))
+ case Some(mediaType) =>
+ val charset0 = if (mediaType.mainType == "text" || !mediaType.binary) Some(charset) else None
+ ZIO.succeed(response.addHeader(Header.ContentType(mediaType, charset = charset0)))
case None => ZIO.succeed(response)
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/Header.scala b/zio-http/shared/src/main/scala/zio/http/Header.scala
index 858d456ae3..25025e4d0b 100644
--- a/zio-http/shared/src/main/scala/zio/http/Header.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Header.scala
@@ -1055,8 +1055,11 @@ object Header {
}
def parse(value: String): Either[String, Authorization] = {
- val parts = value.split(" ")
- if (parts.length >= 2) {
+ val parts = value.split(" ").filter(_.nonEmpty)
+ val nParts = parts.length
+ if (nParts == 1) {
+ Right(Unparsed("", parts(0)))
+ } else if (nParts >= 2) {
parts(0).toLowerCase match {
case "basic" => parseBasic(parts(1))
case "digest" => parseDigest(parts.tail.mkString(" "))
@@ -1074,7 +1077,7 @@ object Header {
s"""Digest response="$response",username="$username",realm="$realm",uri=${uri.toString},opaque="$opaque",algorithm=$algo,""" +
s"""qop=$qop,cnonce="$cnonce",nonce="$nonce",nc=$nc,userhash=${userhash.toString}"""
case Bearer(token) => s"Bearer ${token.value.asString}"
- case Unparsed(scheme, params) => s"$scheme ${params.value.asString}"
+ case Unparsed(scheme, params) => s"$scheme ${params.value.asString}".strip()
}
private def parseBasic(value: String): Either[String, Authorization] = {
@@ -4146,9 +4149,9 @@ object Header {
final case class Comment(comment: String) extends UserAgent
- private val productRegex = """(?i)([a-z0-9]+)(?:/([a-z0-9.]+))?""".r
- private val commentRegex = """(?i)\((.*)$""".r
- private val completeRegex = s"""^(?i)([a-z0-9]+)(?:/([a-z0-9.]+))(.*)$$""".r
+ private val productRegex = "(?i)([a-z0-9]+)(?:/([a-z0-9.]+))?".r
+ private val commentRegex = """(?i)\((.*)""".r
+ private val completeRegex = "(?i)([a-z0-9]+)(?:/([a-z0-9.]+))(.*)".r
def parse(userAgent: String): Either[String, UserAgent] = {
userAgent match {
diff --git a/zio-http/shared/src/main/scala/zio/http/HttpApp.scala b/zio-http/shared/src/main/scala/zio/http/HttpApp.scala
index e2b97f858c..175abe47dd 100644
--- a/zio-http/shared/src/main/scala/zio/http/HttpApp.scala
+++ b/zio-http/shared/src/main/scala/zio/http/HttpApp.scala
@@ -19,6 +19,8 @@ package zio.http
import zio._
import zio.stacktracer.TracingImplicits.disableAutoTrace
+import zio.http.Routes.Tree
+
/**
* An HTTP application is a collection of routes, all of whose errors have been
* handled through conversion into HTTP responses.
@@ -137,10 +139,10 @@ object HttpApp {
Tree(self.tree ++ that.tree)
final def add[Env1 <: Env](route: Route[Env1, Response])(implicit trace: Trace): Tree[Env1] =
- Tree(self.tree.add(route.routePattern, route.toHandler))
+ Tree(self.tree.addAll(route.routePattern.alternatives.map(alt => (alt, route.toHandler))))
final def addAll[Env1 <: Env](routes: Iterable[Route[Env1, Response]])(implicit trace: Trace): Tree[Env1] =
- Tree(self.tree.addAll(routes.map(r => (r.routePattern, r.toHandler))))
+ Tree[Env1](self.tree.addAll(routes.map(r => r.routePattern.alternatives.map(alt => (alt, r.toHandler))).flatten))
final def get(method: Method, path: Path): Chunk[RequestHandler[Env, Response]] =
tree.get(method, path)
diff --git a/zio-http/shared/src/main/scala/zio/http/MediaType.scala b/zio-http/shared/src/main/scala/zio/http/MediaType.scala
index ca08a6668a..91cf3683f9 100644
--- a/zio-http/shared/src/main/scala/zio/http/MediaType.scala
+++ b/zio-http/shared/src/main/scala/zio/http/MediaType.scala
@@ -36,7 +36,12 @@ final case class MediaType(
}
object MediaType extends MediaTypes {
- private val extensionMap: Map[String, MediaType] = allMediaTypes.flatMap(m => m.fileExtensions.map(_ -> m)).toMap
+ private val extensionMap: Map[String, MediaType] =
+ // Some extensions are mapped to multiple media types.
+ // We prefer the text media types, since this is the correct default for the most common extensions
+ // like html, xml, javascript, etc.
+ allMediaTypes.flatMap(m => m.fileExtensions.map(_ -> m)).toMap ++
+ text.all.flatMap(m => m.fileExtensions.map(_ -> m)).toMap
private[http] val contentTypeMap: Map[String, MediaType] = allMediaTypes.map(m => m.fullType -> m).toMap
val mainTypeMap = allMediaTypes.map(m => m.mainType -> m).toMap
diff --git a/zio-http/shared/src/main/scala/zio/http/MediaTypes.scala b/zio-http/shared/src/main/scala/zio/http/MediaTypes.scala
index 88ac1c829f..f9fa13ef35 100644
--- a/zio-http/shared/src/main/scala/zio/http/MediaTypes.scala
+++ b/zio-http/shared/src/main/scala/zio/http/MediaTypes.scala
@@ -1,7820 +1,10197 @@
-/*
- * Copyright 2021 - 2023 Sporta Technologies PVT LTD & the ZIO HTTP contributors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// ⚠️ HEY YOU! IMPORTANT MESSAGE ⚠️
+// ==============================
+//
+// THIS FILE IS AUTOMATICALLY GENERATED BY `GenerateMediaTypes.scala`
+// So don't go editing it now, you hear? Otherwise your changes will
+// be overwritten the next time someone runs `sbt generateMediaTypes`
package zio.http
private[zio] trait MediaTypes {
private[zio] lazy val allMediaTypes: List[MediaType] =
- Nil ++ x_shader.all ++ x_conference.all ++ video.all ++ text.all ++ multipart.all ++ model.all ++ message.all ++ image.all ++ font.all ++ chemical.all ++ audio.all ++ application.all
- private val Compressible: Boolean = true
- private val Uncompressible: Boolean = false
- private val Binary: Boolean = true
- private val NotBinary: Boolean = false
-
- lazy val any: MediaType = new MediaType("*", "*")
-
- private[zio] object application_parts {
- trait application_0 {
- lazy val `1d-interleaved-parityfec`: MediaType =
- new MediaType("application", "1d-interleaved-parityfec", Compressible, NotBinary)
- lazy val `3gpdash-qoe-report+xml`: MediaType =
- new MediaType("application", "3gpdash-qoe-report+xml", Compressible, NotBinary)
- lazy val `3gpp-ims+xml`: MediaType =
- new MediaType("application", "3gpp-ims+xml", Compressible, NotBinary)
- lazy val `3gpphal+json`: MediaType =
- new MediaType("application", "3gpphal+json", Compressible, NotBinary)
- lazy val `3gpphalforms+json`: MediaType =
- new MediaType("application", "3gpphalforms+json", Compressible, NotBinary)
- lazy val `a2l`: MediaType = new MediaType("application", "a2l", Compressible, NotBinary)
- lazy val `activemessage`: MediaType =
- new MediaType("application", "activemessage", Compressible, NotBinary)
- lazy val `activity+json`: MediaType =
- new MediaType("application", "activity+json", Compressible, NotBinary)
- lazy val `alto-costmap+json`: MediaType =
- new MediaType("application", "alto-costmap+json", Compressible, NotBinary)
- lazy val `alto-costmapfilter+json`: MediaType =
- new MediaType("application", "alto-costmapfilter+json", Compressible, NotBinary)
- lazy val `alto-directory+json`: MediaType =
- new MediaType("application", "alto-directory+json", Compressible, NotBinary)
- lazy val `alto-endpointcost+json`: MediaType =
- new MediaType("application", "alto-endpointcost+json", Compressible, NotBinary)
- lazy val `alto-endpointcostparams+json`: MediaType =
- new MediaType("application", "alto-endpointcostparams+json", Compressible, NotBinary)
- lazy val `alto-endpointprop+json`: MediaType =
- new MediaType("application", "alto-endpointprop+json", Compressible, NotBinary)
- lazy val `alto-endpointpropparams+json`: MediaType =
- new MediaType("application", "alto-endpointpropparams+json", Compressible, NotBinary)
- lazy val `alto-error+json`: MediaType =
- new MediaType("application", "alto-error+json", Compressible, NotBinary)
- lazy val `alto-networkmap+json`: MediaType =
- new MediaType("application", "alto-networkmap+json", Compressible, NotBinary)
- lazy val `alto-networkmapfilter+json`: MediaType =
- new MediaType("application", "alto-networkmapfilter+json", Compressible, NotBinary)
- lazy val `alto-updatestreamcontrol+json`: MediaType =
- new MediaType("application", "alto-updatestreamcontrol+json", Compressible, NotBinary)
- lazy val `alto-updatestreamparams+json`: MediaType =
- new MediaType("application", "alto-updatestreamparams+json", Compressible, NotBinary)
- lazy val `aml`: MediaType = new MediaType("application", "aml", Compressible, NotBinary)
- lazy val `andrew-inset`: MediaType =
- new MediaType("application", "andrew-inset", Compressible, NotBinary, List("ez"))
- lazy val `applefile`: MediaType =
- new MediaType("application", "applefile", Compressible, NotBinary)
- lazy val `applixware`: MediaType =
- new MediaType("application", "applixware", Compressible, NotBinary, List("aw"))
- lazy val `atf`: MediaType = new MediaType("application", "atf", Compressible, NotBinary)
- lazy val `atfx`: MediaType = new MediaType("application", "atfx", Compressible, NotBinary)
- lazy val `atom+xml`: MediaType =
- new MediaType("application", "atom+xml", Compressible, NotBinary, List("atom"))
- lazy val `atomcat+xml`: MediaType =
- new MediaType("application", "atomcat+xml", Compressible, NotBinary, List("atomcat"))
- lazy val `atomdeleted+xml`: MediaType = new MediaType(
- "application",
- "atomdeleted+xml",
- Compressible,
- NotBinary,
- List("atomdeleted"),
- )
- lazy val `atomicmail`: MediaType =
- new MediaType("application", "atomicmail", Compressible, NotBinary)
- lazy val `atomsvc+xml`: MediaType =
- new MediaType("application", "atomsvc+xml", Compressible, NotBinary, List("atomsvc"))
- lazy val `atsc-dwd+xml`: MediaType =
- new MediaType("application", "atsc-dwd+xml", Compressible, NotBinary, List("dwd"))
- lazy val `atsc-dynamic-event-message`: MediaType =
- new MediaType("application", "atsc-dynamic-event-message", Compressible, NotBinary)
- lazy val `atsc-held+xml`: MediaType =
- new MediaType("application", "atsc-held+xml", Compressible, NotBinary, List("held"))
- lazy val `atsc-rdt+json`: MediaType =
- new MediaType("application", "atsc-rdt+json", Compressible, NotBinary)
- lazy val `atsc-rsat+xml`: MediaType =
- new MediaType("application", "atsc-rsat+xml", Compressible, NotBinary, List("rsat"))
- lazy val `atxml`: MediaType = new MediaType("application", "atxml", Compressible, NotBinary)
- lazy val `auth-policy+xml`: MediaType =
- new MediaType("application", "auth-policy+xml", Compressible, NotBinary)
- lazy val `bacnet-xdd+zip`: MediaType =
- new MediaType("application", "bacnet-xdd+zip", Uncompressible, NotBinary)
- lazy val `batch-smtp`: MediaType =
- new MediaType("application", "batch-smtp", Compressible, NotBinary)
- lazy val `bdoc`: MediaType =
- new MediaType("application", "bdoc", Uncompressible, NotBinary, List("bdoc"))
- lazy val `beep+xml`: MediaType =
- new MediaType("application", "beep+xml", Compressible, NotBinary)
- lazy val `calendar+json`: MediaType =
- new MediaType("application", "calendar+json", Compressible, NotBinary)
- lazy val `calendar+xml`: MediaType =
- new MediaType("application", "calendar+xml", Compressible, NotBinary, List("xcs"))
- lazy val `call-completion`: MediaType =
- new MediaType("application", "call-completion", Compressible, NotBinary)
- lazy val `cals-1840`: MediaType =
- new MediaType("application", "cals-1840", Compressible, NotBinary)
- lazy val `captive+json`: MediaType =
- new MediaType("application", "captive+json", Compressible, NotBinary)
- lazy val `cbor`: MediaType = new MediaType("application", "cbor", Compressible, NotBinary)
- lazy val `cbor-seq`: MediaType =
- new MediaType("application", "cbor-seq", Compressible, NotBinary)
- lazy val `cccex`: MediaType = new MediaType("application", "cccex", Compressible, NotBinary)
- lazy val `ccmp+xml`: MediaType =
- new MediaType("application", "ccmp+xml", Compressible, NotBinary)
- lazy val `ccxml+xml`: MediaType =
- new MediaType("application", "ccxml+xml", Compressible, NotBinary, List("ccxml"))
- lazy val `cdfx+xml`: MediaType =
- new MediaType("application", "cdfx+xml", Compressible, NotBinary, List("cdfx"))
- lazy val `cdmi-capability`: MediaType =
- new MediaType("application", "cdmi-capability", Compressible, NotBinary, List("cdmia"))
- lazy val `cdmi-container`: MediaType =
- new MediaType("application", "cdmi-container", Compressible, NotBinary, List("cdmic"))
- lazy val `cdmi-domain`: MediaType =
- new MediaType("application", "cdmi-domain", Compressible, NotBinary, List("cdmid"))
- lazy val `cdmi-object`: MediaType =
- new MediaType("application", "cdmi-object", Compressible, NotBinary, List("cdmio"))
- lazy val `cdmi-queue`: MediaType =
- new MediaType("application", "cdmi-queue", Compressible, NotBinary, List("cdmiq"))
- lazy val `cdni`: MediaType = new MediaType("application", "cdni", Compressible, NotBinary)
- lazy val `cea`: MediaType = new MediaType("application", "cea", Compressible, NotBinary)
- lazy val `cea-2018+xml`: MediaType =
- new MediaType("application", "cea-2018+xml", Compressible, NotBinary)
- lazy val `cellml+xml`: MediaType =
- new MediaType("application", "cellml+xml", Compressible, NotBinary)
- lazy val `cfw`: MediaType = new MediaType("application", "cfw", Compressible, NotBinary)
- lazy val `clr`: MediaType = new MediaType("application", "clr", Compressible, NotBinary)
- lazy val `clue+xml`: MediaType =
- new MediaType("application", "clue+xml", Compressible, NotBinary)
- lazy val `clue_info+xml`: MediaType =
- new MediaType("application", "clue_info+xml", Compressible, NotBinary)
- lazy val `cms`: MediaType = new MediaType("application", "cms", Compressible, NotBinary)
- lazy val `cnrp+xml`: MediaType =
- new MediaType("application", "cnrp+xml", Compressible, NotBinary)
- lazy val `coap-group+json`: MediaType =
- new MediaType("application", "coap-group+json", Compressible, NotBinary)
- lazy val `coap-payload`: MediaType =
- new MediaType("application", "coap-payload", Compressible, NotBinary)
- lazy val `commonground`: MediaType =
- new MediaType("application", "commonground", Compressible, NotBinary)
- lazy val `conference-info+xml`: MediaType =
- new MediaType("application", "conference-info+xml", Compressible, NotBinary)
- lazy val `cose`: MediaType = new MediaType("application", "cose", Compressible, NotBinary)
- lazy val `cose-key`: MediaType =
- new MediaType("application", "cose-key", Compressible, NotBinary)
- lazy val `cose-key-set`: MediaType =
- new MediaType("application", "cose-key-set", Compressible, NotBinary)
- lazy val `cpl+xml`: MediaType =
- new MediaType("application", "cpl+xml", Compressible, NotBinary)
- lazy val `csrattrs`: MediaType =
- new MediaType("application", "csrattrs", Compressible, NotBinary)
- lazy val `csta+xml`: MediaType =
- new MediaType("application", "csta+xml", Compressible, NotBinary)
- lazy val `cstadata+xml`: MediaType =
- new MediaType("application", "cstadata+xml", Compressible, NotBinary)
- lazy val `csvm+json`: MediaType =
- new MediaType("application", "csvm+json", Compressible, NotBinary)
- lazy val `cu-seeme`: MediaType =
- new MediaType("application", "cu-seeme", Compressible, NotBinary, List("cu"))
- lazy val `cwt`: MediaType = new MediaType("application", "cwt", Compressible, NotBinary)
- lazy val `cybercash`: MediaType =
- new MediaType("application", "cybercash", Compressible, NotBinary)
- lazy val `dart`: MediaType = new MediaType("application", "dart", Compressible, NotBinary)
- lazy val `dash+xml`: MediaType =
- new MediaType("application", "dash+xml", Compressible, NotBinary, List("mpd"))
- lazy val `dashdelta`: MediaType =
- new MediaType("application", "dashdelta", Compressible, NotBinary)
- lazy val `davmount+xml`: MediaType =
- new MediaType("application", "davmount+xml", Compressible, NotBinary, List("davmount"))
- lazy val `dca-rft`: MediaType =
- new MediaType("application", "dca-rft", Compressible, NotBinary)
- lazy val `dcd`: MediaType = new MediaType("application", "dcd", Compressible, NotBinary)
- lazy val `dec-dx`: MediaType = new MediaType("application", "dec-dx", Compressible, NotBinary)
- lazy val `dialog-info+xml`: MediaType =
- new MediaType("application", "dialog-info+xml", Compressible, NotBinary)
- lazy val `dicom`: MediaType = new MediaType("application", "dicom", Compressible, NotBinary)
- lazy val `dicom+json`: MediaType =
- new MediaType("application", "dicom+json", Compressible, NotBinary)
- lazy val `dicom+xml`: MediaType =
- new MediaType("application", "dicom+xml", Compressible, NotBinary)
- lazy val `dii`: MediaType = new MediaType("application", "dii", Compressible, NotBinary)
- lazy val `dit`: MediaType = new MediaType("application", "dit", Compressible, NotBinary)
- lazy val `dns`: MediaType = new MediaType("application", "dns", Compressible, NotBinary)
- lazy val `dns+json`: MediaType =
- new MediaType("application", "dns+json", Compressible, NotBinary)
- lazy val `dns-message`: MediaType =
- new MediaType("application", "dns-message", Compressible, NotBinary)
- lazy val `docbook+xml`: MediaType =
- new MediaType("application", "docbook+xml", Compressible, NotBinary, List("dbk"))
- lazy val `dots+cbor`: MediaType =
- new MediaType("application", "dots+cbor", Compressible, NotBinary)
- lazy val `dskpp+xml`: MediaType =
- new MediaType("application", "dskpp+xml", Compressible, NotBinary)
- lazy val `dssc+der`: MediaType =
- new MediaType("application", "dssc+der", Compressible, NotBinary, List("dssc"))
- lazy val `dssc+xml`: MediaType =
- new MediaType("application", "dssc+xml", Compressible, NotBinary, List("xdssc"))
- lazy val `dvcs`: MediaType = new MediaType("application", "dvcs", Compressible, NotBinary)
- lazy val `ecmascript`: MediaType =
- new MediaType("application", "ecmascript", Compressible, NotBinary, List("es", "ecma"))
- lazy val `edi-consent`: MediaType =
- new MediaType("application", "edi-consent", Compressible, NotBinary)
- lazy val `edi-x12`: MediaType =
- new MediaType("application", "edi-x12", Uncompressible, NotBinary)
- lazy val `edifact`: MediaType =
- new MediaType("application", "edifact", Uncompressible, NotBinary)
- lazy val `efi`: MediaType = new MediaType("application", "efi", Compressible, NotBinary)
- lazy val `elm+json`: MediaType =
- new MediaType("application", "elm+json", Compressible, NotBinary)
- lazy val `elm+xml`: MediaType =
- new MediaType("application", "elm+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.cap+xml`: MediaType =
- new MediaType("application", "emergencycalldata.cap+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.comment+xml`: MediaType =
- new MediaType("application", "emergencycalldata.comment+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.control+xml`: MediaType =
- new MediaType("application", "emergencycalldata.control+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.deviceinfo+xml`: MediaType =
- new MediaType("application", "emergencycalldata.deviceinfo+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.ecall.msd`: MediaType =
- new MediaType("application", "emergencycalldata.ecall.msd", Compressible, NotBinary)
- lazy val `emergencycalldata.providerinfo+xml`: MediaType =
- new MediaType("application", "emergencycalldata.providerinfo+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.serviceinfo+xml`: MediaType =
- new MediaType("application", "emergencycalldata.serviceinfo+xml", Compressible, NotBinary)
- lazy val `emergencycalldata.subscriberinfo+xml`: MediaType = new MediaType(
+ application.all ++ x_shader.all ++ model.all ++ image.all ++ text.all ++ font.all ++ video.all ++ message.all ++ audio.all ++ multipart.all ++ chemical.all ++ x_conference.all
+ lazy val any: MediaType = new MediaType("*", "*")
+
+ object application {
+
+ lazy val `x-bdoc`: MediaType =
+ new MediaType("application", "x-bdoc", compressible = false, binary = true, List("bdoc"))
+
+ lazy val `vnd.3gpp.mcptt-location-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-location-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ctct.ws+xml`: MediaType =
+ new MediaType("application", "vnd.ctct.ws+xml", compressible = true, binary = true)
+
+ lazy val `vnd.trueapp`: MediaType =
+ new MediaType("application", "vnd.trueapp", compressible = false, binary = true, List("tra"))
+
+ lazy val `vnd.geogebra.tool`: MediaType =
+ new MediaType("application", "vnd.geogebra.tool", compressible = false, binary = true, List("ggt"))
+
+ lazy val `vnd.ms-works`: MediaType =
+ new MediaType(
"application",
- "emergencycalldata.subscriberinfo+xml",
- Compressible,
- NotBinary,
+ "vnd.ms-works",
+ compressible = false,
+ binary = true,
+ List("wps", "wks", "wcm", "wdb"),
)
- lazy val `emergencycalldata.veds+xml`: MediaType =
- new MediaType("application", "emergencycalldata.veds+xml", Compressible, NotBinary)
- lazy val `emma+xml`: MediaType =
- new MediaType("application", "emma+xml", Compressible, NotBinary, List("emma"))
- lazy val `emotionml+xml`: MediaType =
- new MediaType("application", "emotionml+xml", Compressible, NotBinary, List("emotionml"))
- lazy val `encaprtp`: MediaType =
- new MediaType("application", "encaprtp", Compressible, NotBinary)
- lazy val `epp+xml`: MediaType =
- new MediaType("application", "epp+xml", Compressible, NotBinary)
- lazy val `epub+zip`: MediaType =
- new MediaType("application", "epub+zip", Uncompressible, NotBinary, List("epub"))
- lazy val `eshop`: MediaType = new MediaType("application", "eshop", Compressible, NotBinary)
- lazy val `exi`: MediaType =
- new MediaType("application", "exi", Compressible, NotBinary, List("exi"))
- lazy val `expect-ct-report+json`: MediaType =
- new MediaType("application", "expect-ct-report+json", Compressible, NotBinary)
- lazy val `fastinfoset`: MediaType =
- new MediaType("application", "fastinfoset", Compressible, NotBinary)
- lazy val `fastsoap`: MediaType =
- new MediaType("application", "fastsoap", Compressible, NotBinary)
- lazy val `fdt+xml`: MediaType =
- new MediaType("application", "fdt+xml", Compressible, NotBinary, List("fdt"))
- lazy val `fhir+json`: MediaType =
- new MediaType("application", "fhir+json", Compressible, NotBinary)
- lazy val `fhir+xml`: MediaType =
- new MediaType("application", "fhir+xml", Compressible, NotBinary)
- lazy val `fido.trusted-apps+json`: MediaType =
- new MediaType("application", "fido.trusted-apps+json", Compressible, NotBinary)
- lazy val `fits`: MediaType = new MediaType("application", "fits", Compressible, NotBinary)
- lazy val `flexfec`: MediaType =
- new MediaType("application", "flexfec", Compressible, NotBinary)
- lazy val `font-sfnt`: MediaType =
- new MediaType("application", "font-sfnt", Compressible, NotBinary)
- lazy val `font-tdpfr`: MediaType =
- new MediaType("application", "font-tdpfr", Compressible, NotBinary, List("pfr"))
- lazy val `font-woff`: MediaType =
- new MediaType("application", "font-woff", Uncompressible, Binary)
- lazy val `framework-attributes+xml`: MediaType =
- new MediaType("application", "framework-attributes+xml", Compressible, NotBinary)
- lazy val `geo+json`: MediaType =
- new MediaType("application", "geo+json", Compressible, NotBinary, List("geojson"))
- lazy val `geo+json-seq`: MediaType =
- new MediaType("application", "geo+json-seq", Compressible, NotBinary)
- lazy val `geopackage+sqlite3`: MediaType =
- new MediaType("application", "geopackage+sqlite3", Compressible, NotBinary)
- lazy val `geoxacml+xml`: MediaType =
- new MediaType("application", "geoxacml+xml", Compressible, NotBinary)
- lazy val `gltf-buffer`: MediaType =
- new MediaType("application", "gltf-buffer", Compressible, NotBinary)
- lazy val `gml+xml`: MediaType =
- new MediaType("application", "gml+xml", Compressible, NotBinary, List("gml"))
- lazy val `gpx+xml`: MediaType =
- new MediaType("application", "gpx+xml", Compressible, NotBinary, List("gpx"))
- lazy val `gxf`: MediaType =
- new MediaType("application", "gxf", Compressible, NotBinary, List("gxf"))
- lazy val `gzip`: MediaType =
- new MediaType("application", "gzip", Uncompressible, Binary, List("gz"))
- lazy val `h224`: MediaType = new MediaType("application", "h224", Compressible, NotBinary)
- lazy val `held+xml`: MediaType =
- new MediaType("application", "held+xml", Compressible, NotBinary)
- lazy val `hjson`: MediaType =
- new MediaType("application", "hjson", Compressible, NotBinary, List("hjson"))
- lazy val `http`: MediaType = new MediaType("application", "http", Compressible, NotBinary)
- lazy val `hyperstudio`: MediaType =
- new MediaType("application", "hyperstudio", Compressible, NotBinary, List("stk"))
- lazy val `ibe-key-request+xml`: MediaType =
- new MediaType("application", "ibe-key-request+xml", Compressible, NotBinary)
- lazy val `ibe-pkg-reply+xml`: MediaType =
- new MediaType("application", "ibe-pkg-reply+xml", Compressible, NotBinary)
- lazy val `ibe-pp-data`: MediaType =
- new MediaType("application", "ibe-pp-data", Compressible, NotBinary)
- lazy val `iges`: MediaType = new MediaType("application", "iges", Compressible, NotBinary)
- lazy val `im-iscomposing+xml`: MediaType =
- new MediaType("application", "im-iscomposing+xml", Compressible, NotBinary)
- lazy val `index`: MediaType = new MediaType("application", "index", Compressible, NotBinary)
- lazy val `index.cmd`: MediaType =
- new MediaType("application", "index.cmd", Compressible, NotBinary)
- lazy val `index.obj`: MediaType =
- new MediaType("application", "index.obj", Compressible, NotBinary)
- lazy val `index.response`: MediaType =
- new MediaType("application", "index.response", Compressible, NotBinary)
- lazy val `index.vnd`: MediaType =
- new MediaType("application", "index.vnd", Compressible, NotBinary)
- lazy val `inkml+xml`: MediaType =
- new MediaType("application", "inkml+xml", Compressible, NotBinary, List("ink", "inkml"))
- lazy val `iotp`: MediaType = new MediaType("application", "iotp", Compressible, NotBinary)
- lazy val `ipfix`: MediaType =
- new MediaType("application", "ipfix", Compressible, NotBinary, List("ipfix"))
- lazy val `ipp`: MediaType = new MediaType("application", "ipp", Compressible, NotBinary)
- lazy val `isup`: MediaType = new MediaType("application", "isup", Compressible, NotBinary)
- lazy val `its+xml`: MediaType =
- new MediaType("application", "its+xml", Compressible, NotBinary, List("its"))
- lazy val `java-archive`: MediaType = new MediaType(
+
+ lazy val `vnd.hc+json`: MediaType =
+ new MediaType("application", "vnd.hc+json", compressible = true, binary = false)
+
+ lazy val `vnd.ims.lti.v2.toolconsumerprofile+json`: MediaType =
+ new MediaType("application", "vnd.ims.lti.v2.toolconsumerprofile+json", compressible = true, binary = false)
+
+ lazy val `vnd.3gpp.pfcp`: MediaType =
+ new MediaType("application", "vnd.3gpp.pfcp", compressible = false, binary = true)
+
+ lazy val `wordperfect5.1`: MediaType =
+ new MediaType("application", "wordperfect5.1", compressible = false, binary = true)
+
+ lazy val `ace+cbor`: MediaType =
+ new MediaType("application", "ace+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.kodak-descriptor`: MediaType =
+ new MediaType("application", "vnd.kodak-descriptor", compressible = false, binary = true, List("sse"))
+
+ lazy val `tetra_isi`: MediaType =
+ new MediaType("application", "tetra_isi", compressible = false, binary = true)
+
+ lazy val `vnd.collabio.xodocuments.presentation-template`: MediaType =
+ new MediaType(
"application",
- "java-archive",
- Uncompressible,
- Binary,
- List("jar", "war", "ear"),
+ "vnd.collabio.xodocuments.presentation-template",
+ compressible = false,
+ binary = true,
)
- lazy val `java-serialized-object`: MediaType = new MediaType(
+
+ lazy val `vnd.oasis.opendocument.text`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.text", compressible = false, binary = true, List("odt"))
+
+ lazy val `vnd.fujitsu.oasys2`: MediaType =
+ new MediaType("application", "vnd.fujitsu.oasys2", compressible = false, binary = true, List("oa2"))
+
+ lazy val `commonground`: MediaType =
+ new MediaType("application", "commonground", compressible = false, binary = true)
+
+ lazy val `vnd.evolv.ecig.profile`: MediaType =
+ new MediaType("application", "vnd.evolv.ecig.profile", compressible = false, binary = true)
+
+ lazy val `vnd.gov.sk.xmldatacontainer+xml`: MediaType =
+ new MediaType("application", "vnd.gov.sk.xmldatacontainer+xml", compressible = true, binary = true)
+
+ lazy val `simple-filter+xml`: MediaType =
+ new MediaType("application", "simple-filter+xml", compressible = true, binary = true)
+
+ lazy val `vnd.chess-pgn`: MediaType =
+ new MediaType("application", "vnd.chess-pgn", compressible = false, binary = true)
+
+ lazy val `vnd.oma.lwm2m+tlv`: MediaType =
+ new MediaType("application", "vnd.oma.lwm2m+tlv", compressible = false, binary = true)
+
+ lazy val `vnd.gov.sk.e-form+xml`: MediaType =
+ new MediaType("application", "vnd.gov.sk.e-form+xml", compressible = true, binary = true)
+
+ lazy val `jwk-set+json`: MediaType =
+ new MediaType("application", "jwk-set+json", compressible = true, binary = false)
+
+ lazy val `index.response`: MediaType =
+ new MediaType("application", "index.response", compressible = false, binary = true)
+
+ lazy val `vnd.novadigm.edx`: MediaType =
+ new MediaType("application", "vnd.novadigm.edx", compressible = false, binary = true, List("edx"))
+
+ lazy val `mathml-presentation+xml`: MediaType =
+ new MediaType("application", "mathml-presentation+xml", compressible = true, binary = true)
+
+ lazy val `urc-targetdesc+xml`: MediaType =
+ new MediaType("application", "urc-targetdesc+xml", compressible = true, binary = true, List("td"))
+
+ lazy val `vnd.nokia.conml+xml`: MediaType =
+ new MediaType("application", "vnd.nokia.conml+xml", compressible = true, binary = true)
+
+ lazy val `vnd.anser-web-funds-transfer-initiation`: MediaType =
+ new MediaType(
"application",
- "java-serialized-object",
- Uncompressible,
- NotBinary,
- List("ser"),
+ "vnd.anser-web-funds-transfer-initiation",
+ compressible = false,
+ binary = true,
+ List("fti"),
)
- lazy val `java-vm`: MediaType =
- new MediaType("application", "java-vm", Uncompressible, NotBinary, List("class"))
- lazy val `javascript`: MediaType =
- new MediaType("application", "javascript", Compressible, NotBinary, List("js", "mjs"))
- lazy val `jf2feed+json`: MediaType =
- new MediaType("application", "jf2feed+json", Compressible, NotBinary)
- lazy val `jose`: MediaType = new MediaType("application", "jose", Compressible, NotBinary)
- lazy val `jose+json`: MediaType =
- new MediaType("application", "jose+json", Compressible, NotBinary)
- lazy val `jrd+json`: MediaType =
- new MediaType("application", "jrd+json", Compressible, NotBinary)
- lazy val `jscalendar+json`: MediaType =
- new MediaType("application", "jscalendar+json", Compressible, NotBinary)
- lazy val `json`: MediaType =
- new MediaType("application", "json", Compressible, NotBinary, List("json", "map"))
- lazy val `json-patch+json`: MediaType =
- new MediaType("application", "json-patch+json", Compressible, NotBinary)
- lazy val `json-seq`: MediaType =
- new MediaType("application", "json-seq", Compressible, NotBinary)
- lazy val `json5`: MediaType =
- new MediaType("application", "json5", Compressible, NotBinary, List("json5"))
- lazy val `jsonml+json`: MediaType =
- new MediaType("application", "jsonml+json", Compressible, NotBinary, List("jsonml"))
- lazy val `jwk+json`: MediaType =
- new MediaType("application", "jwk+json", Compressible, NotBinary)
- lazy val `jwk-set+json`: MediaType =
- new MediaType("application", "jwk-set+json", Compressible, NotBinary)
- lazy val `jwt`: MediaType = new MediaType("application", "jwt", Compressible, NotBinary)
- lazy val `kpml-request+xml`: MediaType =
- new MediaType("application", "kpml-request+xml", Compressible, NotBinary)
- lazy val `kpml-response+xml`: MediaType =
- new MediaType("application", "kpml-response+xml", Compressible, NotBinary)
- lazy val `ld+json`: MediaType =
- new MediaType("application", "ld+json", Compressible, NotBinary, List("jsonld"))
- lazy val `lgr+xml`: MediaType =
- new MediaType("application", "lgr+xml", Compressible, NotBinary, List("lgr"))
- lazy val `link-format`: MediaType =
- new MediaType("application", "link-format", Compressible, NotBinary)
- lazy val `load-control+xml`: MediaType =
- new MediaType("application", "load-control+xml", Compressible, NotBinary)
- lazy val `lost+xml`: MediaType =
- new MediaType("application", "lost+xml", Compressible, NotBinary, List("lostxml"))
- lazy val `lostsync+xml`: MediaType =
- new MediaType("application", "lostsync+xml", Compressible, NotBinary)
- lazy val `lpf+zip`: MediaType =
- new MediaType("application", "lpf+zip", Uncompressible, NotBinary)
- lazy val `lxf`: MediaType = new MediaType("application", "lxf", Compressible, NotBinary)
- lazy val `mac-binhex40`: MediaType =
- new MediaType("application", "mac-binhex40", Compressible, NotBinary, List("hqx"))
- lazy val `mac-compactpro`: MediaType =
- new MediaType("application", "mac-compactpro", Compressible, NotBinary, List("cpt"))
- lazy val `macwriteii`: MediaType =
- new MediaType("application", "macwriteii", Compressible, NotBinary)
- lazy val `mads+xml`: MediaType =
- new MediaType("application", "mads+xml", Compressible, NotBinary, List("mads"))
- lazy val `manifest+json`: MediaType =
- new MediaType("application", "manifest+json", Compressible, NotBinary, List("webmanifest"))
- lazy val `marc`: MediaType =
- new MediaType("application", "marc", Compressible, NotBinary, List("mrc"))
- lazy val `marcxml+xml`: MediaType =
- new MediaType("application", "marcxml+xml", Compressible, NotBinary, List("mrcx"))
- lazy val `mathematica`: MediaType =
- new MediaType("application", "mathematica", Compressible, NotBinary, List("ma", "nb", "mb"))
- lazy val `mathml+xml`: MediaType =
- new MediaType("application", "mathml+xml", Compressible, NotBinary, List("mathml"))
- lazy val `mathml-content+xml`: MediaType =
- new MediaType("application", "mathml-content+xml", Compressible, NotBinary)
- lazy val `mathml-presentation+xml`: MediaType =
- new MediaType("application", "mathml-presentation+xml", Compressible, NotBinary)
- lazy val `mbms-associated-procedure-description+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.dvb.service`: MediaType =
+ new MediaType("application", "vnd.dvb.service", compressible = false, binary = true, List("svc"))
+
+ lazy val `x-compress`: MediaType =
+ new MediaType("application", "x-compress", compressible = false, binary = true)
+
+ lazy val `vnd.ms-wmdrm.meter-resp`: MediaType =
+ new MediaType("application", "vnd.ms-wmdrm.meter-resp", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.pstn+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.pstn+xml", compressible = true, binary = true)
+
+ lazy val `route-usd+xml`: MediaType =
+ new MediaType("application", "route-usd+xml", compressible = true, binary = true, List("rusd"))
+
+ lazy val `x-msmoney`: MediaType =
+ new MediaType("application", "x-msmoney", compressible = false, binary = true, List("mny"))
+
+ lazy val `vnd.tcpdump.pcap`: MediaType =
+ new MediaType("application", "vnd.tcpdump.pcap", compressible = false, binary = true, List("pcap", "cap", "dmp"))
+
+ lazy val `vnd.smintio.portals.archive`: MediaType =
+ new MediaType("application", "vnd.smintio.portals.archive", compressible = false, binary = true)
+
+ lazy val `vnd.medcalcdata`: MediaType =
+ new MediaType("application", "vnd.medcalcdata", compressible = false, binary = true, List("mc1"))
+
+ lazy val `cbor-seq`: MediaType =
+ new MediaType("application", "cbor-seq", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcdata-msgstore-ctrl-request+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-msgstore-ctrl-request+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oma.poc.groups+xml`: MediaType =
+ new MediaType("application", "vnd.oma.poc.groups+xml", compressible = true, binary = true)
+
+ lazy val `yang-patch+json`: MediaType =
+ new MediaType("application", "yang-patch+json", compressible = true, binary = false)
+
+ lazy val `vnd.3gpp2.sms`: MediaType =
+ new MediaType("application", "vnd.3gpp2.sms", compressible = false, binary = true)
+
+ lazy val `passport`: MediaType =
+ new MediaType("application", "passport", compressible = false, binary = true)
+
+ lazy val `atomdeleted+xml`: MediaType =
+ new MediaType("application", "atomdeleted+xml", compressible = true, binary = true, List("atomdeleted"))
+
+ lazy val `x-blorb`: MediaType =
+ new MediaType("application", "x-blorb", compressible = false, binary = true, List("blb", "blorb"))
+
+ lazy val `marcxml+xml`: MediaType =
+ new MediaType("application", "marcxml+xml", compressible = true, binary = true, List("mrcx"))
+
+ lazy val `ocsp-request`: MediaType =
+ new MediaType("application", "ocsp-request", compressible = false, binary = true)
+
+ lazy val `vnd.cirpack.isdn-ext`: MediaType =
+ new MediaType("application", "vnd.cirpack.isdn-ext", compressible = false, binary = true)
+
+ lazy val `vnd.truedoc`: MediaType =
+ new MediaType("application", "vnd.truedoc", compressible = false, binary = true)
+
+ lazy val `tzif`: MediaType =
+ new MediaType("application", "tzif", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.vmldrawing`: MediaType =
+ new MediaType("application", "vnd.openxmlformats-officedocument.vmldrawing", compressible = false, binary = true)
+
+ lazy val `yang-data+cbor`: MediaType =
+ new MediaType("application", "yang-data+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.ecowin.series`: MediaType =
+ new MediaType("application", "vnd.ecowin.series", compressible = false, binary = true)
+
+ lazy val `vnd.groove-identity-message`: MediaType =
+ new MediaType("application", "vnd.groove-identity-message", compressible = false, binary = true, List("gim"))
+
+ lazy val `vnd.s3sms`: MediaType =
+ new MediaType("application", "vnd.s3sms", compressible = false, binary = true)
+
+ lazy val `vnd.nacamar.ybrid+json`: MediaType =
+ new MediaType("application", "vnd.nacamar.ybrid+json", compressible = true, binary = false)
+
+ lazy val `x-ms-xbap`: MediaType =
+ new MediaType("application", "x-ms-xbap", compressible = false, binary = true, List("xbap"))
+
+ lazy val `vnd.ipld.dag-cbor`: MediaType =
+ new MediaType("application", "vnd.ipld.dag-cbor", compressible = false, binary = true)
+
+ lazy val `macwriteii`: MediaType =
+ new MediaType("application", "macwriteii", compressible = false, binary = true)
+
+ lazy val `vnd.ezpix-album`: MediaType =
+ new MediaType("application", "vnd.ezpix-album", compressible = false, binary = true, List("ez2"))
+
+ lazy val `vnd.openeye.oeb`: MediaType =
+ new MediaType("application", "vnd.openeye.oeb", compressible = false, binary = true)
+
+ lazy val `vnd.cryptomator.vault`: MediaType =
+ new MediaType("application", "vnd.cryptomator.vault", compressible = false, binary = true)
+
+ lazy val `3gpp-ims+xml`: MediaType =
+ new MediaType("application", "3gpp-ims+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sybyl.mol2`: MediaType =
+ new MediaType("application", "vnd.sybyl.mol2", compressible = false, binary = true)
+
+ lazy val `vnd.informix-visionary`: MediaType =
+ new MediaType("application", "vnd.informix-visionary", compressible = false, binary = true)
+
+ lazy val `pkcs8-encrypted`: MediaType =
+ new MediaType("application", "pkcs8-encrypted", compressible = false, binary = true)
+
+ lazy val `vnd.radisys.msml-dialog-base+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog-base+xml", compressible = true, binary = true)
+
+ lazy val `vnd.wmc`: MediaType =
+ new MediaType("application", "vnd.wmc", compressible = false, binary = true)
+
+ lazy val `vnd.mfmp`: MediaType =
+ new MediaType("application", "vnd.mfmp", compressible = false, binary = true, List("mfm"))
+
+ lazy val `xcap-att+xml`: MediaType =
+ new MediaType("application", "xcap-att+xml", compressible = true, binary = true, List("xav"))
+
+ lazy val `spirits-event+xml`: MediaType =
+ new MediaType("application", "spirits-event+xml", compressible = true, binary = true)
+
+ lazy val `oauth-authz-req+jwt`: MediaType =
+ new MediaType("application", "oauth-authz-req+jwt", compressible = false, binary = true)
+
+ lazy val `alto-propmapparams+json`: MediaType =
+ new MediaType("application", "alto-propmapparams+json", compressible = true, binary = false)
+
+ lazy val `pskc+xml`: MediaType =
+ new MediaType("application", "pskc+xml", compressible = true, binary = true, List("pskcxml"))
+
+ lazy val `vnd.data-vision.rdz`: MediaType =
+ new MediaType("application", "vnd.data-vision.rdz", compressible = false, binary = true, List("rdz"))
+
+ lazy val `vnd.visio`: MediaType =
+ new MediaType("application", "vnd.visio", compressible = false, binary = true, List("vsd", "vst", "vss", "vsw"))
+
+ lazy val `vnd.oma.bcast.stkm`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.stkm", compressible = false, binary = true)
+
+ lazy val `vnd.mfer`: MediaType =
+ new MediaType("application", "vnd.mfer", compressible = false, binary = true, List("mwf"))
+
+ lazy val `vnd.ntt-local.ogw_remote-access`: MediaType =
+ new MediaType("application", "vnd.ntt-local.ogw_remote-access", compressible = false, binary = true)
+
+ lazy val `logout+jwt`: MediaType =
+ new MediaType("application", "logout+jwt", compressible = false, binary = true)
+
+ lazy val `cwt`: MediaType =
+ new MediaType("application", "cwt", compressible = false, binary = true)
+
+ lazy val `load-control+xml`: MediaType =
+ new MediaType("application", "load-control+xml", compressible = true, binary = true)
+
+ lazy val `vnd.gentoo.manifest`: MediaType =
+ new MediaType("application", "vnd.gentoo.manifest", compressible = false, binary = true)
+
+ lazy val `vnd.smaf`: MediaType =
+ new MediaType("application", "vnd.smaf", compressible = false, binary = true, List("mmf"))
+
+ lazy val `vnd.otps.ct-kip+xml`: MediaType =
+ new MediaType("application", "vnd.otps.ct-kip+xml", compressible = true, binary = true)
+
+ lazy val `vnd.nokia.pcd+xml`: MediaType =
+ new MediaType("application", "vnd.nokia.pcd+xml", compressible = true, binary = true)
+
+ lazy val `vnd.scribus`: MediaType =
+ new MediaType("application", "vnd.scribus", compressible = false, binary = true)
+
+ lazy val `vnd.ntt-local.sip-ta_tcp_stream`: MediaType =
+ new MediaType("application", "vnd.ntt-local.sip-ta_tcp_stream", compressible = false, binary = true)
+
+ lazy val `geo+json`: MediaType =
+ new MediaType("application", "geo+json", compressible = true, binary = false, List("geojson"))
+
+ lazy val `ocsp-response`: MediaType =
+ new MediaType("application", "ocsp-response", compressible = false, binary = true)
+
+ lazy val `vnd.apple.pages`: MediaType =
+ new MediaType("application", "vnd.apple.pages", compressible = false, binary = true, List("pages"))
+
+ lazy val `vnd.micrografx.igx`: MediaType =
+ new MediaType("application", "vnd.micrografx.igx", compressible = false, binary = true, List("igx"))
+
+ lazy val `cbor`: MediaType =
+ new MediaType("application", "cbor", compressible = false, binary = true)
+
+ lazy val `3gpphal+json`: MediaType =
+ new MediaType("application", "3gpphal+json", compressible = true, binary = false)
+
+ lazy val `vnd.kde.kpresenter`: MediaType =
+ new MediaType("application", "vnd.kde.kpresenter", compressible = false, binary = true, List("kpr", "kpt"))
+
+ lazy val `json`: MediaType =
+ new MediaType("application", "json", compressible = true, binary = false, List("json", "map"))
+
+ lazy val `vnd.iptc.g2.conceptitem+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.conceptitem+xml", compressible = true, binary = true)
+
+ lazy val `vnd.cups-raster`: MediaType =
+ new MediaType("application", "vnd.cups-raster", compressible = false, binary = true)
+
+ lazy val `vnd.amazon.ebook`: MediaType =
+ new MediaType("application", "vnd.amazon.ebook", compressible = false, binary = true, List("azw"))
+
+ lazy val `vnd.musician`: MediaType =
+ new MediaType("application", "vnd.musician", compressible = false, binary = true, List("mus"))
+
+ lazy val `vnd.oftn.l10n+json`: MediaType =
+ new MediaType("application", "vnd.oftn.l10n+json", compressible = true, binary = false)
+
+ lazy val `sdp`: MediaType =
+ new MediaType("application", "sdp", compressible = false, binary = true, List("sdp"))
+
+ lazy val `vnd.kde.kformula`: MediaType =
+ new MediaType("application", "vnd.kde.kformula", compressible = false, binary = true, List("kfo"))
+
+ lazy val `x-nzb`: MediaType =
+ new MediaType("application", "x-nzb", compressible = false, binary = true, List("nzb"))
+
+ lazy val `vnd.uplanet.cacheop`: MediaType =
+ new MediaType("application", "vnd.uplanet.cacheop", compressible = false, binary = true)
+
+ lazy val `vnd.ruckus.download`: MediaType =
+ new MediaType("application", "vnd.ruckus.download", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.base`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.base", compressible = false, binary = true)
+
+ lazy val `x-java-jnlp-file`: MediaType =
+ new MediaType("application", "x-java-jnlp-file", compressible = false, binary = true, List("jnlp"))
+
+ lazy val `pkcs12`: MediaType =
+ new MediaType("application", "pkcs12", compressible = false, binary = true)
+
+ lazy val `resource-lists+xml`: MediaType =
+ new MediaType("application", "resource-lists+xml", compressible = true, binary = true, List("rl"))
+
+ lazy val `odm+xml`: MediaType =
+ new MediaType("application", "odm+xml", compressible = true, binary = true)
+
+ lazy val `vnd.jsk.isdn-ngn`: MediaType =
+ new MediaType("application", "vnd.jsk.isdn-ngn", compressible = false, binary = true)
+
+ lazy val `iotp`: MediaType =
+ new MediaType("application", "iotp", compressible = false, binary = true)
+
+ lazy val `pkix-crl`: MediaType =
+ new MediaType("application", "pkix-crl", compressible = false, binary = true, List("crl"))
+
+ lazy val `vnd.geogebra.file`: MediaType =
+ new MediaType("application", "vnd.geogebra.file", compressible = false, binary = true, List("ggb"))
+
+ lazy val `ace+json`: MediaType =
+ new MediaType("application", "ace+json", compressible = true, binary = false)
+
+ lazy val `x-gca-compressed`: MediaType =
+ new MediaType("application", "x-gca-compressed", compressible = false, binary = true, List("gca"))
+
+ lazy val `sparql-results+xml`: MediaType =
+ new MediaType("application", "sparql-results+xml", compressible = true, binary = true, List("srx"))
+
+ lazy val `xspf+xml`: MediaType =
+ new MediaType("application", "xspf+xml", compressible = true, binary = true, List("xspf"))
+
+ lazy val `vnd.crypto-shade-file`: MediaType =
+ new MediaType("application", "vnd.crypto-shade-file", compressible = false, binary = true)
+
+ lazy val `vnd.is-xpr`: MediaType =
+ new MediaType("application", "vnd.is-xpr", compressible = false, binary = true, List("xpr"))
+
+ lazy val `beep+xml`: MediaType =
+ new MediaType("application", "beep+xml", compressible = true, binary = true)
+
+ lazy val `vnd.filmit.zfc`: MediaType =
+ new MediaType("application", "vnd.filmit.zfc", compressible = false, binary = true)
+
+ lazy val `vnd.oma.bcast.simple-symbol-container`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.simple-symbol-container", compressible = false, binary = true)
+
+ lazy val `framework-attributes+xml`: MediaType =
+ new MediaType("application", "framework-attributes+xml", compressible = true, binary = true)
+
+ lazy val `vnd.collabio.xodocuments.spreadsheet-template`: MediaType =
+ new MediaType("application", "vnd.collabio.xodocuments.spreadsheet-template", compressible = false, binary = true)
+
+ lazy val `vnd.groove-account`: MediaType =
+ new MediaType("application", "vnd.groove-account", compressible = false, binary = true, List("gac"))
+
+ lazy val `clue_info+xml`: MediaType =
+ new MediaType("application", "clue_info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.software602.filler.form+xml`: MediaType =
+ new MediaType("application", "vnd.software602.filler.form+xml", compressible = true, binary = true, List("fo"))
+
+ lazy val `x-font-sunos-news`: MediaType =
+ new MediaType("application", "x-font-sunos-news", compressible = false, binary = true)
+
+ lazy val `vnd.fujixerox.docuworks.container`: MediaType =
+ new MediaType("application", "vnd.fujixerox.docuworks.container", compressible = false, binary = true)
+
+ lazy val `pls+xml`: MediaType =
+ new MediaType("application", "pls+xml", compressible = true, binary = true, List("pls"))
+
+ lazy val `dicom+json`: MediaType =
+ new MediaType("application", "dicom+json", compressible = true, binary = false)
+
+ lazy val `vnd.oasis.opendocument.text-template`: MediaType =
+ new MediaType(
"application",
- "mbms-associated-procedure-description+xml",
- Compressible,
- NotBinary,
+ "vnd.oasis.opendocument.text-template",
+ compressible = false,
+ binary = true,
+ List("ott"),
)
- lazy val `mbms-deregister+xml`: MediaType =
- new MediaType("application", "mbms-deregister+xml", Compressible, NotBinary)
- lazy val `mbms-envelope+xml`: MediaType =
- new MediaType("application", "mbms-envelope+xml", Compressible, NotBinary)
- lazy val `mbms-msk+xml`: MediaType =
- new MediaType("application", "mbms-msk+xml", Compressible, NotBinary)
- lazy val `mbms-msk-response+xml`: MediaType =
- new MediaType("application", "mbms-msk-response+xml", Compressible, NotBinary)
- lazy val `mbms-protection-description+xml`: MediaType =
- new MediaType("application", "mbms-protection-description+xml", Compressible, NotBinary)
- lazy val `mbms-reception-report+xml`: MediaType =
- new MediaType("application", "mbms-reception-report+xml", Compressible, NotBinary)
- lazy val `mbms-register+xml`: MediaType =
- new MediaType("application", "mbms-register+xml", Compressible, NotBinary)
- lazy val `mbms-register-response+xml`: MediaType =
- new MediaType("application", "mbms-register-response+xml", Compressible, NotBinary)
- lazy val `mbms-schedule+xml`: MediaType =
- new MediaType("application", "mbms-schedule+xml", Compressible, NotBinary)
- lazy val `mbms-user-service-description+xml`: MediaType =
- new MediaType("application", "mbms-user-service-description+xml", Compressible, NotBinary)
- lazy val `mbox`: MediaType =
- new MediaType("application", "mbox", Compressible, NotBinary, List("mbox"))
- lazy val `media-policy-dataset+xml`: MediaType =
- new MediaType("application", "media-policy-dataset+xml", Compressible, NotBinary)
- lazy val `media_control+xml`: MediaType =
- new MediaType("application", "media_control+xml", Compressible, NotBinary)
- lazy val `mediaservercontrol+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml`: MediaType =
+ new MediaType(
"application",
- "mediaservercontrol+xml",
- Compressible,
- NotBinary,
- List("mscml"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `merge-patch+json`: MediaType =
- new MediaType("application", "merge-patch+json", Compressible, NotBinary)
- lazy val `metalink+xml`: MediaType =
- new MediaType("application", "metalink+xml", Compressible, NotBinary, List("metalink"))
- lazy val `metalink4+xml`: MediaType =
- new MediaType("application", "metalink4+xml", Compressible, NotBinary, List("meta4"))
- lazy val `mets+xml`: MediaType =
- new MediaType("application", "mets+xml", Compressible, NotBinary, List("mets"))
- lazy val `mf4`: MediaType = new MediaType("application", "mf4", Compressible, NotBinary)
- lazy val `mikey`: MediaType = new MediaType("application", "mikey", Compressible, NotBinary)
- lazy val `mipc`: MediaType = new MediaType("application", "mipc", Compressible, NotBinary)
- lazy val `missing-blocks+cbor-seq`: MediaType =
- new MediaType("application", "missing-blocks+cbor-seq", Compressible, NotBinary)
- lazy val `mmt-aei+xml`: MediaType =
- new MediaType("application", "mmt-aei+xml", Compressible, NotBinary, List("maei"))
- lazy val `mmt-usd+xml`: MediaType =
- new MediaType("application", "mmt-usd+xml", Compressible, NotBinary, List("musd"))
- lazy val `mods+xml`: MediaType =
- new MediaType("application", "mods+xml", Compressible, NotBinary, List("mods"))
- lazy val `moss-keys`: MediaType =
- new MediaType("application", "moss-keys", Compressible, NotBinary)
- lazy val `moss-signature`: MediaType =
- new MediaType("application", "moss-signature", Compressible, NotBinary)
- lazy val `mosskey-data`: MediaType =
- new MediaType("application", "mosskey-data", Compressible, NotBinary)
- lazy val `mosskey-request`: MediaType =
- new MediaType("application", "mosskey-request", Compressible, NotBinary)
- lazy val `mp21`: MediaType =
- new MediaType("application", "mp21", Compressible, NotBinary, List("m21", "mp21"))
- lazy val `mp4`: MediaType =
- new MediaType("application", "mp4", Compressible, NotBinary, List("mp4s", "m4p"))
- lazy val `mpeg4-generic`: MediaType =
- new MediaType("application", "mpeg4-generic", Compressible, NotBinary)
- lazy val `mpeg4-iod`: MediaType =
- new MediaType("application", "mpeg4-iod", Compressible, NotBinary)
- lazy val `mpeg4-iod-xmt`: MediaType =
- new MediaType("application", "mpeg4-iod-xmt", Compressible, NotBinary)
- lazy val `mrb-consumer+xml`: MediaType =
- new MediaType("application", "mrb-consumer+xml", Compressible, NotBinary)
- lazy val `mrb-publish+xml`: MediaType =
- new MediaType("application", "mrb-publish+xml", Compressible, NotBinary)
- lazy val `msc-ivr+xml`: MediaType =
- new MediaType("application", "msc-ivr+xml", Compressible, NotBinary)
- lazy val `msc-mixer+xml`: MediaType =
- new MediaType("application", "msc-mixer+xml", Compressible, NotBinary)
- lazy val `msword`: MediaType =
- new MediaType("application", "msword", Uncompressible, Binary, List("doc", "dot"))
- lazy val `mud+json`: MediaType =
- new MediaType("application", "mud+json", Compressible, NotBinary)
- lazy val `multipart-core`: MediaType =
- new MediaType("application", "multipart-core", Compressible, NotBinary)
- lazy val `mxf`: MediaType =
- new MediaType("application", "mxf", Compressible, NotBinary, List("mxf"))
- lazy val `n-quads`: MediaType =
- new MediaType("application", "n-quads", Compressible, NotBinary, List("nq"))
- lazy val `n-triples`: MediaType =
- new MediaType("application", "n-triples", Compressible, NotBinary, List("nt"))
- lazy val `nasdata`: MediaType =
- new MediaType("application", "nasdata", Compressible, NotBinary)
- lazy val `news-checkgroups`: MediaType =
- new MediaType("application", "news-checkgroups", Compressible, NotBinary)
- lazy val `news-groupinfo`: MediaType =
- new MediaType("application", "news-groupinfo", Compressible, NotBinary)
- lazy val `news-transmission`: MediaType =
- new MediaType("application", "news-transmission", Compressible, NotBinary)
- lazy val `nlsml+xml`: MediaType =
- new MediaType("application", "nlsml+xml", Compressible, NotBinary)
- lazy val `node`: MediaType =
- new MediaType("application", "node", Compressible, NotBinary, List("cjs"))
- lazy val `nss`: MediaType = new MediaType("application", "nss", Compressible, NotBinary)
- lazy val `oauth-authz-req+jwt`: MediaType =
- new MediaType("application", "oauth-authz-req+jwt", Compressible, NotBinary)
- lazy val `ocsp-request`: MediaType =
- new MediaType("application", "ocsp-request", Compressible, NotBinary)
- lazy val `ocsp-response`: MediaType =
- new MediaType("application", "ocsp-response", Compressible, NotBinary)
- lazy val `octet-stream`: MediaType = new MediaType(
+
+ lazy val `vnd.epson.salt`: MediaType =
+ new MediaType("application", "vnd.epson.salt", compressible = false, binary = true, List("slt"))
+
+ lazy val `vnd.onepagertatx`: MediaType =
+ new MediaType("application", "vnd.onepagertatx", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.radio-presets`: MediaType =
+ new MediaType("application", "vnd.nokia.radio-presets", compressible = false, binary = true, List("rpss"))
+
+ lazy val `x-keepass2`: MediaType =
+ new MediaType("application", "x-keepass2", compressible = false, binary = true, List("kdbx"))
+
+ lazy val `sieve`: MediaType =
+ new MediaType("application", "sieve", compressible = false, binary = true, List("siv", "sieve"))
+
+ lazy val `vnd.geometry-explorer`: MediaType =
+ new MediaType("application", "vnd.geometry-explorer", compressible = false, binary = true, List("gex", "gre"))
+
+ lazy val `vnd.yamaha.openscoreformat`: MediaType =
+ new MediaType("application", "vnd.yamaha.openscoreformat", compressible = false, binary = true, List("osf"))
+
+ lazy val `msc-mixer+xml`: MediaType =
+ new MediaType("application", "msc-mixer+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ciedi`: MediaType =
+ new MediaType("application", "vnd.ciedi", compressible = false, binary = true)
+
+ lazy val `vnd.jcp.javame.midlet-rms`: MediaType =
+ new MediaType("application", "vnd.jcp.javame.midlet-rms", compressible = false, binary = true, List("rms"))
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml`: MediaType =
+ new MediaType(
"application",
- "octet-stream",
- Uncompressible,
- Binary,
- List(
- "bin",
- "dms",
- "lrf",
- "mar",
- "so",
- "dist",
- "distz",
- "pkg",
- "bpk",
- "dump",
- "elc",
- "deploy",
- "exe",
- "dll",
- "deb",
- "dmg",
- "iso",
- "img",
- "msi",
- "msp",
- "msm",
- "buffer",
- ),
+ "vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `oda`: MediaType =
- new MediaType("application", "oda", Compressible, NotBinary, List("oda"))
- lazy val `odm+xml`: MediaType =
- new MediaType("application", "odm+xml", Compressible, NotBinary)
- lazy val `odx`: MediaType = new MediaType("application", "odx", Compressible, NotBinary)
- lazy val `oebps-package+xml`: MediaType =
- new MediaType("application", "oebps-package+xml", Compressible, NotBinary, List("opf"))
- lazy val `ogg`: MediaType =
- new MediaType("application", "ogg", Uncompressible, NotBinary, List("ogx"))
- lazy val `omdoc+xml`: MediaType =
- new MediaType("application", "omdoc+xml", Compressible, NotBinary, List("omdoc"))
- lazy val `onenote`: MediaType = new MediaType(
+
+ lazy val `edi-consent`: MediaType =
+ new MediaType("application", "edi-consent", compressible = false, binary = true)
+
+ lazy val `x-virtualbox-hdd`: MediaType =
+ new MediaType("application", "x-virtualbox-hdd", compressible = true, binary = true, List("hdd"))
+
+ lazy val `vnd.aether.imp`: MediaType =
+ new MediaType("application", "vnd.aether.imp", compressible = false, binary = true)
+
+ lazy val `json5`: MediaType =
+ new MediaType("application", "json5", compressible = false, binary = true, List("json5"))
+
+ lazy val `vnd.oma.cab-subs-invite+xml`: MediaType =
+ new MediaType("application", "vnd.oma.cab-subs-invite+xml", compressible = true, binary = true)
+
+ lazy val `flexfec`: MediaType =
+ new MediaType("application", "flexfec", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcptt-user-profile+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-user-profile+xml", compressible = true, binary = true)
+
+ lazy val `cybercash`: MediaType =
+ new MediaType("application", "cybercash", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.presentation`: MediaType =
+ new MediaType(
"application",
- "onenote",
- Compressible,
- NotBinary,
- List("onetoc", "onetoc2", "onetmp", "onepkg"),
+ "vnd.oasis.opendocument.presentation",
+ compressible = false,
+ binary = true,
+ List("odp"),
)
- lazy val `opc-nodeset+xml`: MediaType =
- new MediaType("application", "opc-nodeset+xml", Compressible, NotBinary)
- lazy val `oscore`: MediaType = new MediaType("application", "oscore", Compressible, NotBinary)
- lazy val `oxps`: MediaType =
- new MediaType("application", "oxps", Compressible, NotBinary, List("oxps"))
- lazy val `p2p-overlay+xml`: MediaType =
- new MediaType("application", "p2p-overlay+xml", Compressible, NotBinary, List("relo"))
- lazy val `parityfec`: MediaType =
- new MediaType("application", "parityfec", Compressible, NotBinary)
- lazy val `passport`: MediaType =
- new MediaType("application", "passport", Compressible, NotBinary)
- lazy val `patch-ops-error+xml`: MediaType =
- new MediaType("application", "patch-ops-error+xml", Compressible, NotBinary, List("xer"))
- lazy val `pdf`: MediaType =
- new MediaType("application", "pdf", Uncompressible, Binary, List("pdf"))
- lazy val `pdx`: MediaType = new MediaType("application", "pdx", Compressible, NotBinary)
- lazy val `pem-certificate-chain`: MediaType =
- new MediaType("application", "pem-certificate-chain", Compressible, NotBinary)
- lazy val `pgp-encrypted`: MediaType =
- new MediaType("application", "pgp-encrypted", Uncompressible, NotBinary, List("pgp"))
- lazy val `pgp-keys`: MediaType =
- new MediaType("application", "pgp-keys", Compressible, NotBinary)
- lazy val `pgp-signature`: MediaType =
- new MediaType("application", "pgp-signature", Compressible, NotBinary, List("asc", "sig"))
- lazy val `pics-rules`: MediaType =
- new MediaType("application", "pics-rules", Compressible, NotBinary, List("prf"))
- lazy val `pidf+xml`: MediaType =
- new MediaType("application", "pidf+xml", Compressible, NotBinary)
- lazy val `pidf-diff+xml`: MediaType =
- new MediaType("application", "pidf-diff+xml", Compressible, NotBinary)
- lazy val `pkcs10`: MediaType =
- new MediaType("application", "pkcs10", Compressible, NotBinary, List("p10"))
- lazy val `pkcs12`: MediaType = new MediaType("application", "pkcs12", Compressible, NotBinary)
- lazy val `pkcs7-mime`: MediaType =
- new MediaType("application", "pkcs7-mime", Compressible, NotBinary, List("p7m", "p7c"))
- lazy val `pkcs7-signature`: MediaType =
- new MediaType("application", "pkcs7-signature", Compressible, NotBinary, List("p7s"))
- lazy val `pkcs8`: MediaType =
- new MediaType("application", "pkcs8", Compressible, NotBinary, List("p8"))
- lazy val `pkcs8-encrypted`: MediaType =
- new MediaType("application", "pkcs8-encrypted", Compressible, NotBinary)
- lazy val `pkix-attr-cert`: MediaType =
- new MediaType("application", "pkix-attr-cert", Compressible, NotBinary, List("ac"))
- lazy val `pkix-cert`: MediaType =
- new MediaType("application", "pkix-cert", Compressible, NotBinary, List("cer"))
- lazy val `pkix-crl`: MediaType =
- new MediaType("application", "pkix-crl", Compressible, NotBinary, List("crl"))
- lazy val `pkix-pkipath`: MediaType =
- new MediaType("application", "pkix-pkipath", Compressible, NotBinary, List("pkipath"))
- lazy val `pkixcmp`: MediaType =
- new MediaType("application", "pkixcmp", Compressible, NotBinary, List("pki"))
- lazy val `pls+xml`: MediaType =
- new MediaType("application", "pls+xml", Compressible, NotBinary, List("pls"))
- lazy val `poc-settings+xml`: MediaType =
- new MediaType("application", "poc-settings+xml", Compressible, NotBinary)
- lazy val `postscript`: MediaType =
- new MediaType("application", "postscript", Compressible, Binary, List("ai", "eps", "ps"))
- lazy val `ppsp-tracker+json`: MediaType =
- new MediaType("application", "ppsp-tracker+json", Compressible, NotBinary)
- lazy val `problem+json`: MediaType =
- new MediaType("application", "problem+json", Compressible, Binary)
- lazy val `problem+xml`: MediaType =
- new MediaType("application", "problem+xml", Compressible, NotBinary)
- lazy val `provenance+xml`: MediaType =
- new MediaType("application", "provenance+xml", Compressible, NotBinary, List("provx"))
- lazy val `prs.alvestrand.titrax-sheet`: MediaType =
- new MediaType("application", "prs.alvestrand.titrax-sheet", Compressible, NotBinary)
- lazy val `prs.cww`: MediaType =
- new MediaType("application", "prs.cww", Compressible, NotBinary, List("cww"))
- lazy val `prs.cyn`: MediaType =
- new MediaType("application", "prs.cyn", Compressible, NotBinary)
- lazy val `prs.hpub+zip`: MediaType =
- new MediaType("application", "prs.hpub+zip", Uncompressible, NotBinary)
- lazy val `prs.nprend`: MediaType =
- new MediaType("application", "prs.nprend", Compressible, NotBinary)
- lazy val `prs.plucker`: MediaType =
- new MediaType("application", "prs.plucker", Compressible, NotBinary)
- lazy val `prs.rdf-xml-crypt`: MediaType =
- new MediaType("application", "prs.rdf-xml-crypt", Compressible, NotBinary)
- lazy val `prs.xsf+xml`: MediaType =
- new MediaType("application", "prs.xsf+xml", Compressible, NotBinary)
- lazy val `pskc+xml`: MediaType =
- new MediaType("application", "pskc+xml", Compressible, NotBinary, List("pskcxml"))
- lazy val `pvd+json`: MediaType =
- new MediaType("application", "pvd+json", Compressible, NotBinary)
- lazy val `qsig`: MediaType = new MediaType("application", "qsig", Compressible, NotBinary)
- lazy val `raml+yaml`: MediaType =
- new MediaType("application", "raml+yaml", Compressible, NotBinary, List("raml"))
- lazy val `raptorfec`: MediaType =
- new MediaType("application", "raptorfec", Compressible, NotBinary)
- lazy val `rdap+json`: MediaType =
- new MediaType("application", "rdap+json", Compressible, NotBinary)
- lazy val `rdf+xml`: MediaType =
- new MediaType("application", "rdf+xml", Compressible, NotBinary, List("rdf", "owl"))
- lazy val `reginfo+xml`: MediaType =
- new MediaType("application", "reginfo+xml", Compressible, NotBinary, List("rif"))
- lazy val `relax-ng-compact-syntax`: MediaType = new MediaType(
+
+ lazy val `atomcat+xml`: MediaType =
+ new MediaType("application", "atomcat+xml", compressible = true, binary = true, List("atomcat"))
+
+ lazy val `dash+xml`: MediaType =
+ new MediaType("application", "dash+xml", compressible = true, binary = true, List("mpd"))
+
+ lazy val `vnd.uri-map`: MediaType =
+ new MediaType("application", "vnd.uri-map", compressible = false, binary = true)
+
+ lazy val `vnd.radisys.msml-dialog-group+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog-group+xml", compressible = true, binary = true)
+
+ lazy val `xcap-diff+xml`: MediaType =
+ new MediaType("application", "xcap-diff+xml", compressible = true, binary = true, List("xdf"))
+
+ lazy val `tamp-apex-update-confirm`: MediaType =
+ new MediaType("application", "tamp-apex-update-confirm", compressible = false, binary = true)
+
+ lazy val `vnd.ms-ims`: MediaType =
+ new MediaType("application", "vnd.ms-ims", compressible = false, binary = true, List("ims"))
+
+ lazy val `x-virtualbox-vbox-extpack`: MediaType =
+ new MediaType(
"application",
- "relax-ng-compact-syntax",
- Compressible,
- NotBinary,
- List("rnc"),
+ "x-virtualbox-vbox-extpack",
+ compressible = false,
+ binary = true,
+ List("vbox-extpack"),
)
- lazy val `remote-printing`: MediaType =
- new MediaType("application", "remote-printing", Compressible, NotBinary)
- lazy val `reputon+json`: MediaType =
- new MediaType("application", "reputon+json", Compressible, NotBinary)
- lazy val `resource-lists+xml`: MediaType =
- new MediaType("application", "resource-lists+xml", Compressible, NotBinary, List("rl"))
- lazy val `resource-lists-diff+xml`: MediaType = new MediaType(
+
+ lazy val `concise-problem-details+cbor`: MediaType =
+ new MediaType("application", "concise-problem-details+cbor", compressible = false, binary = true)
+
+ lazy val `alto-networkmapfilter+json`: MediaType =
+ new MediaType("application", "alto-networkmapfilter+json", compressible = true, binary = false)
+
+ lazy val `vnd.noblenet-web`: MediaType =
+ new MediaType("application", "vnd.noblenet-web", compressible = false, binary = true, List("nnw"))
+
+ lazy val `vnd.tableschema+json`: MediaType =
+ new MediaType("application", "vnd.tableschema+json", compressible = true, binary = false)
+
+ lazy val `elm+xml`: MediaType =
+ new MediaType("application", "elm+xml", compressible = true, binary = true)
+
+ lazy val `x-dvi`: MediaType =
+ new MediaType("application", "x-dvi", compressible = false, binary = true, List("dvi"))
+
+ lazy val `vnd.nokia.iptv.config+xml`: MediaType =
+ new MediaType("application", "vnd.nokia.iptv.config+xml", compressible = true, binary = true)
+
+ lazy val `whoispp-response`: MediaType =
+ new MediaType("application", "whoispp-response", compressible = false, binary = true)
+
+ lazy val `vnd.afpc.foca-codedfont`: MediaType =
+ new MediaType("application", "vnd.afpc.foca-codedfont", compressible = false, binary = true)
+
+ lazy val `x-msmediaview`: MediaType =
+ new MediaType("application", "x-msmediaview", compressible = false, binary = true, List("mvb", "m13", "m14"))
+
+ lazy val `emergencycalldata.serviceinfo+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.serviceinfo+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sbm.cid`: MediaType =
+ new MediaType("application", "vnd.sbm.cid", compressible = false, binary = true)
+
+ lazy val `vnd.yamaha.smaf-audio`: MediaType =
+ new MediaType("application", "vnd.yamaha.smaf-audio", compressible = false, binary = true, List("saf"))
+
+ lazy val `vnd.3gpp.mcptt-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oipf.userprofile+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.userprofile+xml", compressible = true, binary = true)
+
+ lazy val `vnd.eln+zip`: MediaType =
+ new MediaType("application", "vnd.eln+zip", compressible = false, binary = true)
+
+ lazy val `cose`: MediaType =
+ new MediaType("application", "cose", compressible = false, binary = true)
+
+ lazy val `prs.rdf-xml-crypt`: MediaType =
+ new MediaType("application", "prs.rdf-xml-crypt", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.image-template`: MediaType =
+ new MediaType(
"application",
- "resource-lists-diff+xml",
- Compressible,
- NotBinary,
- List("rld"),
+ "vnd.oasis.opendocument.image-template",
+ compressible = false,
+ binary = true,
+ List("oti"),
)
- lazy val `rfc+xml`: MediaType =
- new MediaType("application", "rfc+xml", Compressible, NotBinary)
- lazy val `riscos`: MediaType = new MediaType("application", "riscos", Compressible, NotBinary)
- lazy val `rlmi+xml`: MediaType =
- new MediaType("application", "rlmi+xml", Compressible, NotBinary)
- lazy val `rls-services+xml`: MediaType =
- new MediaType("application", "rls-services+xml", Compressible, NotBinary, List("rs"))
- lazy val `route-apd+xml`: MediaType =
- new MediaType("application", "route-apd+xml", Compressible, NotBinary, List("rapd"))
- lazy val `route-s-tsid+xml`: MediaType =
- new MediaType("application", "route-s-tsid+xml", Compressible, NotBinary, List("sls"))
- lazy val `route-usd+xml`: MediaType =
- new MediaType("application", "route-usd+xml", Compressible, NotBinary, List("rusd"))
- lazy val `rpki-ghostbusters`: MediaType =
- new MediaType("application", "rpki-ghostbusters", Compressible, NotBinary, List("gbr"))
- lazy val `rpki-manifest`: MediaType =
- new MediaType("application", "rpki-manifest", Compressible, NotBinary, List("mft"))
- lazy val `rpki-publication`: MediaType =
- new MediaType("application", "rpki-publication", Compressible, NotBinary)
- lazy val `rpki-roa`: MediaType =
- new MediaType("application", "rpki-roa", Compressible, NotBinary, List("roa"))
- lazy val `rpki-updown`: MediaType =
- new MediaType("application", "rpki-updown", Compressible, NotBinary)
- lazy val `rsd+xml`: MediaType =
- new MediaType("application", "rsd+xml", Compressible, NotBinary, List("rsd"))
- lazy val `rss+xml`: MediaType =
- new MediaType("application", "rss+xml", Compressible, NotBinary, List("rss"))
- lazy val `rtf`: MediaType =
- new MediaType("application", "rtf", Compressible, NotBinary, List("rtf"))
- lazy val `rtploopback`: MediaType =
- new MediaType("application", "rtploopback", Compressible, NotBinary)
- lazy val `rtx`: MediaType = new MediaType("application", "rtx", Compressible, NotBinary)
- lazy val `samlassertion+xml`: MediaType =
- new MediaType("application", "samlassertion+xml", Compressible, NotBinary)
- lazy val `samlmetadata+xml`: MediaType =
- new MediaType("application", "samlmetadata+xml", Compressible, NotBinary)
- lazy val `sarif+json`: MediaType =
- new MediaType("application", "sarif+json", Compressible, NotBinary)
- lazy val `sarif-external-properties+json`: MediaType =
- new MediaType("application", "sarif-external-properties+json", Compressible, NotBinary)
- lazy val `sbe`: MediaType = new MediaType("application", "sbe", Compressible, NotBinary)
- lazy val `sbml+xml`: MediaType =
- new MediaType("application", "sbml+xml", Compressible, NotBinary, List("sbml"))
- lazy val `scaip+xml`: MediaType =
- new MediaType("application", "scaip+xml", Compressible, NotBinary)
- lazy val `scim+json`: MediaType =
- new MediaType("application", "scim+json", Compressible, NotBinary)
- lazy val `scvp-cv-request`: MediaType =
- new MediaType("application", "scvp-cv-request", Compressible, NotBinary, List("scq"))
- lazy val `scvp-cv-response`: MediaType =
- new MediaType("application", "scvp-cv-response", Compressible, NotBinary, List("scs"))
- lazy val `scvp-vp-request`: MediaType =
- new MediaType("application", "scvp-vp-request", Compressible, NotBinary, List("spq"))
- lazy val `scvp-vp-response`: MediaType =
- new MediaType("application", "scvp-vp-response", Compressible, NotBinary, List("spp"))
- lazy val `sdp`: MediaType =
- new MediaType("application", "sdp", Compressible, NotBinary, List("sdp"))
- lazy val `secevent+jwt`: MediaType =
- new MediaType("application", "secevent+jwt", Compressible, NotBinary)
- lazy val `senml+cbor`: MediaType =
- new MediaType("application", "senml+cbor", Compressible, NotBinary)
- lazy val `senml+json`: MediaType =
- new MediaType("application", "senml+json", Compressible, NotBinary)
- lazy val `senml+xml`: MediaType =
- new MediaType("application", "senml+xml", Compressible, NotBinary, List("senmlx"))
- lazy val `senml-etch+cbor`: MediaType =
- new MediaType("application", "senml-etch+cbor", Compressible, NotBinary)
- lazy val `senml-etch+json`: MediaType =
- new MediaType("application", "senml-etch+json", Compressible, NotBinary)
- lazy val `senml-exi`: MediaType =
- new MediaType("application", "senml-exi", Compressible, NotBinary)
- lazy val `sensml+cbor`: MediaType =
- new MediaType("application", "sensml+cbor", Compressible, NotBinary)
- lazy val `sensml+json`: MediaType =
- new MediaType("application", "sensml+json", Compressible, NotBinary)
- lazy val `sensml+xml`: MediaType =
- new MediaType("application", "sensml+xml", Compressible, NotBinary, List("sensmlx"))
- lazy val `sensml-exi`: MediaType =
- new MediaType("application", "sensml-exi", Compressible, NotBinary)
- lazy val `sep+xml`: MediaType =
- new MediaType("application", "sep+xml", Compressible, NotBinary)
- lazy val `sep-exi`: MediaType =
- new MediaType("application", "sep-exi", Compressible, NotBinary)
- lazy val `session-info`: MediaType =
- new MediaType("application", "session-info", Compressible, NotBinary)
- lazy val `set-payment`: MediaType =
- new MediaType("application", "set-payment", Compressible, NotBinary)
- lazy val `set-payment-initiation`: MediaType = new MediaType(
+
+ lazy val `vnd.innopath.wamp.notification`: MediaType =
+ new MediaType("application", "vnd.innopath.wamp.notification", compressible = false, binary = true)
+
+ lazy val `vnd.evolv.ecig.theme`: MediaType =
+ new MediaType("application", "vnd.evolv.ecig.theme", compressible = false, binary = true)
+
+ lazy val `vnd.onepagertat`: MediaType =
+ new MediaType("application", "vnd.onepagertat", compressible = false, binary = true)
+
+ lazy val `vnd.wolfram.mathematica`: MediaType =
+ new MediaType("application", "vnd.wolfram.mathematica", compressible = false, binary = true)
+
+ lazy val `vnd.pwg-xhtml-print+xml`: MediaType =
+ new MediaType("application", "vnd.pwg-xhtml-print+xml", compressible = true, binary = true, List("xhtm"))
+
+ lazy val `vnd.gnu.taler.merchant+json`: MediaType =
+ new MediaType("application", "vnd.gnu.taler.merchant+json", compressible = true, binary = false)
+
+ lazy val `voicexml+xml`: MediaType =
+ new MediaType("application", "voicexml+xml", compressible = true, binary = true, List("vxml"))
+
+ lazy val `vnd.geospace`: MediaType =
+ new MediaType("application", "vnd.geospace", compressible = false, binary = true, List("g3w"))
+
+ lazy val `vnd.vd-study`: MediaType =
+ new MediaType("application", "vnd.vd-study", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcvideo-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-info+xml", compressible = true, binary = true)
+
+ lazy val `sbe`: MediaType =
+ new MediaType("application", "sbe", compressible = false, binary = true)
+
+ lazy val `x-chrome-extension`: MediaType =
+ new MediaType("application", "x-chrome-extension", compressible = false, binary = true, List("crx"))
+
+ lazy val `vnd.omads-email+xml`: MediaType =
+ new MediaType("application", "vnd.omads-email+xml", compressible = true, binary = true)
+
+ lazy val `x-ms-wmz`: MediaType =
+ new MediaType("application", "x-ms-wmz", compressible = false, binary = true, List("wmz"))
+
+ lazy val `vnd.apache.arrow.stream`: MediaType =
+ new MediaType("application", "vnd.apache.arrow.stream", compressible = false, binary = true)
+
+ lazy val `vnd.kde.kchart`: MediaType =
+ new MediaType("application", "vnd.kde.kchart", compressible = false, binary = true, List("chrt"))
+
+ lazy val `vnd.crick.clicker.keyboard`: MediaType =
+ new MediaType("application", "vnd.crick.clicker.keyboard", compressible = false, binary = true, List("clkk"))
+
+ lazy val `vnd.loom`: MediaType =
+ new MediaType("application", "vnd.loom", compressible = false, binary = true)
+
+ lazy val `vnd.sqlite3`: MediaType =
+ new MediaType("application", "vnd.sqlite3", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.mlp`: MediaType =
+ new MediaType("application", "vnd.dolby.mlp", compressible = false, binary = true, List("mlp"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sheet`: MediaType =
+ new MediaType(
"application",
- "set-payment-initiation",
- Compressible,
- NotBinary,
- List("setpay"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+ compressible = false,
+ binary = true,
+ List("xlsx"),
)
- lazy val `set-registration`: MediaType =
- new MediaType("application", "set-registration", Compressible, NotBinary)
- lazy val `set-registration-initiation`: MediaType = new MediaType(
+
+ lazy val `vnd.stardivision.impress`: MediaType =
+ new MediaType("application", "vnd.stardivision.impress", compressible = false, binary = true, List("sdd"))
+
+ lazy val `vnd.mozilla.xul+xml`: MediaType =
+ new MediaType("application", "vnd.mozilla.xul+xml", compressible = true, binary = true, List("xul"))
+
+ lazy val `x-zmachine`: MediaType =
+ new MediaType(
"application",
- "set-registration-initiation",
- Compressible,
- NotBinary,
- List("setreg"),
+ "x-zmachine",
+ compressible = false,
+ binary = true,
+ List("z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"),
)
- lazy val `sgml`: MediaType = new MediaType("application", "sgml", Compressible, NotBinary)
- lazy val `sgml-open-catalog`: MediaType =
- new MediaType("application", "sgml-open-catalog", Compressible, NotBinary)
- lazy val `shf+xml`: MediaType =
- new MediaType("application", "shf+xml", Compressible, NotBinary, List("shf"))
- lazy val `sieve`: MediaType =
- new MediaType("application", "sieve", Compressible, NotBinary, List("siv", "sieve"))
- lazy val `simple-filter+xml`: MediaType =
- new MediaType("application", "simple-filter+xml", Compressible, NotBinary)
- lazy val `simple-message-summary`: MediaType =
- new MediaType("application", "simple-message-summary", Compressible, NotBinary)
- lazy val `simplesymbolcontainer`: MediaType =
- new MediaType("application", "simplesymbolcontainer", Compressible, NotBinary)
- lazy val `sipc`: MediaType = new MediaType("application", "sipc", Compressible, NotBinary)
- lazy val `slate`: MediaType = new MediaType("application", "slate", Compressible, NotBinary)
- lazy val `smil`: MediaType = new MediaType("application", "smil", Compressible, NotBinary)
- lazy val `smil+xml`: MediaType =
- new MediaType("application", "smil+xml", Compressible, NotBinary, List("smi", "smil"))
- lazy val `smpte336m`: MediaType =
- new MediaType("application", "smpte336m", Compressible, NotBinary)
- lazy val `soap+fastinfoset`: MediaType =
- new MediaType("application", "soap+fastinfoset", Compressible, NotBinary)
- lazy val `soap+xml`: MediaType =
- new MediaType("application", "soap+xml", Compressible, NotBinary)
- lazy val `sparql-query`: MediaType =
- new MediaType("application", "sparql-query", Compressible, NotBinary, List("rq"))
- lazy val `sparql-results+xml`: MediaType =
- new MediaType("application", "sparql-results+xml", Compressible, NotBinary, List("srx"))
- lazy val `spirits-event+xml`: MediaType =
- new MediaType("application", "spirits-event+xml", Compressible, NotBinary)
- lazy val `sql`: MediaType = new MediaType("application", "sql", Compressible, NotBinary)
- lazy val `srgs`: MediaType =
- new MediaType("application", "srgs", Compressible, NotBinary, List("gram"))
- lazy val `srgs+xml`: MediaType =
- new MediaType("application", "srgs+xml", Compressible, NotBinary, List("grxml"))
- lazy val `sru+xml`: MediaType =
- new MediaType("application", "sru+xml", Compressible, NotBinary, List("sru"))
- lazy val `ssdl+xml`: MediaType =
- new MediaType("application", "ssdl+xml", Compressible, NotBinary, List("ssdl"))
- lazy val `ssml+xml`: MediaType =
- new MediaType("application", "ssml+xml", Compressible, NotBinary, List("ssml"))
- lazy val `stix+json`: MediaType =
- new MediaType("application", "stix+json", Compressible, NotBinary)
- lazy val `swid+xml`: MediaType =
- new MediaType("application", "swid+xml", Compressible, NotBinary, List("swidtag"))
- lazy val `tamp-apex-update`: MediaType =
- new MediaType("application", "tamp-apex-update", Compressible, NotBinary)
- lazy val `tamp-apex-update-confirm`: MediaType =
- new MediaType("application", "tamp-apex-update-confirm", Compressible, NotBinary)
- lazy val `tamp-community-update`: MediaType =
- new MediaType("application", "tamp-community-update", Compressible, NotBinary)
- lazy val `tamp-community-update-confirm`: MediaType =
- new MediaType("application", "tamp-community-update-confirm", Compressible, NotBinary)
- lazy val `tamp-error`: MediaType =
- new MediaType("application", "tamp-error", Compressible, NotBinary)
- lazy val `tamp-sequence-adjust`: MediaType =
- new MediaType("application", "tamp-sequence-adjust", Compressible, NotBinary)
- lazy val `tamp-sequence-adjust-confirm`: MediaType =
- new MediaType("application", "tamp-sequence-adjust-confirm", Compressible, NotBinary)
- lazy val `tamp-status-query`: MediaType =
- new MediaType("application", "tamp-status-query", Compressible, NotBinary)
- lazy val `tamp-status-response`: MediaType =
- new MediaType("application", "tamp-status-response", Compressible, NotBinary)
- lazy val `tamp-update`: MediaType =
- new MediaType("application", "tamp-update", Compressible, NotBinary)
- lazy val `tamp-update-confirm`: MediaType =
- new MediaType("application", "tamp-update-confirm", Compressible, NotBinary)
- lazy val `tar`: MediaType = new MediaType("application", "tar", Compressible, NotBinary)
- lazy val `taxii+json`: MediaType =
- new MediaType("application", "taxii+json", Compressible, NotBinary)
- lazy val `td+json`: MediaType =
- new MediaType("application", "td+json", Compressible, NotBinary)
- lazy val `tei+xml`: MediaType =
- new MediaType("application", "tei+xml", Compressible, NotBinary, List("tei", "teicorpus"))
- lazy val `tetra_isi`: MediaType =
- new MediaType("application", "tetra_isi", Compressible, NotBinary)
- lazy val `thraud+xml`: MediaType =
- new MediaType("application", "thraud+xml", Compressible, NotBinary, List("tfi"))
- lazy val `timestamp-query`: MediaType =
- new MediaType("application", "timestamp-query", Compressible, NotBinary)
- lazy val `timestamp-reply`: MediaType =
- new MediaType("application", "timestamp-reply", Compressible, NotBinary)
- lazy val `timestamped-data`: MediaType =
- new MediaType("application", "timestamped-data", Compressible, NotBinary, List("tsd"))
- lazy val `tlsrpt+gzip`: MediaType =
- new MediaType("application", "tlsrpt+gzip", Compressible, NotBinary)
- lazy val `tlsrpt+json`: MediaType =
- new MediaType("application", "tlsrpt+json", Compressible, NotBinary)
- lazy val `tnauthlist`: MediaType =
- new MediaType("application", "tnauthlist", Compressible, NotBinary)
- lazy val `toml`: MediaType =
- new MediaType("application", "toml", Compressible, NotBinary, List("toml"))
- lazy val `trickle-ice-sdpfrag`: MediaType =
- new MediaType("application", "trickle-ice-sdpfrag", Compressible, NotBinary)
- lazy val `trig`: MediaType =
- new MediaType("application", "trig", Compressible, NotBinary, List("trig"))
- lazy val `ttml+xml`: MediaType =
- new MediaType("application", "ttml+xml", Compressible, NotBinary, List("ttml"))
- lazy val `tve-trigger`: MediaType =
- new MediaType("application", "tve-trigger", Compressible, NotBinary)
- lazy val `tzif`: MediaType = new MediaType("application", "tzif", Compressible, NotBinary)
- lazy val `tzif-leap`: MediaType =
- new MediaType("application", "tzif-leap", Compressible, NotBinary)
- lazy val `ubjson`: MediaType =
- new MediaType("application", "ubjson", Uncompressible, NotBinary, List("ubj"))
- lazy val `ulpfec`: MediaType = new MediaType("application", "ulpfec", Compressible, NotBinary)
- lazy val `urc-grpsheet+xml`: MediaType =
- new MediaType("application", "urc-grpsheet+xml", Compressible, NotBinary)
- lazy val `urc-ressheet+xml`: MediaType =
- new MediaType("application", "urc-ressheet+xml", Compressible, NotBinary, List("rsheet"))
- lazy val `urc-targetdesc+xml`: MediaType =
- new MediaType("application", "urc-targetdesc+xml", Compressible, NotBinary, List("td"))
- lazy val `urc-uisocketdesc+xml`: MediaType =
- new MediaType("application", "urc-uisocketdesc+xml", Compressible, NotBinary)
- lazy val `vcard+json`: MediaType =
- new MediaType("application", "vcard+json", Compressible, NotBinary)
- lazy val `vcard+xml`: MediaType =
- new MediaType("application", "vcard+xml", Compressible, NotBinary)
- lazy val `vemmi`: MediaType = new MediaType("application", "vemmi", Compressible, NotBinary)
- lazy val `vividence.scriptfile`: MediaType =
- new MediaType("application", "vividence.scriptfile", Compressible, NotBinary)
- lazy val `vnd.1000minds.decision-model+xml`: MediaType = new MediaType(
- "application",
- "vnd.1000minds.decision-model+xml",
- Compressible,
- NotBinary,
- List("1km"),
- )
- lazy val `vnd.3gpp-prose+xml`: MediaType =
- new MediaType("application", "vnd.3gpp-prose+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp-prose-pc3ch+xml`: MediaType =
- new MediaType("application", "vnd.3gpp-prose-pc3ch+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp-v2x-local-service-information`: MediaType = new MediaType(
- "application",
- "vnd.3gpp-v2x-local-service-information",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.3gpp.5gnas`: MediaType =
- new MediaType("application", "vnd.3gpp.5gnas", Compressible, NotBinary)
- lazy val `vnd.3gpp.access-transfer-events+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.access-transfer-events+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.bsf+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.bsf+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.gmop+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.gmop+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.gtpc`: MediaType =
- new MediaType("application", "vnd.3gpp.gtpc", Compressible, NotBinary)
- lazy val `vnd.3gpp.interworking-data`: MediaType =
- new MediaType("application", "vnd.3gpp.interworking-data", Compressible, NotBinary)
- lazy val `vnd.3gpp.lpp`: MediaType =
- new MediaType("application", "vnd.3gpp.lpp", Compressible, NotBinary)
- lazy val `vnd.3gpp.mc-signalling-ear`: MediaType =
- new MediaType("application", "vnd.3gpp.mc-signalling-ear", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcdata-affiliation-command+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.3gpp.mc-signalling-ear`: MediaType =
+ new MediaType("application", "vnd.3gpp.mc-signalling-ear", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.notif-aggregate-root+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-aggregate-root+xml", compressible = true, binary = true)
+
+ lazy val `vnd.noblenet-directory`: MediaType =
+ new MediaType("application", "vnd.noblenet-directory", compressible = false, binary = true, List("nnd"))
+
+ lazy val `automationml-aml+xml`: MediaType =
+ new MediaType("application", "automationml-aml+xml", compressible = true, binary = true, List("aml"))
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.3gpp.mcdata-affiliation-command+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.3gpp.mcdata-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcdata-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcdata-payload`: MediaType =
- new MediaType("application", "vnd.3gpp.mcdata-payload", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcdata-service-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcdata-service-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcdata-signalling`: MediaType =
- new MediaType("application", "vnd.3gpp.mcdata-signalling", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcdata-ue-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcdata-ue-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcdata-user-profile+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcdata-user-profile+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-affiliation-command+xml`: MediaType = new MediaType(
+
+ lazy val `x-httpd-php`: MediaType =
+ new MediaType("application", "x-httpd-php", compressible = true, binary = true, List("php"))
+
+ lazy val `vnd.pwg-multiplexed`: MediaType =
+ new MediaType("application", "vnd.pwg-multiplexed", compressible = false, binary = true)
+
+ lazy val `vnd.pawaafile`: MediaType =
+ new MediaType("application", "vnd.pawaafile", compressible = false, binary = true, List("paw"))
+
+ lazy val `activemessage`: MediaType =
+ new MediaType("application", "activemessage", compressible = false, binary = true)
+
+ lazy val `vnd.balsamiq.bmml+xml`: MediaType =
+ new MediaType("application", "vnd.balsamiq.bmml+xml", compressible = true, binary = true, List("bmml"))
+
+ lazy val `emergencycalldata.deviceinfo+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.deviceinfo+xml", compressible = true, binary = true)
+
+ lazy val `vnd.android.ota`: MediaType =
+ new MediaType("application", "vnd.android.ota", compressible = false, binary = true)
+
+ lazy val `vnd.motorola.flexsuite.kmr`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite.kmr", compressible = false, binary = true)
+
+ lazy val `csvm+json`: MediaType =
+ new MediaType("application", "csvm+json", compressible = true, binary = false)
+
+ lazy val `vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.3gpp.mcptt-affiliation-command+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.3gpp.mcptt-floor-request+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-floor-request+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-location-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-location-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-mbms-usage-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-mbms-usage-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-service-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-service-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-signed+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-signed+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-ue-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-ue-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-ue-init-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-ue-init-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcptt-user-profile+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcptt-user-profile+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcvideo-affiliation-command+xml`: MediaType = new MediaType(
+
+ lazy val `x-texinfo`: MediaType =
+ new MediaType("application", "x-texinfo", compressible = false, binary = true, List("texinfo", "texi"))
+
+ lazy val `vnd.fujitsu.oasysgp`: MediaType =
+ new MediaType("application", "vnd.fujitsu.oasysgp", compressible = false, binary = true, List("fg5"))
+
+ lazy val `vividence.scriptfile`: MediaType =
+ new MediaType("application", "vividence.scriptfile", compressible = false, binary = true)
+
+ lazy val `vnd.crick.clicker`: MediaType =
+ new MediaType("application", "vnd.crick.clicker", compressible = false, binary = true, List("clkx"))
+
+ lazy val `vnd.rainstor.data`: MediaType =
+ new MediaType("application", "vnd.rainstor.data", compressible = false, binary = true)
+
+ lazy val `shf+xml`: MediaType =
+ new MediaType("application", "shf+xml", compressible = true, binary = true, List("shf"))
+
+ lazy val `vnd.etsi.cug+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.cug+xml", compressible = true, binary = true)
+
+ lazy val `senml-etch+json`: MediaType =
+ new MediaType("application", "senml-etch+json", compressible = true, binary = false)
+
+ lazy val `cccex`: MediaType =
+ new MediaType("application", "cccex", compressible = false, binary = true)
+
+ lazy val `vnd.d2l.coursepackage1p0+zip`: MediaType =
+ new MediaType("application", "vnd.d2l.coursepackage1p0+zip", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.3gpp.mcvideo-affiliation-command+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.3gpp.mcvideo-affiliation-info+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.3gpp.mcvideo-affiliation-info+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.3gpp.mcvideo-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcvideo-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcvideo-location-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcvideo-location-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcvideo-mbms-usage-info+xml`: MediaType = new MediaType(
+
+ lazy val `prs.plucker`: MediaType =
+ new MediaType("application", "prs.plucker", compressible = false, binary = true)
+
+ lazy val `vnd.dxr`: MediaType =
+ new MediaType("application", "vnd.dxr", compressible = false, binary = true)
+
+ lazy val `vnd.ecowin.chart`: MediaType =
+ new MediaType("application", "vnd.ecowin.chart", compressible = false, binary = true, List("mag"))
+
+ lazy val `vnd.etsi.aoc+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.aoc+xml", compressible = true, binary = true)
+
+ lazy val `atsc-rsat+xml`: MediaType =
+ new MediaType("application", "atsc-rsat+xml", compressible = true, binary = true, List("rsat"))
+
+ lazy val `vnd.cinderella`: MediaType =
+ new MediaType("application", "vnd.cinderella", compressible = false, binary = true, List("cdy"))
+
+ lazy val `vnd.renlearn.rlprint`: MediaType =
+ new MediaType("application", "vnd.renlearn.rlprint", compressible = false, binary = true)
+
+ lazy val `dart`: MediaType =
+ new MediaType("application", "dart", compressible = true, binary = true)
+
+ lazy val `json-patch+json`: MediaType =
+ new MediaType("application", "json-patch+json", compressible = true, binary = false)
+
+ lazy val `scim+json`: MediaType =
+ new MediaType("application", "scim+json", compressible = true, binary = false)
+
+ lazy val `pgp-keys`: MediaType =
+ new MediaType("application", "pgp-keys", compressible = false, binary = true, List("asc"))
+
+ lazy val `vnd.3gpp.mcptt-signed+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-signed+xml", compressible = true, binary = true)
+
+ lazy val `x-tex`: MediaType =
+ new MediaType("application", "x-tex", compressible = false, binary = true, List("tex"))
+
+ lazy val `x-shar`: MediaType =
+ new MediaType("application", "x-shar", compressible = false, binary = true, List("shar"))
+
+ lazy val `lgr+xml`: MediaType =
+ new MediaType("application", "lgr+xml", compressible = true, binary = true, List("lgr"))
+
+ lazy val `x-dgc-compressed`: MediaType =
+ new MediaType("application", "x-dgc-compressed", compressible = false, binary = true, List("dgc"))
+
+ lazy val `vnd.intertrust.nncp`: MediaType =
+ new MediaType("application", "vnd.intertrust.nncp", compressible = false, binary = true)
+
+ lazy val `vnd.ms-xpsdocument`: MediaType =
+ new MediaType("application", "vnd.ms-xpsdocument", compressible = false, binary = true, List("xps"))
+
+ lazy val `1d-interleaved-parityfec`: MediaType =
+ new MediaType("application", "1d-interleaved-parityfec", compressible = false, binary = true)
+
+ lazy val `vnd.artisan+json`: MediaType =
+ new MediaType("application", "vnd.artisan+json", compressible = true, binary = false)
+
+ lazy val `vnd.etsi.iptvservice+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvservice+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sun.xml.impress`: MediaType =
+ new MediaType("application", "vnd.sun.xml.impress", compressible = false, binary = true, List("sxi"))
+
+ lazy val `vnd.fujixerox.art4`: MediaType =
+ new MediaType("application", "vnd.fujixerox.art4", compressible = false, binary = true)
+
+ lazy val `atsc-held+xml`: MediaType =
+ new MediaType("application", "atsc-held+xml", compressible = true, binary = true, List("held"))
+
+ lazy val `tamp-update-confirm`: MediaType =
+ new MediaType("application", "tamp-update-confirm", compressible = false, binary = true)
+
+ lazy val `vnd.sigrok.session`: MediaType =
+ new MediaType("application", "vnd.sigrok.session", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.notif-container+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-container+xml", compressible = true, binary = true)
+
+ lazy val `nss`: MediaType =
+ new MediaType("application", "nss", compressible = false, binary = true)
+
+ lazy val `vnd.denovo.fcselayout-link`: MediaType =
+ new MediaType("application", "vnd.denovo.fcselayout-link", compressible = false, binary = true, List("fe_launch"))
+
+ lazy val `vnd.etsi.asic-s+zip`: MediaType =
+ new MediaType("application", "vnd.etsi.asic-s+zip", compressible = false, binary = true)
+
+ lazy val `senml+json`: MediaType =
+ new MediaType("application", "senml+json", compressible = true, binary = false)
+
+ lazy val `vnd.nokia.pcd+wbxml`: MediaType =
+ new MediaType("application", "vnd.nokia.pcd+wbxml", compressible = false, binary = true)
+
+ lazy val `city+json`: MediaType =
+ new MediaType("application", "city+json", compressible = true, binary = false)
+
+ lazy val `vnd.openxmlformats-officedocument.theme+xml`: MediaType =
+ new MediaType("application", "vnd.openxmlformats-officedocument.theme+xml", compressible = true, binary = true)
+
+ lazy val `dit`: MediaType =
+ new MediaType("application", "dit", compressible = false, binary = true)
+
+ lazy val `p21`: MediaType =
+ new MediaType("application", "p21", compressible = false, binary = true)
+
+ lazy val `cals-1840`: MediaType =
+ new MediaType("application", "cals-1840", compressible = false, binary = true)
+
+ lazy val `yang-data+json`: MediaType =
+ new MediaType("application", "yang-data+json", compressible = true, binary = false)
+
+ lazy val `vnd.nokia.n-gage.symbian.install`: MediaType =
+ new MediaType(
"application",
- "vnd.3gpp.mcvideo-mbms-usage-info+xml",
- Compressible,
- NotBinary,
+ "vnd.nokia.n-gage.symbian.install",
+ compressible = false,
+ binary = true,
+ List("n-gage"),
)
- lazy val `vnd.3gpp.mcvideo-service-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcvideo-service-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcvideo-transmission-request+xml`: MediaType = new MediaType(
+
+ lazy val `encaprtp`: MediaType =
+ new MediaType("application", "encaprtp", compressible = false, binary = true)
+
+ lazy val `vnd.ms-windows.devicepairing`: MediaType =
+ new MediaType("application", "vnd.ms-windows.devicepairing", compressible = false, binary = true)
+
+ lazy val `vnd.japannet-payment-wakeup`: MediaType =
+ new MediaType("application", "vnd.japannet-payment-wakeup", compressible = false, binary = true)
+
+ lazy val `problem+xml`: MediaType =
+ new MediaType("application", "problem+xml", compressible = true, binary = true)
+
+ lazy val `vnd.cluetrust.cartomobile-config-pkg`: MediaType =
+ new MediaType(
"application",
- "vnd.3gpp.mcvideo-transmission-request+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.3gpp.mcvideo-ue-config+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcvideo-ue-config+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mcvideo-user-profile+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mcvideo-user-profile+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.mid-call+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.mid-call+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.ngap`: MediaType =
- new MediaType("application", "vnd.3gpp.ngap", Compressible, NotBinary)
- lazy val `vnd.3gpp.pfcp`: MediaType =
- new MediaType("application", "vnd.3gpp.pfcp", Compressible, NotBinary)
- lazy val `vnd.3gpp.pic-bw-large`: MediaType =
- new MediaType("application", "vnd.3gpp.pic-bw-large", Compressible, NotBinary, List("plb"))
- lazy val `vnd.3gpp.pic-bw-small`: MediaType =
- new MediaType("application", "vnd.3gpp.pic-bw-small", Compressible, NotBinary, List("psb"))
- lazy val `vnd.3gpp.pic-bw-var`: MediaType =
- new MediaType("application", "vnd.3gpp.pic-bw-var", Compressible, NotBinary, List("pvb"))
- lazy val `vnd.3gpp.s1ap`: MediaType =
- new MediaType("application", "vnd.3gpp.s1ap", Compressible, NotBinary)
- lazy val `vnd.3gpp.sms`: MediaType =
- new MediaType("application", "vnd.3gpp.sms", Compressible, NotBinary)
- lazy val `vnd.3gpp.sms+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.sms+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.srvcc-ext+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.srvcc-ext+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.srvcc-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.srvcc-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.state-and-event-info+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.state-and-event-info+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp.ussd+xml`: MediaType =
- new MediaType("application", "vnd.3gpp.ussd+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp2.bcmcsinfo+xml`: MediaType =
- new MediaType("application", "vnd.3gpp2.bcmcsinfo+xml", Compressible, NotBinary)
- lazy val `vnd.3gpp2.sms`: MediaType =
- new MediaType("application", "vnd.3gpp2.sms", Compressible, NotBinary)
- lazy val `vnd.3gpp2.tcap`: MediaType =
- new MediaType("application", "vnd.3gpp2.tcap", Compressible, NotBinary, List("tcap"))
- lazy val `vnd.3lightssoftware.imagescal`: MediaType =
- new MediaType("application", "vnd.3lightssoftware.imagescal", Compressible, NotBinary)
- lazy val `vnd.3m.post-it-notes`: MediaType =
- new MediaType("application", "vnd.3m.post-it-notes", Compressible, NotBinary, List("pwn"))
- lazy val `vnd.accpac.simply.aso`: MediaType =
- new MediaType("application", "vnd.accpac.simply.aso", Compressible, NotBinary, List("aso"))
- lazy val `vnd.accpac.simply.imp`: MediaType =
- new MediaType("application", "vnd.accpac.simply.imp", Compressible, NotBinary, List("imp"))
- lazy val `vnd.acucobol`: MediaType =
- new MediaType("application", "vnd.acucobol", Compressible, NotBinary, List("acu"))
- lazy val `vnd.acucorp`: MediaType =
- new MediaType("application", "vnd.acucorp", Compressible, NotBinary, List("atc", "acutc"))
- lazy val part_0: List[MediaType] = List(
- `1d-interleaved-parityfec`,
- `3gpdash-qoe-report+xml`,
- `3gpp-ims+xml`,
- `3gpphal+json`,
- `3gpphalforms+json`,
- `a2l`,
- `activemessage`,
- `activity+json`,
- `alto-costmap+json`,
- `alto-costmapfilter+json`,
- `alto-directory+json`,
- `alto-endpointcost+json`,
- `alto-endpointcostparams+json`,
- `alto-endpointprop+json`,
- `alto-endpointpropparams+json`,
- `alto-error+json`,
- `alto-networkmap+json`,
- `alto-networkmapfilter+json`,
- `alto-updatestreamcontrol+json`,
- `alto-updatestreamparams+json`,
- `aml`,
- `andrew-inset`,
- `applefile`,
- `applixware`,
- `atf`,
- `atfx`,
- `atom+xml`,
- `atomcat+xml`,
- `atomdeleted+xml`,
- `atomicmail`,
- `atomsvc+xml`,
- `atsc-dwd+xml`,
- `atsc-dynamic-event-message`,
- `atsc-held+xml`,
- `atsc-rdt+json`,
- `atsc-rsat+xml`,
- `atxml`,
- `auth-policy+xml`,
- `bacnet-xdd+zip`,
- `batch-smtp`,
- `bdoc`,
- `beep+xml`,
- `calendar+json`,
- `calendar+xml`,
- `call-completion`,
- `cals-1840`,
- `captive+json`,
- `cbor`,
- `cbor-seq`,
- `cccex`,
- `ccmp+xml`,
- `ccxml+xml`,
- `cdfx+xml`,
- `cdmi-capability`,
- `cdmi-container`,
- `cdmi-domain`,
- `cdmi-object`,
- `cdmi-queue`,
- `cdni`,
- `cea`,
- `cea-2018+xml`,
- `cellml+xml`,
- `cfw`,
- `clr`,
- `clue+xml`,
- `clue_info+xml`,
- `cms`,
- `cnrp+xml`,
- `coap-group+json`,
- `coap-payload`,
- `commonground`,
- `conference-info+xml`,
- `cose`,
- `cose-key`,
- `cose-key-set`,
- `cpl+xml`,
- `csrattrs`,
- `csta+xml`,
- `cstadata+xml`,
- `csvm+json`,
- `cu-seeme`,
- `cwt`,
- `cybercash`,
- `dart`,
- `dash+xml`,
- `dashdelta`,
- `davmount+xml`,
- `dca-rft`,
- `dcd`,
- `dec-dx`,
- `dialog-info+xml`,
- `dicom`,
- `dicom+json`,
- `dicom+xml`,
- `dii`,
- `dit`,
- `dns`,
- `dns+json`,
- `dns-message`,
- `docbook+xml`,
- `dots+cbor`,
- `dskpp+xml`,
- `dssc+der`,
- `dssc+xml`,
- `dvcs`,
- `ecmascript`,
- `edi-consent`,
- `edi-x12`,
- `edifact`,
- `efi`,
- `elm+json`,
- `elm+xml`,
- `emergencycalldata.cap+xml`,
- `emergencycalldata.comment+xml`,
- `emergencycalldata.control+xml`,
- `emergencycalldata.deviceinfo+xml`,
- `emergencycalldata.ecall.msd`,
- `emergencycalldata.providerinfo+xml`,
- `emergencycalldata.serviceinfo+xml`,
- `emergencycalldata.subscriberinfo+xml`,
- `emergencycalldata.veds+xml`,
- `emma+xml`,
- `emotionml+xml`,
- `encaprtp`,
- `epp+xml`,
- `epub+zip`,
- `eshop`,
- `exi`,
- `expect-ct-report+json`,
- `fastinfoset`,
- `fastsoap`,
- `fdt+xml`,
- `fhir+json`,
- `fhir+xml`,
- `fido.trusted-apps+json`,
- `fits`,
- `flexfec`,
- `font-sfnt`,
- `font-tdpfr`,
- `font-woff`,
- `framework-attributes+xml`,
- `geo+json`,
- `geo+json-seq`,
- `geopackage+sqlite3`,
- `geoxacml+xml`,
- `gltf-buffer`,
- `gml+xml`,
- `gpx+xml`,
- `gxf`,
- `gzip`,
- `h224`,
- `held+xml`,
- `hjson`,
- `http`,
- `hyperstudio`,
- `ibe-key-request+xml`,
- `ibe-pkg-reply+xml`,
- `ibe-pp-data`,
- `iges`,
- `im-iscomposing+xml`,
- `index`,
- `index.cmd`,
- `index.obj`,
- `index.response`,
- `index.vnd`,
- `inkml+xml`,
- `iotp`,
- `ipfix`,
- `ipp`,
- `isup`,
- `its+xml`,
- `java-archive`,
- `java-serialized-object`,
- `java-vm`,
- `javascript`,
- `jf2feed+json`,
- `jose`,
- `jose+json`,
- `jrd+json`,
- `jscalendar+json`,
- `json`,
- `json-patch+json`,
- `json-seq`,
- `json5`,
- `jsonml+json`,
- `jwk+json`,
- `jwk-set+json`,
- `jwt`,
- `kpml-request+xml`,
- `kpml-response+xml`,
- `ld+json`,
- `lgr+xml`,
- `link-format`,
- `load-control+xml`,
- `lost+xml`,
- `lostsync+xml`,
- `lpf+zip`,
- `lxf`,
- `mac-binhex40`,
- `mac-compactpro`,
- `macwriteii`,
- `mads+xml`,
- `manifest+json`,
- `marc`,
- `marcxml+xml`,
- `mathematica`,
- `mathml+xml`,
- `mathml-content+xml`,
- `mathml-presentation+xml`,
- `mbms-associated-procedure-description+xml`,
- `mbms-deregister+xml`,
- `mbms-envelope+xml`,
- `mbms-msk+xml`,
- `mbms-msk-response+xml`,
- `mbms-protection-description+xml`,
- `mbms-reception-report+xml`,
- `mbms-register+xml`,
- `mbms-register-response+xml`,
- `mbms-schedule+xml`,
- `mbms-user-service-description+xml`,
- `mbox`,
- `media-policy-dataset+xml`,
- `media_control+xml`,
- `mediaservercontrol+xml`,
- `merge-patch+json`,
- `metalink+xml`,
- `metalink4+xml`,
- `mets+xml`,
- `mf4`,
- `mikey`,
- `mipc`,
- `missing-blocks+cbor-seq`,
- `mmt-aei+xml`,
- `mmt-usd+xml`,
- `mods+xml`,
- `moss-keys`,
- `moss-signature`,
- `mosskey-data`,
- `mosskey-request`,
- `mp21`,
- `mp4`,
- `mpeg4-generic`,
- `mpeg4-iod`,
- `mpeg4-iod-xmt`,
- `mrb-consumer+xml`,
- `mrb-publish+xml`,
- `msc-ivr+xml`,
- `msc-mixer+xml`,
- `msword`,
- `mud+json`,
- `multipart-core`,
- `mxf`,
- `n-quads`,
- `n-triples`,
- `nasdata`,
- `news-checkgroups`,
- `news-groupinfo`,
- `news-transmission`,
- `nlsml+xml`,
- `node`,
- `nss`,
- `oauth-authz-req+jwt`,
- `ocsp-request`,
- `ocsp-response`,
- `octet-stream`,
- `oda`,
- `odm+xml`,
- `odx`,
- `oebps-package+xml`,
- `ogg`,
- `omdoc+xml`,
- `onenote`,
- `opc-nodeset+xml`,
- `oscore`,
- `oxps`,
- `p2p-overlay+xml`,
- `parityfec`,
- `passport`,
- `patch-ops-error+xml`,
- `pdf`,
- `pdx`,
- `pem-certificate-chain`,
- `pgp-encrypted`,
- `pgp-keys`,
- `pgp-signature`,
- `pics-rules`,
- `pidf+xml`,
- `pidf-diff+xml`,
- `pkcs10`,
- `pkcs12`,
- `pkcs7-mime`,
- `pkcs7-signature`,
- `pkcs8`,
- `pkcs8-encrypted`,
- `pkix-attr-cert`,
- `pkix-cert`,
- `pkix-crl`,
- `pkix-pkipath`,
- `pkixcmp`,
- `pls+xml`,
- `poc-settings+xml`,
- `postscript`,
- `ppsp-tracker+json`,
- `problem+json`,
- `problem+xml`,
- `provenance+xml`,
- `prs.alvestrand.titrax-sheet`,
- `prs.cww`,
- `prs.cyn`,
- `prs.hpub+zip`,
- `prs.nprend`,
- `prs.plucker`,
- `prs.rdf-xml-crypt`,
- `prs.xsf+xml`,
- `pskc+xml`,
- `pvd+json`,
- `qsig`,
- `raml+yaml`,
- `raptorfec`,
- `rdap+json`,
- `rdf+xml`,
- `reginfo+xml`,
- `relax-ng-compact-syntax`,
- `remote-printing`,
- `reputon+json`,
- `resource-lists+xml`,
- `resource-lists-diff+xml`,
- `rfc+xml`,
- `riscos`,
- `rlmi+xml`,
- `rls-services+xml`,
- `route-apd+xml`,
- `route-s-tsid+xml`,
- `route-usd+xml`,
- `rpki-ghostbusters`,
- `rpki-manifest`,
- `rpki-publication`,
- `rpki-roa`,
- `rpki-updown`,
- `rsd+xml`,
- `rss+xml`,
- `rtf`,
- `rtploopback`,
- `rtx`,
- `samlassertion+xml`,
- `samlmetadata+xml`,
- `sarif+json`,
- `sarif-external-properties+json`,
- `sbe`,
- `sbml+xml`,
- `scaip+xml`,
- `scim+json`,
- `scvp-cv-request`,
- `scvp-cv-response`,
- `scvp-vp-request`,
- `scvp-vp-response`,
- `sdp`,
- `secevent+jwt`,
- `senml+cbor`,
- `senml+json`,
- `senml+xml`,
- `senml-etch+cbor`,
- `senml-etch+json`,
- `senml-exi`,
- `sensml+cbor`,
- `sensml+json`,
- `sensml+xml`,
- `sensml-exi`,
- `sep+xml`,
- `sep-exi`,
- `session-info`,
- `set-payment`,
- `set-payment-initiation`,
- `set-registration`,
- `set-registration-initiation`,
- `sgml`,
- `sgml-open-catalog`,
- `shf+xml`,
- `sieve`,
- `simple-filter+xml`,
- `simple-message-summary`,
- `simplesymbolcontainer`,
- `sipc`,
- `slate`,
- `smil`,
- `smil+xml`,
- `smpte336m`,
- `soap+fastinfoset`,
- `soap+xml`,
- `sparql-query`,
- `sparql-results+xml`,
- `spirits-event+xml`,
- `sql`,
- `srgs`,
- `srgs+xml`,
- `sru+xml`,
- `ssdl+xml`,
- `ssml+xml`,
- `stix+json`,
- `swid+xml`,
- `tamp-apex-update`,
- `tamp-apex-update-confirm`,
- `tamp-community-update`,
- `tamp-community-update-confirm`,
- `tamp-error`,
- `tamp-sequence-adjust`,
- `tamp-sequence-adjust-confirm`,
- `tamp-status-query`,
- `tamp-status-response`,
- `tamp-update`,
- `tamp-update-confirm`,
- `tar`,
- `taxii+json`,
- `td+json`,
- `tei+xml`,
- `tetra_isi`,
- `thraud+xml`,
- `timestamp-query`,
- `timestamp-reply`,
- `timestamped-data`,
- `tlsrpt+gzip`,
- `tlsrpt+json`,
- `tnauthlist`,
- `toml`,
- `trickle-ice-sdpfrag`,
- `trig`,
- `ttml+xml`,
- `tve-trigger`,
- `tzif`,
- `tzif-leap`,
- `ubjson`,
- `ulpfec`,
- `urc-grpsheet+xml`,
- `urc-ressheet+xml`,
- `urc-targetdesc+xml`,
- `urc-uisocketdesc+xml`,
- `vcard+json`,
- `vcard+xml`,
- `vemmi`,
- `vividence.scriptfile`,
- `vnd.1000minds.decision-model+xml`,
- `vnd.3gpp-prose+xml`,
- `vnd.3gpp-prose-pc3ch+xml`,
- `vnd.3gpp-v2x-local-service-information`,
- `vnd.3gpp.5gnas`,
- `vnd.3gpp.access-transfer-events+xml`,
- `vnd.3gpp.bsf+xml`,
- `vnd.3gpp.gmop+xml`,
- `vnd.3gpp.gtpc`,
- `vnd.3gpp.interworking-data`,
- `vnd.3gpp.lpp`,
- `vnd.3gpp.mc-signalling-ear`,
- `vnd.3gpp.mcdata-affiliation-command+xml`,
- `vnd.3gpp.mcdata-info+xml`,
- `vnd.3gpp.mcdata-payload`,
- `vnd.3gpp.mcdata-service-config+xml`,
- `vnd.3gpp.mcdata-signalling`,
- `vnd.3gpp.mcdata-ue-config+xml`,
- `vnd.3gpp.mcdata-user-profile+xml`,
- `vnd.3gpp.mcptt-affiliation-command+xml`,
- `vnd.3gpp.mcptt-floor-request+xml`,
- `vnd.3gpp.mcptt-info+xml`,
- `vnd.3gpp.mcptt-location-info+xml`,
- `vnd.3gpp.mcptt-mbms-usage-info+xml`,
- `vnd.3gpp.mcptt-service-config+xml`,
- `vnd.3gpp.mcptt-signed+xml`,
- `vnd.3gpp.mcptt-ue-config+xml`,
- `vnd.3gpp.mcptt-ue-init-config+xml`,
- `vnd.3gpp.mcptt-user-profile+xml`,
- `vnd.3gpp.mcvideo-affiliation-command+xml`,
- `vnd.3gpp.mcvideo-affiliation-info+xml`,
- `vnd.3gpp.mcvideo-info+xml`,
- `vnd.3gpp.mcvideo-location-info+xml`,
- `vnd.3gpp.mcvideo-mbms-usage-info+xml`,
- `vnd.3gpp.mcvideo-service-config+xml`,
- `vnd.3gpp.mcvideo-transmission-request+xml`,
- `vnd.3gpp.mcvideo-ue-config+xml`,
- `vnd.3gpp.mcvideo-user-profile+xml`,
- `vnd.3gpp.mid-call+xml`,
- `vnd.3gpp.ngap`,
- `vnd.3gpp.pfcp`,
- `vnd.3gpp.pic-bw-large`,
- `vnd.3gpp.pic-bw-small`,
- `vnd.3gpp.pic-bw-var`,
- `vnd.3gpp.s1ap`,
- `vnd.3gpp.sms`,
- `vnd.3gpp.sms+xml`,
- `vnd.3gpp.srvcc-ext+xml`,
- `vnd.3gpp.srvcc-info+xml`,
- `vnd.3gpp.state-and-event-info+xml`,
- `vnd.3gpp.ussd+xml`,
- `vnd.3gpp2.bcmcsinfo+xml`,
- `vnd.3gpp2.sms`,
- `vnd.3gpp2.tcap`,
- `vnd.3lightssoftware.imagescal`,
- `vnd.3m.post-it-notes`,
- `vnd.accpac.simply.aso`,
- `vnd.accpac.simply.imp`,
- `vnd.acucobol`,
- `vnd.acucorp`,
+ "vnd.cluetrust.cartomobile-config-pkg",
+ compressible = false,
+ binary = true,
+ List("c11amz"),
)
- }
- trait application_1 {
- lazy val `vnd.adobe.air-application-installer-package+zip`: MediaType = new MediaType(
+
+ lazy val `sensml+xml`: MediaType =
+ new MediaType("application", "sensml+xml", compressible = true, binary = true, List("sensmlx"))
+
+ lazy val `parityfec`: MediaType =
+ new MediaType("application", "parityfec", compressible = false, binary = true)
+
+ lazy val `vnd.desmume.movie`: MediaType =
+ new MediaType("application", "vnd.desmume.movie", compressible = false, binary = true)
+
+ lazy val `vnd.osgi.subsystem`: MediaType =
+ new MediaType("application", "vnd.osgi.subsystem", compressible = false, binary = true, List("esa"))
+
+ lazy val `vnd.ubisoft.webplayer`: MediaType =
+ new MediaType("application", "vnd.ubisoft.webplayer", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcdata-user-profile+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-user-profile+xml", compressible = true, binary = true)
+
+ lazy val `jrd+json`: MediaType =
+ new MediaType("application", "jrd+json", compressible = true, binary = false)
+
+ lazy val `vnd.onepagertamp`: MediaType =
+ new MediaType("application", "vnd.onepagertamp", compressible = false, binary = true)
+
+ lazy val `vnd.fujitsu.oasysprs`: MediaType =
+ new MediaType("application", "vnd.fujitsu.oasysprs", compressible = false, binary = true, List("bh2"))
+
+ lazy val `vnd.antix.game-component`: MediaType =
+ new MediaType("application", "vnd.antix.game-component", compressible = false, binary = true, List("atx"))
+
+ lazy val `gzip`: MediaType =
+ new MediaType("application", "gzip", compressible = false, binary = true, List("gz"))
+
+ lazy val `vnd.3gpp.gtpc`: MediaType =
+ new MediaType("application", "vnd.3gpp.gtpc", compressible = false, binary = true)
+
+ lazy val `vnd.capasystems-pg+json`: MediaType =
+ new MediaType("application", "vnd.capasystems-pg+json", compressible = true, binary = false)
+
+ lazy val `vnd.apexlang`: MediaType =
+ new MediaType("application", "vnd.apexlang", compressible = false, binary = true)
+
+ lazy val `x-xpinstall`: MediaType =
+ new MediaType("application", "x-xpinstall", compressible = false, binary = true, List("xpi"))
+
+ lazy val `vnd.uplanet.listcmd-wbxml`: MediaType =
+ new MediaType("application", "vnd.uplanet.listcmd-wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.muvee.style`: MediaType =
+ new MediaType("application", "vnd.muvee.style", compressible = false, binary = true, List("msty"))
+
+ lazy val `vnd.immervision-ivp`: MediaType =
+ new MediaType("application", "vnd.immervision-ivp", compressible = false, binary = true, List("ivp"))
+
+ lazy val `x-font-ghostscript`: MediaType =
+ new MediaType("application", "x-font-ghostscript", compressible = false, binary = true, List("gsf"))
+
+ lazy val `x-debian-package`: MediaType =
+ new MediaType("application", "x-debian-package", compressible = false, binary = true, List("deb", "udeb"))
+
+ lazy val `vnd.sun.xml.draw.template`: MediaType =
+ new MediaType("application", "vnd.sun.xml.draw.template", compressible = false, binary = true, List("std"))
+
+ lazy val `vnd.3gpp.mcdata-payload`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-payload", compressible = false, binary = true)
+
+ lazy val `moss-signature`: MediaType =
+ new MediaType("application", "moss-signature", compressible = false, binary = true)
+
+ lazy val `vnd.sailingtracker.track`: MediaType =
+ new MediaType("application", "vnd.sailingtracker.track", compressible = false, binary = true, List("st"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.notesmaster+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.adobe.air-application-installer-package+zip",
- Uncompressible,
- NotBinary,
- List("air"),
+ "vnd.openxmlformats-officedocument.presentationml.notesmaster+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.adobe.flash.movie`: MediaType =
- new MediaType("application", "vnd.adobe.flash.movie", Compressible, NotBinary)
- lazy val `vnd.adobe.formscentral.fcdt`: MediaType = new MediaType(
+
+ lazy val `raml+yaml`: MediaType =
+ new MediaType("application", "raml+yaml", compressible = true, binary = true, List("raml"))
+
+ lazy val `vnd.fujixerox.hbpl`: MediaType =
+ new MediaType("application", "vnd.fujixerox.hbpl", compressible = false, binary = true)
+
+ lazy val `vnd.gnu.taler.exchange+json`: MediaType =
+ new MediaType("application", "vnd.gnu.taler.exchange+json", compressible = true, binary = false)
+
+ lazy val `vnd.oipf.dae.xhtml+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.dae.xhtml+xml", compressible = true, binary = true)
+
+ lazy val `x-envoy`: MediaType =
+ new MediaType("application", "x-envoy", compressible = false, binary = true, List("evy"))
+
+ lazy val `vnd.fastcopy-disk-image`: MediaType =
+ new MediaType("application", "vnd.fastcopy-disk-image", compressible = false, binary = true)
+
+ lazy val `vnd.webturbo`: MediaType =
+ new MediaType("application", "vnd.webturbo", compressible = false, binary = true, List("wtb"))
+
+ lazy val `linkset+json`: MediaType =
+ new MediaType("application", "linkset+json", compressible = true, binary = false)
+
+ lazy val `vnd.omads-file+xml`: MediaType =
+ new MediaType("application", "vnd.omads-file+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slideshow`: MediaType =
+ new MediaType(
"application",
- "vnd.adobe.formscentral.fcdt",
- Compressible,
- NotBinary,
- List("fcdt"),
+ "vnd.openxmlformats-officedocument.presentationml.slideshow",
+ compressible = false,
+ binary = true,
+ List("ppsx"),
)
- lazy val `vnd.adobe.fxp`: MediaType =
- new MediaType("application", "vnd.adobe.fxp", Compressible, NotBinary, List("fxp", "fxpl"))
- lazy val `vnd.adobe.partial-upload`: MediaType =
- new MediaType("application", "vnd.adobe.partial-upload", Compressible, NotBinary)
- lazy val `vnd.adobe.xdp+xml`: MediaType =
- new MediaType("application", "vnd.adobe.xdp+xml", Compressible, NotBinary, List("xdp"))
- lazy val `vnd.adobe.xfdf`: MediaType =
- new MediaType("application", "vnd.adobe.xfdf", Compressible, NotBinary, List("xfdf"))
- lazy val `vnd.aether.imp`: MediaType =
- new MediaType("application", "vnd.aether.imp", Compressible, NotBinary)
- lazy val `vnd.afpc.afplinedata`: MediaType =
- new MediaType("application", "vnd.afpc.afplinedata", Compressible, NotBinary)
- lazy val `vnd.afpc.afplinedata-pagedef`: MediaType =
- new MediaType("application", "vnd.afpc.afplinedata-pagedef", Compressible, NotBinary)
- lazy val `vnd.afpc.cmoca-cmresource`: MediaType =
- new MediaType("application", "vnd.afpc.cmoca-cmresource", Compressible, NotBinary)
- lazy val `vnd.afpc.foca-charset`: MediaType =
- new MediaType("application", "vnd.afpc.foca-charset", Compressible, NotBinary)
- lazy val `vnd.afpc.foca-codedfont`: MediaType =
- new MediaType("application", "vnd.afpc.foca-codedfont", Compressible, NotBinary)
- lazy val `vnd.afpc.foca-codepage`: MediaType =
- new MediaType("application", "vnd.afpc.foca-codepage", Compressible, NotBinary)
- lazy val `vnd.afpc.modca`: MediaType =
- new MediaType("application", "vnd.afpc.modca", Compressible, NotBinary)
- lazy val `vnd.afpc.modca-cmtable`: MediaType =
- new MediaType("application", "vnd.afpc.modca-cmtable", Compressible, NotBinary)
- lazy val `vnd.afpc.modca-formdef`: MediaType =
- new MediaType("application", "vnd.afpc.modca-formdef", Compressible, NotBinary)
- lazy val `vnd.afpc.modca-mediummap`: MediaType =
- new MediaType("application", "vnd.afpc.modca-mediummap", Compressible, NotBinary)
- lazy val `vnd.afpc.modca-objectcontainer`: MediaType =
- new MediaType("application", "vnd.afpc.modca-objectcontainer", Compressible, NotBinary)
- lazy val `vnd.afpc.modca-overlay`: MediaType =
- new MediaType("application", "vnd.afpc.modca-overlay", Compressible, NotBinary)
- lazy val `vnd.afpc.modca-pagesegment`: MediaType =
- new MediaType("application", "vnd.afpc.modca-pagesegment", Compressible, NotBinary)
- lazy val `vnd.ah-barcode`: MediaType =
- new MediaType("application", "vnd.ah-barcode", Compressible, NotBinary)
- lazy val `vnd.ahead.space`: MediaType =
- new MediaType("application", "vnd.ahead.space", Compressible, NotBinary, List("ahead"))
- lazy val `vnd.airzip.filesecure.azf`: MediaType = new MediaType(
+
+ lazy val `jwk+json`: MediaType =
+ new MediaType("application", "jwk+json", compressible = true, binary = false)
+
+ lazy val `vnd.multiad.creator.cif`: MediaType =
+ new MediaType("application", "vnd.multiad.creator.cif", compressible = false, binary = true)
+
+ lazy val `vq-rtcpxr`: MediaType =
+ new MediaType("application", "vq-rtcpxr", compressible = false, binary = true)
+
+ lazy val `3gpdash-qoe-report+xml`: MediaType =
+ new MediaType("application", "3gpdash-qoe-report+xml", compressible = true, binary = true)
+
+ lazy val `soap+fastinfoset`: MediaType =
+ new MediaType("application", "soap+fastinfoset", compressible = false, binary = true)
+
+ lazy val `vnd.tao.intent-module-archive`: MediaType =
+ new MediaType("application", "vnd.tao.intent-module-archive", compressible = false, binary = true, List("tao"))
+
+ lazy val `x-msaccess`: MediaType =
+ new MediaType("application", "x-msaccess", compressible = false, binary = true, List("mdb"))
+
+ lazy val `vnd.xmpie.xlim`: MediaType =
+ new MediaType("application", "vnd.xmpie.xlim", compressible = false, binary = true)
+
+ lazy val `vnd.quobject-quoxdocument`: MediaType =
+ new MediaType("application", "vnd.quobject-quoxdocument", compressible = false, binary = true)
+
+ lazy val `tnauthlist`: MediaType =
+ new MediaType("application", "tnauthlist", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.footer+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.airzip.filesecure.azf",
- Compressible,
- NotBinary,
- List("azf"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.footer+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.airzip.filesecure.azs`: MediaType = new MediaType(
+
+ lazy val `vnd.firemonkeys.cloudcell`: MediaType =
+ new MediaType("application", "vnd.firemonkeys.cloudcell", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.isds-radio-presets`: MediaType =
+ new MediaType("application", "vnd.nokia.isds-radio-presets", compressible = false, binary = true)
+
+ lazy val `vnd.gmx`: MediaType =
+ new MediaType("application", "vnd.gmx", compressible = false, binary = true, List("gmx"))
+
+ lazy val `vnd.d3m-problem`: MediaType =
+ new MediaType("application", "vnd.d3m-problem", compressible = false, binary = true)
+
+ lazy val `vnd.vsf`: MediaType =
+ new MediaType("application", "vnd.vsf", compressible = false, binary = true, List("vsf"))
+
+ lazy val `sql`: MediaType =
+ new MediaType("application", "sql", compressible = false, binary = true, List("sql"))
+
+ lazy val `vnd.mason+json`: MediaType =
+ new MediaType("application", "vnd.mason+json", compressible = true, binary = false)
+
+ lazy val `x-tgif`: MediaType =
+ new MediaType("application", "x-tgif", compressible = false, binary = true, List("obj"))
+
+ lazy val `x-www-form-urlencoded`: MediaType =
+ new MediaType("application", "x-www-form-urlencoded", compressible = true, binary = true)
+
+ lazy val `epub+zip`: MediaType =
+ new MediaType("application", "epub+zip", compressible = false, binary = true, List("epub"))
+
+ lazy val `vnd.onvif.metadata`: MediaType =
+ new MediaType("application", "vnd.onvif.metadata", compressible = false, binary = true)
+
+ lazy val `odx`: MediaType =
+ new MediaType("application", "odx", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slide`: MediaType =
+ new MediaType(
"application",
- "vnd.airzip.filesecure.azs",
- Compressible,
- NotBinary,
- List("azs"),
+ "vnd.openxmlformats-officedocument.presentationml.slide",
+ compressible = false,
+ binary = true,
+ List("sldx"),
)
- lazy val `vnd.amadeus+json`: MediaType =
- new MediaType("application", "vnd.amadeus+json", Compressible, NotBinary)
- lazy val `vnd.amazon.ebook`: MediaType =
- new MediaType("application", "vnd.amazon.ebook", Compressible, NotBinary, List("azw"))
- lazy val `vnd.amazon.mobi8-ebook`: MediaType =
- new MediaType("application", "vnd.amazon.mobi8-ebook", Compressible, NotBinary)
- lazy val `vnd.americandynamics.acc`: MediaType = new MediaType(
+
+ lazy val `vnd.dvb.ipdcesgaccess2`: MediaType =
+ new MediaType("application", "vnd.dvb.ipdcesgaccess2", compressible = false, binary = true)
+
+ lazy val `x-font-framemaker`: MediaType =
+ new MediaType("application", "x-font-framemaker", compressible = false, binary = true)
+
+ lazy val `vnd.ms-word.template.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.americandynamics.acc",
- Compressible,
- NotBinary,
- List("acc"),
+ "vnd.ms-word.template.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("dotm"),
)
- lazy val `vnd.amiga.ami`: MediaType =
- new MediaType("application", "vnd.amiga.ami", Compressible, NotBinary, List("ami"))
- lazy val `vnd.amundsen.maze+xml`: MediaType =
- new MediaType("application", "vnd.amundsen.maze+xml", Compressible, NotBinary)
- lazy val `vnd.android.ota`: MediaType =
- new MediaType("application", "vnd.android.ota", Compressible, NotBinary)
- lazy val `vnd.android.package-archive`: MediaType = new MediaType(
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slide+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.android.package-archive",
- Uncompressible,
- NotBinary,
- List("apk"),
+ "vnd.openxmlformats-officedocument.presentationml.slide+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.anki`: MediaType =
- new MediaType("application", "vnd.anki", Compressible, NotBinary)
- lazy val `vnd.anser-web-certificate-issue-initiation`: MediaType = new MediaType(
+
+ lazy val `zip`: MediaType =
+ new MediaType("application", "zip", compressible = false, binary = true, List("zip"))
+
+ lazy val `vnd.dvb.ait`: MediaType =
+ new MediaType("application", "vnd.dvb.ait", compressible = false, binary = true, List("ait"))
+
+ lazy val `vnd.afpc.modca-objectcontainer`: MediaType =
+ new MediaType("application", "vnd.afpc.modca-objectcontainer", compressible = false, binary = true)
+
+ lazy val `vnd.sun.xml.writer.global`: MediaType =
+ new MediaType("application", "vnd.sun.xml.writer.global", compressible = false, binary = true, List("sxg"))
+
+ lazy val `vnd.tmd.mediaflex.api+xml`: MediaType =
+ new MediaType("application", "vnd.tmd.mediaflex.api+xml", compressible = true, binary = true)
+
+ lazy val `watcherinfo+xml`: MediaType =
+ new MediaType("application", "watcherinfo+xml", compressible = true, binary = true, List("wif"))
+
+ lazy val `dash-patch+xml`: MediaType =
+ new MediaType("application", "dash-patch+xml", compressible = true, binary = true, List("mpp"))
+
+ lazy val `x-gnumeric`: MediaType =
+ new MediaType("application", "x-gnumeric", compressible = false, binary = true, List("gnumeric"))
+
+ lazy val `mods+xml`: MediaType =
+ new MediaType("application", "mods+xml", compressible = true, binary = true, List("mods"))
+
+ lazy val `spdx+json`: MediaType =
+ new MediaType("application", "spdx+json", compressible = true, binary = false)
+
+ lazy val `vnd.amadeus+json`: MediaType =
+ new MediaType("application", "vnd.amadeus+json", compressible = true, binary = false)
+
+ lazy val `andrew-inset`: MediaType =
+ new MediaType("application", "andrew-inset", compressible = false, binary = true, List("ez"))
+
+ lazy val `vnd.cncf.helm.chart.content.v1.tar+gzip`: MediaType =
+ new MediaType("application", "vnd.cncf.helm.chart.content.v1.tar+gzip", compressible = false, binary = true)
+
+ lazy val `vnd.shade-save-file`: MediaType =
+ new MediaType("application", "vnd.shade-save-file", compressible = false, binary = true)
+
+ lazy val `vnd.motorola.flexsuite.wem`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite.wem", compressible = false, binary = true)
+
+ lazy val `x-tcl`: MediaType =
+ new MediaType("application", "x-tcl", compressible = false, binary = true, List("tcl", "tk"))
+
+ lazy val `vnd.fdf`: MediaType =
+ new MediaType("application", "vnd.fdf", compressible = false, binary = true, List("fdf"))
+
+ lazy val `tamp-community-update-confirm`: MediaType =
+ new MediaType("application", "tamp-community-update-confirm", compressible = false, binary = true)
+
+ lazy val `vnd.ms-fontobject`: MediaType =
+ new MediaType("application", "vnd.ms-fontobject", compressible = true, binary = true, List("eot"))
+
+ lazy val `ccxml+xml`: MediaType =
+ new MediaType("application", "ccxml+xml", compressible = true, binary = true, List("ccxml"))
+
+ lazy val `vnd.shx`: MediaType =
+ new MediaType("application", "vnd.shx", compressible = false, binary = true)
+
+ lazy val `vnd.afpc.foca-charset`: MediaType =
+ new MediaType("application", "vnd.afpc.foca-charset", compressible = false, binary = true)
+
+ lazy val `mp4`: MediaType =
+ new MediaType("application", "mp4", compressible = false, binary = true, List("mp4", "mpg4", "mp4s", "m4p"))
+
+ lazy val `mxf`: MediaType =
+ new MediaType("application", "mxf", compressible = false, binary = true, List("mxf"))
+
+ lazy val `vnd.oma.bcast.ltkm`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.ltkm", compressible = false, binary = true)
+
+ lazy val `vnd.ms-office.activex+xml`: MediaType =
+ new MediaType("application", "vnd.ms-office.activex+xml", compressible = true, binary = true)
+
+ lazy val `vnd.multiad.creator`: MediaType =
+ new MediaType("application", "vnd.multiad.creator", compressible = false, binary = true)
+
+ lazy val `edi-x12`: MediaType =
+ new MediaType("application", "edi-x12", compressible = false, binary = true)
+
+ lazy val `vnd.ms-lrm`: MediaType =
+ new MediaType("application", "vnd.ms-lrm", compressible = false, binary = true, List("lrm"))
+
+ lazy val `vnd.trid.tpt`: MediaType =
+ new MediaType("application", "vnd.trid.tpt", compressible = false, binary = true, List("tpt"))
+
+ lazy val `vnd.ms-pki.stl`: MediaType =
+ new MediaType("application", "vnd.ms-pki.stl", compressible = false, binary = true, List("stl"))
+
+ lazy val `rtploopback`: MediaType =
+ new MediaType("application", "rtploopback", compressible = false, binary = true)
+
+ lazy val `set-registration-initiation`: MediaType =
+ new MediaType("application", "set-registration-initiation", compressible = false, binary = true, List("setreg"))
+
+ lazy val `call-completion`: MediaType =
+ new MediaType("application", "call-completion", compressible = false, binary = true)
+
+ lazy val `vnd.lotus-1-2-3`: MediaType =
+ new MediaType("application", "vnd.lotus-1-2-3", compressible = false, binary = true, List("123"))
+
+ lazy val `x-mpegurl`: MediaType =
+ new MediaType("application", "x-mpegurl", compressible = false, binary = true)
+
+ lazy val `mbms-reception-report+xml`: MediaType =
+ new MediaType("application", "mbms-reception-report+xml", compressible = true, binary = true)
+
+ lazy val `vnd.olpc-sugar`: MediaType =
+ new MediaType("application", "vnd.olpc-sugar", compressible = false, binary = true, List("xo"))
+
+ lazy val `sipc`: MediaType =
+ new MediaType("application", "sipc", compressible = false, binary = true)
+
+ lazy val `vnd.eu.kasparian.car+json`: MediaType =
+ new MediaType("application", "vnd.eu.kasparian.car+json", compressible = true, binary = false)
+
+ lazy val `x-glulx`: MediaType =
+ new MediaType("application", "x-glulx", compressible = false, binary = true, List("ulx"))
+
+ lazy val `geo+json-seq`: MediaType =
+ new MediaType("application", "geo+json-seq", compressible = false, binary = true)
+
+ lazy val `vnd.ahead.space`: MediaType =
+ new MediaType("application", "vnd.ahead.space", compressible = false, binary = true, List("ahead"))
+
+ lazy val `vnd.xmpie.cpkg`: MediaType =
+ new MediaType("application", "vnd.xmpie.cpkg", compressible = false, binary = true)
+
+ lazy val `cdmi-capability`: MediaType =
+ new MediaType("application", "cdmi-capability", compressible = false, binary = true, List("cdmia"))
+
+ lazy val `trickle-ice-sdpfrag`: MediaType =
+ new MediaType("application", "trickle-ice-sdpfrag", compressible = false, binary = true)
+
+ lazy val `vnd.mobius.dis`: MediaType =
+ new MediaType("application", "vnd.mobius.dis", compressible = false, binary = true, List("dis"))
+
+ lazy val `vnd.cncf.helm.chart.provenance.v1.prov`: MediaType =
+ new MediaType("application", "vnd.cncf.helm.chart.provenance.v1.prov", compressible = false, binary = true)
+
+ lazy val `vnd.avalon+json`: MediaType =
+ new MediaType("application", "vnd.avalon+json", compressible = true, binary = false)
+
+ lazy val `vnd.lotus-screencam`: MediaType =
+ new MediaType("application", "vnd.lotus-screencam", compressible = false, binary = true, List("scm"))
+
+ lazy val `x-perl`: MediaType =
+ new MediaType("application", "x-perl", compressible = false, binary = true, List("pl", "pm"))
+
+ lazy val `vnd.datapackage+json`: MediaType =
+ new MediaType("application", "vnd.datapackage+json", compressible = true, binary = false)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.template`: MediaType =
+ new MediaType(
"application",
- "vnd.anser-web-certificate-issue-initiation",
- Compressible,
- NotBinary,
- List("cii"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.template",
+ compressible = false,
+ binary = true,
+ List("dotx"),
)
- lazy val `vnd.anser-web-funds-transfer-initiation`: MediaType = new MediaType(
+
+ lazy val `vnd.ms-opentype`: MediaType =
+ new MediaType("application", "vnd.ms-opentype", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.template`: MediaType =
+ new MediaType(
"application",
- "vnd.anser-web-funds-transfer-initiation",
- Compressible,
- NotBinary,
- List("fti"),
+ "vnd.openxmlformats-officedocument.presentationml.template",
+ compressible = false,
+ binary = true,
+ List("potx"),
)
- lazy val `vnd.antix.game-component`: MediaType = new MediaType(
+
+ lazy val `vnd.collabio.xodocuments.spreadsheet`: MediaType =
+ new MediaType("application", "vnd.collabio.xodocuments.spreadsheet", compressible = false, binary = true)
+
+ lazy val `vnd.cryptomator.encrypted`: MediaType =
+ new MediaType("application", "vnd.cryptomator.encrypted", compressible = false, binary = true)
+
+ lazy val `vnd.afpc.modca`: MediaType =
+ new MediaType("application", "vnd.afpc.modca", compressible = false, binary = true)
+
+ lazy val `onenote`: MediaType =
+ new MediaType(
"application",
- "vnd.antix.game-component",
- Compressible,
- NotBinary,
- List("atx"),
+ "onenote",
+ compressible = false,
+ binary = true,
+ List("onetoc", "onetoc2", "onetmp", "onepkg"),
)
- lazy val `vnd.apache.thrift.binary`: MediaType =
- new MediaType("application", "vnd.apache.thrift.binary", Compressible, NotBinary)
- lazy val `vnd.apache.thrift.compact`: MediaType =
- new MediaType("application", "vnd.apache.thrift.compact", Compressible, NotBinary)
- lazy val `vnd.apache.thrift.json`: MediaType =
- new MediaType("application", "vnd.apache.thrift.json", Compressible, NotBinary)
- lazy val `vnd.api+json`: MediaType =
- new MediaType("application", "vnd.api+json", Compressible, Binary)
- lazy val `vnd.aplextor.warrp+json`: MediaType =
- new MediaType("application", "vnd.aplextor.warrp+json", Compressible, NotBinary)
- lazy val `vnd.apothekende.reservation+json`: MediaType =
- new MediaType("application", "vnd.apothekende.reservation+json", Compressible, NotBinary)
- lazy val `vnd.apple.installer+xml`: MediaType = new MediaType(
+
+ lazy val `cdmi-domain`: MediaType =
+ new MediaType("application", "cdmi-domain", compressible = false, binary = true, List("cdmid"))
+
+ lazy val `vnd.hal+xml`: MediaType =
+ new MediaType("application", "vnd.hal+xml", compressible = true, binary = true, List("hal"))
+
+ lazy val `vnd.canon-cpdl`: MediaType =
+ new MediaType("application", "vnd.canon-cpdl", compressible = false, binary = true)
+
+ lazy val `vnd.mcd`: MediaType =
+ new MediaType("application", "vnd.mcd", compressible = false, binary = true, List("mcd"))
+
+ lazy val `vnd.ibm.electronic-media`: MediaType =
+ new MediaType("application", "vnd.ibm.electronic-media", compressible = false, binary = true)
+
+ lazy val `fhir+xml`: MediaType =
+ new MediaType("application", "fhir+xml", compressible = true, binary = true)
+
+ lazy val `tamp-error`: MediaType =
+ new MediaType("application", "tamp-error", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.notif-generic+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-generic+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.ussd+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.ussd+xml", compressible = true, binary = true)
+
+ lazy val `vnd.semf`: MediaType =
+ new MediaType("application", "vnd.semf", compressible = false, binary = true, List("semf"))
+
+ lazy val `vnd.dvb.ipdcdftnotifaccess`: MediaType =
+ new MediaType("application", "vnd.dvb.ipdcdftnotifaccess", compressible = false, binary = true)
+
+ lazy val `vnd.marlin.drm.license+xml`: MediaType =
+ new MediaType("application", "vnd.marlin.drm.license+xml", compressible = true, binary = true)
+
+ lazy val `ogg`: MediaType =
+ new MediaType("application", "ogg", compressible = false, binary = true, List("ogx"))
+
+ lazy val `geopackage+sqlite3`: MediaType =
+ new MediaType("application", "geopackage+sqlite3", compressible = false, binary = true)
+
+ lazy val `dashdelta`: MediaType =
+ new MediaType("application", "dashdelta", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.apple.installer+xml",
- Compressible,
- NotBinary,
- List("mpkg"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.apple.keynote`: MediaType =
- new MediaType("application", "vnd.apple.keynote", Compressible, NotBinary, List("key"))
- lazy val `vnd.apple.mpegurl`: MediaType =
- new MediaType("application", "vnd.apple.mpegurl", Compressible, NotBinary, List("m3u8"))
- lazy val `vnd.apple.numbers`: MediaType =
- new MediaType("application", "vnd.apple.numbers", Compressible, NotBinary, List("numbers"))
- lazy val `vnd.apple.pages`: MediaType =
- new MediaType("application", "vnd.apple.pages", Compressible, NotBinary, List("pages"))
- lazy val `vnd.apple.pkpass`: MediaType =
- new MediaType("application", "vnd.apple.pkpass", Uncompressible, NotBinary, List("pkpass"))
- lazy val `vnd.arastra.swi`: MediaType =
- new MediaType("application", "vnd.arastra.swi", Compressible, NotBinary)
- lazy val `vnd.aristanetworks.swi`: MediaType =
- new MediaType("application", "vnd.aristanetworks.swi", Compressible, NotBinary, List("swi"))
- lazy val `vnd.artisan+json`: MediaType =
- new MediaType("application", "vnd.artisan+json", Compressible, NotBinary)
- lazy val `vnd.artsquare`: MediaType =
- new MediaType("application", "vnd.artsquare", Compressible, NotBinary)
- lazy val `vnd.astraea-software.iota`: MediaType = new MediaType(
+
+ lazy val `vnd.ufdl`: MediaType =
+ new MediaType("application", "vnd.ufdl", compressible = false, binary = true, List("ufd", "ufdl"))
+
+ lazy val `senml-exi`: MediaType =
+ new MediaType("application", "senml-exi", compressible = false, binary = true)
+
+ lazy val `vnd.powerbuilder7-s`: MediaType =
+ new MediaType("application", "vnd.powerbuilder7-s", compressible = false, binary = true)
+
+ lazy val `index`: MediaType =
+ new MediaType("application", "index", compressible = false, binary = true)
+
+ lazy val `mbms-deregister+xml`: MediaType =
+ new MediaType("application", "mbms-deregister+xml", compressible = true, binary = true)
+
+ lazy val `vnd.easykaraoke.cdgdownload`: MediaType =
+ new MediaType("application", "vnd.easykaraoke.cdgdownload", compressible = false, binary = true)
+
+ lazy val `vnd.cups-ppd`: MediaType =
+ new MediaType("application", "vnd.cups-ppd", compressible = false, binary = true, List("ppd"))
+
+ lazy val `vnd.oma.bcast.sgdu`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.sgdu", compressible = false, binary = true)
+
+ lazy val `x-chess-pgn`: MediaType =
+ new MediaType("application", "x-chess-pgn", compressible = false, binary = true, List("pgn"))
+
+ lazy val `vnd.ms-playready.initiator+xml`: MediaType =
+ new MediaType("application", "vnd.ms-playready.initiator+xml", compressible = true, binary = true)
+
+ lazy val `cose-x509`: MediaType =
+ new MediaType("application", "cose-x509", compressible = false, binary = true)
+
+ lazy val `vnd.dir-bi.plate-dl-nosuffix`: MediaType =
+ new MediaType("application", "vnd.dir-bi.plate-dl-nosuffix", compressible = false, binary = true)
+
+ lazy val `vnd.crick.clicker.template`: MediaType =
+ new MediaType("application", "vnd.crick.clicker.template", compressible = false, binary = true, List("clkt"))
+
+ lazy val `vnd.uiq.theme`: MediaType =
+ new MediaType("application", "vnd.uiq.theme", compressible = false, binary = true, List("utz"))
+
+ lazy val `json-seq`: MediaType =
+ new MediaType("application", "json-seq", compressible = false, binary = true)
+
+ lazy val `vnd.lotus-wordpro`: MediaType =
+ new MediaType("application", "vnd.lotus-wordpro", compressible = false, binary = true, List("lwp"))
+
+ lazy val `vnd.adobe.partial-upload`: MediaType =
+ new MediaType("application", "vnd.adobe.partial-upload", compressible = false, binary = true)
+
+ lazy val `sep+xml`: MediaType =
+ new MediaType("application", "sep+xml", compressible = true, binary = true)
+
+ lazy val `vnd.claymore`: MediaType =
+ new MediaType("application", "vnd.claymore", compressible = false, binary = true, List("cla"))
+
+ lazy val `tar`: MediaType =
+ new MediaType("application", "tar", compressible = true, binary = true)
+
+ lazy val `rpki-roa`: MediaType =
+ new MediaType("application", "rpki-roa", compressible = false, binary = true, List("roa"))
+
+ lazy val `clr`: MediaType =
+ new MediaType("application", "clr", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.formula-template`: MediaType =
+ new MediaType(
"application",
- "vnd.astraea-software.iota",
- Compressible,
- NotBinary,
- List("iota"),
+ "vnd.oasis.opendocument.formula-template",
+ compressible = false,
+ binary = true,
+ List("odft"),
)
- lazy val `vnd.audiograph`: MediaType =
- new MediaType("application", "vnd.audiograph", Compressible, NotBinary, List("aep"))
- lazy val `vnd.autopackage`: MediaType =
- new MediaType("application", "vnd.autopackage", Compressible, NotBinary)
- lazy val `vnd.avalon+json`: MediaType =
- new MediaType("application", "vnd.avalon+json", Compressible, NotBinary)
- lazy val `vnd.avistar+xml`: MediaType =
- new MediaType("application", "vnd.avistar+xml", Compressible, NotBinary)
- lazy val `vnd.balsamiq.bmml+xml`: MediaType =
- new MediaType("application", "vnd.balsamiq.bmml+xml", Compressible, NotBinary, List("bmml"))
- lazy val `vnd.balsamiq.bmpr`: MediaType =
- new MediaType("application", "vnd.balsamiq.bmpr", Compressible, NotBinary)
- lazy val `vnd.banana-accounting`: MediaType =
- new MediaType("application", "vnd.banana-accounting", Compressible, NotBinary)
- lazy val `vnd.bbf.usp.error`: MediaType =
- new MediaType("application", "vnd.bbf.usp.error", Compressible, NotBinary)
- lazy val `vnd.bbf.usp.msg`: MediaType =
- new MediaType("application", "vnd.bbf.usp.msg", Compressible, NotBinary)
- lazy val `vnd.bbf.usp.msg+json`: MediaType =
- new MediaType("application", "vnd.bbf.usp.msg+json", Compressible, NotBinary)
- lazy val `vnd.bekitzur-stech+json`: MediaType =
- new MediaType("application", "vnd.bekitzur-stech+json", Compressible, NotBinary)
- lazy val `vnd.bint.med-content`: MediaType =
- new MediaType("application", "vnd.bint.med-content", Compressible, NotBinary)
- lazy val `vnd.biopax.rdf+xml`: MediaType =
- new MediaType("application", "vnd.biopax.rdf+xml", Compressible, NotBinary)
- lazy val `vnd.blink-idb-value-wrapper`: MediaType =
- new MediaType("application", "vnd.blink-idb-value-wrapper", Compressible, NotBinary)
- lazy val `vnd.blueice.multipass`: MediaType =
- new MediaType("application", "vnd.blueice.multipass", Compressible, NotBinary, List("mpm"))
- lazy val `vnd.bluetooth.ep.oob`: MediaType =
- new MediaType("application", "vnd.bluetooth.ep.oob", Compressible, NotBinary)
- lazy val `vnd.bluetooth.le.oob`: MediaType =
- new MediaType("application", "vnd.bluetooth.le.oob", Compressible, NotBinary)
- lazy val `vnd.bmi`: MediaType =
- new MediaType("application", "vnd.bmi", Compressible, NotBinary, List("bmi"))
- lazy val `vnd.bpf`: MediaType =
- new MediaType("application", "vnd.bpf", Compressible, NotBinary)
- lazy val `vnd.bpf3`: MediaType =
- new MediaType("application", "vnd.bpf3", Compressible, NotBinary)
- lazy val `vnd.businessobjects`: MediaType =
- new MediaType("application", "vnd.businessobjects", Compressible, NotBinary, List("rep"))
- lazy val `vnd.byu.uapi+json`: MediaType =
- new MediaType("application", "vnd.byu.uapi+json", Compressible, NotBinary)
- lazy val `vnd.cab-jscript`: MediaType =
- new MediaType("application", "vnd.cab-jscript", Compressible, NotBinary)
- lazy val `vnd.canon-cpdl`: MediaType =
- new MediaType("application", "vnd.canon-cpdl", Compressible, NotBinary)
- lazy val `vnd.canon-lips`: MediaType =
- new MediaType("application", "vnd.canon-lips", Compressible, NotBinary)
- lazy val `vnd.capasystems-pg+json`: MediaType =
- new MediaType("application", "vnd.capasystems-pg+json", Compressible, NotBinary)
- lazy val `vnd.cendio.thinlinc.clientconf`: MediaType =
- new MediaType("application", "vnd.cendio.thinlinc.clientconf", Compressible, NotBinary)
- lazy val `vnd.century-systems.tcp_stream`: MediaType =
- new MediaType("application", "vnd.century-systems.tcp_stream", Compressible, NotBinary)
- lazy val `vnd.chemdraw+xml`: MediaType =
- new MediaType("application", "vnd.chemdraw+xml", Compressible, NotBinary, List("cdxml"))
- lazy val `vnd.chess-pgn`: MediaType =
- new MediaType("application", "vnd.chess-pgn", Compressible, NotBinary)
- lazy val `vnd.chipnuts.karaoke-mmd`: MediaType = new MediaType(
- "application",
- "vnd.chipnuts.karaoke-mmd",
- Compressible,
- NotBinary,
- List("mmd"),
- )
- lazy val `vnd.ciedi`: MediaType =
- new MediaType("application", "vnd.ciedi", Compressible, NotBinary)
- lazy val `vnd.cinderella`: MediaType =
- new MediaType("application", "vnd.cinderella", Compressible, NotBinary, List("cdy"))
- lazy val `vnd.cirpack.isdn-ext`: MediaType =
- new MediaType("application", "vnd.cirpack.isdn-ext", Compressible, NotBinary)
- lazy val `vnd.citationstyles.style+xml`: MediaType = new MediaType(
- "application",
- "vnd.citationstyles.style+xml",
- Compressible,
- NotBinary,
- List("csl"),
- )
- lazy val `vnd.claymore`: MediaType =
- new MediaType("application", "vnd.claymore", Compressible, NotBinary, List("cla"))
- lazy val `vnd.cloanto.rp9`: MediaType =
- new MediaType("application", "vnd.cloanto.rp9", Compressible, NotBinary, List("rp9"))
- lazy val `vnd.clonk.c4group`: MediaType = new MediaType(
- "application",
- "vnd.clonk.c4group",
- Compressible,
- NotBinary,
- List("c4g", "c4d", "c4f", "c4p", "c4u"),
- )
- lazy val `vnd.cluetrust.cartomobile-config`: MediaType = new MediaType(
- "application",
- "vnd.cluetrust.cartomobile-config",
- Compressible,
- NotBinary,
- List("c11amc"),
- )
- lazy val `vnd.cluetrust.cartomobile-config-pkg`: MediaType = new MediaType(
- "application",
- "vnd.cluetrust.cartomobile-config-pkg",
- Compressible,
- NotBinary,
- List("c11amz"),
- )
- lazy val `vnd.coffeescript`: MediaType =
- new MediaType("application", "vnd.coffeescript", Compressible, NotBinary)
- lazy val `vnd.collabio.xodocuments.document`: MediaType =
- new MediaType("application", "vnd.collabio.xodocuments.document", Compressible, NotBinary)
- lazy val `vnd.collabio.xodocuments.document-template`: MediaType = new MediaType(
+
+ lazy val `vnd.oma.dd2+xml`: MediaType =
+ new MediaType("application", "vnd.oma.dd2+xml", compressible = true, binary = true, List("dd2"))
+
+ lazy val `vnd.sealed.doc`: MediaType =
+ new MediaType("application", "vnd.sealed.doc", compressible = false, binary = true)
+
+ lazy val `vnd.wrq-hp3000-labelled`: MediaType =
+ new MediaType("application", "vnd.wrq-hp3000-labelled", compressible = false, binary = true)
+
+ lazy val `vnd.arastra.swi`: MediaType =
+ new MediaType("application", "vnd.arastra.swi", compressible = false, binary = true)
+
+ lazy val `vnd.flographit`: MediaType =
+ new MediaType("application", "vnd.flographit", compressible = false, binary = true, List("gph"))
+
+ lazy val `winhlp`: MediaType =
+ new MediaType("application", "winhlp", compressible = false, binary = true, List("hlp"))
+
+ lazy val `vnd.dbf`: MediaType =
+ new MediaType("application", "vnd.dbf", compressible = false, binary = true, List("dbf"))
+
+ lazy val `x-latex`: MediaType =
+ new MediaType("application", "x-latex", compressible = false, binary = true, List("latex"))
+
+ lazy val `td+json`: MediaType =
+ new MediaType("application", "td+json", compressible = true, binary = false)
+
+ lazy val `vnd.3gpp-prose-pc3ch+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp-prose-pc3ch+xml", compressible = true, binary = true)
+
+ lazy val `cda+xml`: MediaType =
+ new MediaType("application", "cda+xml", compressible = true, binary = true)
+
+ lazy val `vnd.gridmp`: MediaType =
+ new MediaType("application", "vnd.gridmp", compressible = false, binary = true)
+
+ lazy val `vnd.dataresource+json`: MediaType =
+ new MediaType("application", "vnd.dataresource+json", compressible = true, binary = false)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.collabio.xodocuments.document-template",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.collabio.xodocuments.presentation`: MediaType = new MediaType(
+
+ lazy val `news-checkgroups`: MediaType =
+ new MediaType("application", "news-checkgroups", compressible = false, binary = true)
+
+ lazy val `vnd.solent.sdkm+xml`: MediaType =
+ new MediaType("application", "vnd.solent.sdkm+xml", compressible = true, binary = true, List("sdkm", "sdkd"))
+
+ lazy val `atfx`: MediaType =
+ new MediaType("application", "atfx", compressible = false, binary = true)
+
+ lazy val `vnd.globalplatform.card-content-mgt`: MediaType =
+ new MediaType("application", "vnd.globalplatform.card-content-mgt", compressible = false, binary = true)
+
+ lazy val `vnd.acucobol`: MediaType =
+ new MediaType("application", "vnd.acucobol", compressible = false, binary = true, List("acu"))
+
+ lazy val `vnd.adobe.fxp`: MediaType =
+ new MediaType("application", "vnd.adobe.fxp", compressible = false, binary = true, List("fxp", "fxpl"))
+
+ lazy val `vnd.ms-wpl`: MediaType =
+ new MediaType("application", "vnd.ms-wpl", compressible = false, binary = true, List("wpl"))
+
+ lazy val `x-bzip`: MediaType =
+ new MediaType("application", "x-bzip", compressible = false, binary = true, List("bz"))
+
+ lazy val `vnd.leap+json`: MediaType =
+ new MediaType("application", "vnd.leap+json", compressible = true, binary = false)
+
+ lazy val `vnd.dynageo`: MediaType =
+ new MediaType("application", "vnd.dynageo", compressible = false, binary = true, List("geo"))
+
+ lazy val `sensml+json`: MediaType =
+ new MediaType("application", "sensml+json", compressible = true, binary = false)
+
+ lazy val `vnd.collection.next+json`: MediaType =
+ new MediaType("application", "vnd.collection.next+json", compressible = true, binary = false)
+
+ lazy val `coap-payload`: MediaType =
+ new MediaType("application", "coap-payload", compressible = false, binary = true)
+
+ lazy val `vnd.sss-dtf`: MediaType =
+ new MediaType("application", "vnd.sss-dtf", compressible = false, binary = true)
+
+ lazy val `postscript`: MediaType =
+ new MediaType("application", "postscript", compressible = true, binary = true, List("ai", "eps", "ps"))
+
+ lazy val `timestamp-reply`: MediaType =
+ new MediaType("application", "timestamp-reply", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.mheg5`: MediaType =
+ new MediaType("application", "vnd.etsi.mheg5", compressible = false, binary = true)
+
+ lazy val `vnd.fuzzysheet`: MediaType =
+ new MediaType("application", "vnd.fuzzysheet", compressible = false, binary = true, List("fzs"))
+
+ lazy val `vnd.oipf.spdlist+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.spdlist+xml", compressible = true, binary = true)
+
+ lazy val `x-cocoa`: MediaType =
+ new MediaType("application", "x-cocoa", compressible = false, binary = true, List("cco"))
+
+ lazy val `vnd.3gpp.gmop+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.gmop+xml", compressible = true, binary = true)
+
+ lazy val `vnd.exstream-empower+zip`: MediaType =
+ new MediaType("application", "vnd.exstream-empower+zip", compressible = false, binary = true)
+
+ lazy val `vnd.omads-folder+xml`: MediaType =
+ new MediaType("application", "vnd.omads-folder+xml", compressible = true, binary = true)
+
+ lazy val `vnd.google-apps.presentation`: MediaType =
+ new MediaType("application", "vnd.google-apps.presentation", compressible = false, binary = true, List("gslides"))
+
+ lazy val `vnd.syncml.dm.notification`: MediaType =
+ new MediaType("application", "vnd.syncml.dm.notification", compressible = false, binary = true)
+
+ lazy val `x-stuffit`: MediaType =
+ new MediaType("application", "x-stuffit", compressible = false, binary = true, List("sit"))
+
+ lazy val `vnd.motorola.flexsuite.adsi`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite.adsi", compressible = false, binary = true)
+
+ lazy val `xcon-conference-info-diff+xml`: MediaType =
+ new MediaType("application", "xcon-conference-info-diff+xml", compressible = true, binary = true)
+
+ lazy val `docbook+xml`: MediaType =
+ new MediaType("application", "docbook+xml", compressible = true, binary = true, List("dbk"))
+
+ lazy val `vnd.eudora.data`: MediaType =
+ new MediaType("application", "vnd.eudora.data", compressible = false, binary = true)
+
+ lazy val `vnd.ntt-local.content-share`: MediaType =
+ new MediaType("application", "vnd.ntt-local.content-share", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.iptvprofile+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvprofile+xml", compressible = true, binary = true)
+
+ lazy val `vnd.mediastation.cdkey`: MediaType =
+ new MediaType("application", "vnd.mediastation.cdkey", compressible = false, binary = true, List("cdkey"))
+
+ lazy val `sgml-open-catalog`: MediaType =
+ new MediaType("application", "sgml-open-catalog", compressible = false, binary = true)
+
+ lazy val `x-lzh-compressed`: MediaType =
+ new MediaType("application", "x-lzh-compressed", compressible = false, binary = true, List("lzh", "lha"))
+
+ lazy val `vnd.sealed.eml`: MediaType =
+ new MediaType("application", "vnd.sealed.eml", compressible = false, binary = true)
+
+ lazy val `aml`: MediaType =
+ new MediaType("application", "aml", compressible = false, binary = true)
+
+ lazy val `vnd.oma.bcast.sgboot`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.sgboot", compressible = false, binary = true)
+
+ lazy val `scvp-cv-response`: MediaType =
+ new MediaType("application", "scvp-cv-response", compressible = false, binary = true, List("scs"))
+
+ lazy val `vnd.cyclonedx+json`: MediaType =
+ new MediaType("application", "vnd.cyclonedx+json", compressible = true, binary = false)
+
+ lazy val `vnd.ms-wmdrm.meter-chlg-req`: MediaType =
+ new MediaType("application", "vnd.ms-wmdrm.meter-chlg-req", compressible = false, binary = true)
+
+ lazy val `vnd.fujifilm.fb.jfi+xml`: MediaType =
+ new MediaType("application", "vnd.fujifilm.fb.jfi+xml", compressible = true, binary = true)
+
+ lazy val `xproc+xml`: MediaType =
+ new MediaType("application", "xproc+xml", compressible = true, binary = true, List("xpl"))
+
+ lazy val `vnd.rn-realmedia`: MediaType =
+ new MediaType("application", "vnd.rn-realmedia", compressible = false, binary = true, List("rm"))
+
+ lazy val `ulpfec`: MediaType =
+ new MediaType("application", "ulpfec", compressible = false, binary = true)
+
+ lazy val `vnd.genozip`: MediaType =
+ new MediaType("application", "vnd.genozip", compressible = false, binary = true)
+
+ lazy val `vnd.opentimestamps.ots`: MediaType =
+ new MediaType("application", "vnd.opentimestamps.ots", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.text-web`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.text-web", compressible = false, binary = true, List("oth"))
+
+ lazy val `dcd`: MediaType =
+ new MediaType("application", "dcd", compressible = false, binary = true)
+
+ lazy val `vnd.oipf.ueprofile+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.ueprofile+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-word.document.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.collabio.xodocuments.presentation",
- Compressible,
- NotBinary,
+ "vnd.ms-word.document.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("docm"),
)
- lazy val `vnd.collabio.xodocuments.presentation-template`: MediaType = new MediaType(
+
+ lazy val `vnd.vidsoft.vidconference`: MediaType =
+ new MediaType("application", "vnd.vidsoft.vidconference", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.iptvdiscovery+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvdiscovery+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oma.poc.invocation-descriptor+xml`: MediaType =
+ new MediaType("application", "vnd.oma.poc.invocation-descriptor+xml", compressible = true, binary = true)
+
+ lazy val `x-arj`: MediaType =
+ new MediaType("application", "x-arj", compressible = false, binary = true, List("arj"))
+
+ lazy val `slate`: MediaType =
+ new MediaType("application", "slate", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.graphics`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.graphics", compressible = false, binary = true, List("odg"))
+
+ lazy val `vnd.patientecommsdoc`: MediaType =
+ new MediaType("application", "vnd.patientecommsdoc", compressible = false, binary = true)
+
+ lazy val `x-director`: MediaType =
+ new MediaType(
"application",
- "vnd.collabio.xodocuments.presentation-template",
- Compressible,
- NotBinary,
+ "x-director",
+ compressible = false,
+ binary = true,
+ List("dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"),
)
- lazy val `vnd.collabio.xodocuments.spreadsheet`: MediaType = new MediaType(
+
+ lazy val `gpx+xml`: MediaType =
+ new MediaType("application", "gpx+xml", compressible = true, binary = true, List("gpx"))
+
+ lazy val `vnd.rig.cryptonote`: MediaType =
+ new MediaType("application", "vnd.rig.cryptonote", compressible = false, binary = true, List("cryptonote"))
+
+ lazy val `vnd.syncml.dmddf+wbxml`: MediaType =
+ new MediaType("application", "vnd.syncml.dmddf+wbxml", compressible = false, binary = true)
+
+ lazy val `x-javascript`: MediaType =
+ new MediaType("application", "x-javascript", compressible = true, binary = false)
+
+ lazy val `x-pkcs7-certreqresp`: MediaType =
+ new MediaType("application", "x-pkcs7-certreqresp", compressible = false, binary = true, List("p7r"))
+
+ lazy val `patch-ops-error+xml`: MediaType =
+ new MediaType("application", "patch-ops-error+xml", compressible = true, binary = true, List("xer"))
+
+ lazy val `vnd.fujifilm.fb.docuworks`: MediaType =
+ new MediaType("application", "vnd.fujifilm.fb.docuworks", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.iptvsad-bc+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvsad-bc+xml", compressible = true, binary = true)
+
+ lazy val `vnd.criticaltools.wbs+xml`: MediaType =
+ new MediaType("application", "vnd.criticaltools.wbs+xml", compressible = true, binary = true, List("wbs"))
+
+ lazy val `pidf-diff+xml`: MediaType =
+ new MediaType("application", "pidf-diff+xml", compressible = true, binary = true)
+
+ lazy val `vnd.familysearch.gedcom+zip`: MediaType =
+ new MediaType("application", "vnd.familysearch.gedcom+zip", compressible = false, binary = true)
+
+ lazy val `x-xz`: MediaType =
+ new MediaType("application", "x-xz", compressible = false, binary = true, List("xz"))
+
+ lazy val `cose-key`: MediaType =
+ new MediaType("application", "cose-key", compressible = false, binary = true)
+
+ lazy val `jscalendar+json`: MediaType =
+ new MediaType("application", "jscalendar+json", compressible = true, binary = false)
+
+ lazy val `dicom+xml`: MediaType =
+ new MediaType("application", "dicom+xml", compressible = true, binary = true)
+
+ lazy val `vnd.kde.kword`: MediaType =
+ new MediaType("application", "vnd.kde.kword", compressible = false, binary = true, List("kwd", "kwt"))
+
+ lazy val `vnd.syncml.dmddf+xml`: MediaType =
+ new MediaType("application", "vnd.syncml.dmddf+xml", compressible = true, binary = true, List("ddf"))
+
+ lazy val `vnd.oma.xcap-directory+xml`: MediaType =
+ new MediaType("application", "vnd.oma.xcap-directory+xml", compressible = true, binary = true)
+
+ lazy val `vnd.nokia.catalogs`: MediaType =
+ new MediaType("application", "vnd.nokia.catalogs", compressible = false, binary = true)
+
+ lazy val `reputon+json`: MediaType =
+ new MediaType("application", "reputon+json", compressible = true, binary = false)
+
+ lazy val `vnd.acucorp`: MediaType =
+ new MediaType("application", "vnd.acucorp", compressible = false, binary = true, List("atc", "acutc"))
+
+ lazy val `vnd.jam`: MediaType =
+ new MediaType("application", "vnd.jam", compressible = false, binary = true, List("jam"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.styles+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.collabio.xodocuments.spreadsheet",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.collabio.xodocuments.spreadsheet-template`: MediaType = new MediaType(
+
+ lazy val `pvd+json`: MediaType =
+ new MediaType("application", "pvd+json", compressible = true, binary = false)
+
+ lazy val `vnd.uplanet.list`: MediaType =
+ new MediaType("application", "vnd.uplanet.list", compressible = false, binary = true)
+
+ lazy val `vnd.verimatrix.vcas`: MediaType =
+ new MediaType("application", "vnd.verimatrix.vcas", compressible = false, binary = true)
+
+ lazy val `vnd.bint.med-content`: MediaType =
+ new MediaType("application", "vnd.bint.med-content", compressible = false, binary = true)
+
+ lazy val `ld+json`: MediaType =
+ new MediaType("application", "ld+json", compressible = true, binary = false, List("jsonld"))
+
+ lazy val `x-virtualbox-ova`: MediaType =
+ new MediaType("application", "x-virtualbox-ova", compressible = true, binary = true, List("ova"))
+
+ lazy val `tei+xml`: MediaType =
+ new MediaType("application", "tei+xml", compressible = true, binary = true, List("tei", "teicorpus"))
+
+ lazy val `rpki-ghostbusters`: MediaType =
+ new MediaType("application", "rpki-ghostbusters", compressible = false, binary = true, List("gbr"))
+
+ lazy val `vnd.oipf.contentaccessstreaming+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.contentaccessstreaming+xml", compressible = true, binary = true)
+
+ lazy val `atf`: MediaType =
+ new MediaType("application", "atf", compressible = false, binary = true)
+
+ lazy val `smil`: MediaType =
+ new MediaType("application", "smil", compressible = false, binary = true)
+
+ lazy val `vnd.afpc.foca-codepage`: MediaType =
+ new MediaType("application", "vnd.afpc.foca-codepage", compressible = false, binary = true)
+
+ lazy val `vnd.ficlab.flb+zip`: MediaType =
+ new MediaType("application", "vnd.ficlab.flb+zip", compressible = false, binary = true)
+
+ lazy val `vnd.afpc.afplinedata`: MediaType =
+ new MediaType("application", "vnd.afpc.afplinedata", compressible = false, binary = true)
+
+ lazy val `opc-nodeset+xml`: MediaType =
+ new MediaType("application", "opc-nodeset+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ibm.rights-management`: MediaType =
+ new MediaType("application", "vnd.ibm.rights-management", compressible = false, binary = true, List("irm"))
+
+ lazy val `x-silverlight-app`: MediaType =
+ new MediaType("application", "x-silverlight-app", compressible = false, binary = true, List("xap"))
+
+ lazy val `x-font-libgrx`: MediaType =
+ new MediaType("application", "x-font-libgrx", compressible = false, binary = true)
+
+ lazy val `alto-directory+json`: MediaType =
+ new MediaType("application", "alto-directory+json", compressible = true, binary = false)
+
+ lazy val `zlib`: MediaType =
+ new MediaType("application", "zlib", compressible = false, binary = true)
+
+ lazy val `vnd.japannet-verification`: MediaType =
+ new MediaType("application", "vnd.japannet-verification", compressible = false, binary = true)
+
+ lazy val `vnd.patentdive`: MediaType =
+ new MediaType("application", "vnd.patentdive", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.drawing+xml`: MediaType =
+ new MediaType("application", "vnd.openxmlformats-officedocument.drawing+xml", compressible = true, binary = true)
+
+ lazy val `vnd.commerce-battelle`: MediaType =
+ new MediaType("application", "vnd.commerce-battelle", compressible = false, binary = true)
+
+ lazy val `vnd.wap.wmlscriptc`: MediaType =
+ new MediaType("application", "vnd.wap.wmlscriptc", compressible = false, binary = true, List("wmlsc"))
+
+ lazy val `atxml`: MediaType =
+ new MediaType("application", "atxml", compressible = false, binary = true)
+
+ lazy val `secevent+jwt`: MediaType =
+ new MediaType("application", "secevent+jwt", compressible = false, binary = true)
+
+ lazy val `multipart-core`: MediaType =
+ new MediaType("application", "multipart-core", compressible = false, binary = true)
+
+ lazy val `cms`: MediaType =
+ new MediaType("application", "cms", compressible = false, binary = true)
+
+ lazy val `vnd.panoply`: MediaType =
+ new MediaType("application", "vnd.panoply", compressible = false, binary = true)
+
+ lazy val `srgs+xml`: MediaType =
+ new MediaType("application", "srgs+xml", compressible = true, binary = true, List("grxml"))
+
+ lazy val `x-csh`: MediaType =
+ new MediaType("application", "x-csh", compressible = false, binary = true, List("csh"))
+
+ lazy val `vnd.oma.bcast.associated-procedure-parameter+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.collabio.xodocuments.spreadsheet-template",
- Compressible,
- NotBinary,
+ "vnd.oma.bcast.associated-procedure-parameter+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.collection+json`: MediaType =
- new MediaType("application", "vnd.collection+json", Compressible, NotBinary)
- lazy val `vnd.collection.doc+json`: MediaType =
- new MediaType("application", "vnd.collection.doc+json", Compressible, NotBinary)
- lazy val `vnd.collection.next+json`: MediaType =
- new MediaType("application", "vnd.collection.next+json", Compressible, NotBinary)
- lazy val `vnd.comicbook+zip`: MediaType =
- new MediaType("application", "vnd.comicbook+zip", Uncompressible, NotBinary)
- lazy val `vnd.comicbook-rar`: MediaType =
- new MediaType("application", "vnd.comicbook-rar", Compressible, NotBinary)
- lazy val `vnd.commerce-battelle`: MediaType =
- new MediaType("application", "vnd.commerce-battelle", Compressible, NotBinary)
- lazy val `vnd.commonspace`: MediaType =
- new MediaType("application", "vnd.commonspace", Compressible, NotBinary, List("csp"))
- lazy val `vnd.contact.cmsg`: MediaType =
- new MediaType("application", "vnd.contact.cmsg", Compressible, NotBinary, List("cdbcmsg"))
- lazy val `vnd.coreos.ignition+json`: MediaType =
- new MediaType("application", "vnd.coreos.ignition+json", Compressible, NotBinary)
- lazy val `vnd.cosmocaller`: MediaType =
- new MediaType("application", "vnd.cosmocaller", Compressible, NotBinary, List("cmc"))
- lazy val `vnd.crick.clicker`: MediaType =
- new MediaType("application", "vnd.crick.clicker", Compressible, NotBinary, List("clkx"))
- lazy val `vnd.crick.clicker.keyboard`: MediaType = new MediaType(
+
+ lazy val `vnd.radisys.msml-dialog+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog+xml", compressible = true, binary = true)
+
+ lazy val `vnd.dvb.notif-init+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-init+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ecowin.seriesrequest`: MediaType =
+ new MediaType("application", "vnd.ecowin.seriesrequest", compressible = false, binary = true)
+
+ lazy val `vnd.oma.bcast.sgdd+xml`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.sgdd+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.pic-bw-var`: MediaType =
+ new MediaType("application", "vnd.3gpp.pic-bw-var", compressible = false, binary = true, List("pvb"))
+
+ lazy val `iges`: MediaType =
+ new MediaType("application", "iges", compressible = false, binary = true)
+
+ lazy val `msixbundle`: MediaType =
+ new MediaType("application", "msixbundle", compressible = false, binary = true, List("msixbundle"))
+
+ lazy val `vnd.noblenet-sealer`: MediaType =
+ new MediaType("application", "vnd.noblenet-sealer", compressible = false, binary = true, List("nns"))
+
+ lazy val `dec-dx`: MediaType =
+ new MediaType("application", "dec-dx", compressible = false, binary = true)
+
+ lazy val `manifest+json`: MediaType =
+ new MediaType("application", "manifest+json", compressible = true, binary = false, List("webmanifest"))
+
+ lazy val `vnd.apple.mpegurl`: MediaType =
+ new MediaType("application", "vnd.apple.mpegurl", compressible = false, binary = true, List("m3u8"))
+
+ lazy val `vnd.adobe.formscentral.fcdt`: MediaType =
+ new MediaType("application", "vnd.adobe.formscentral.fcdt", compressible = false, binary = true, List("fcdt"))
+
+ lazy val `vnd.gentoo.gpkg`: MediaType =
+ new MediaType("application", "vnd.gentoo.gpkg", compressible = false, binary = true)
+
+ lazy val `mosskey-request`: MediaType =
+ new MediaType("application", "mosskey-request", compressible = false, binary = true)
+
+ lazy val `yang-data+xml`: MediaType =
+ new MediaType("application", "yang-data+xml", compressible = true, binary = true)
+
+ lazy val `x-abiword`: MediaType =
+ new MediaType("application", "x-abiword", compressible = false, binary = true, List("abw"))
+
+ lazy val `mbox`: MediaType =
+ new MediaType("application", "mbox", compressible = false, binary = true, List("mbox"))
+
+ lazy val `vnd.apache.thrift.binary`: MediaType =
+ new MediaType("application", "vnd.apache.thrift.binary", compressible = false, binary = true)
+
+ lazy val `x-makeself`: MediaType =
+ new MediaType("application", "x-makeself", compressible = false, binary = true, List("run"))
+
+ lazy val `vnd.debian.binary-package`: MediaType =
+ new MediaType("application", "vnd.debian.binary-package", compressible = false, binary = true)
+
+ lazy val `vnd.google-earth.kmz`: MediaType =
+ new MediaType("application", "vnd.google-earth.kmz", compressible = false, binary = true, List("kmz"))
+
+ lazy val `x-shockwave-flash`: MediaType =
+ new MediaType("application", "x-shockwave-flash", compressible = false, binary = true, List("swf"))
+
+ lazy val `emergencycalldata.providerinfo+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.providerinfo+xml", compressible = true, binary = true)
+
+ lazy val `fdt+xml`: MediaType =
+ new MediaType("application", "fdt+xml", compressible = true, binary = true, List("fdt"))
+
+ lazy val `rtx`: MediaType =
+ new MediaType("application", "rtx", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.landmark+wbxml`: MediaType =
+ new MediaType("application", "vnd.nokia.landmark+wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.intu.qfx`: MediaType =
+ new MediaType("application", "vnd.intu.qfx", compressible = false, binary = true, List("qfx"))
+
+ lazy val `lpf+zip`: MediaType =
+ new MediaType("application", "lpf+zip", compressible = false, binary = true)
+
+ lazy val `vnd.ims.lti.v2.toolsettings+json`: MediaType =
+ new MediaType("application", "vnd.ims.lti.v2.toolsettings+json", compressible = true, binary = false)
+
+ lazy val `vnd.afpc.modca-overlay`: MediaType =
+ new MediaType("application", "vnd.afpc.modca-overlay", compressible = false, binary = true)
+
+ lazy val `vnd.osgeo.mapguide.package`: MediaType =
+ new MediaType("application", "vnd.osgeo.mapguide.package", compressible = false, binary = true, List("mgp"))
+
+ lazy val `vnd.yamaha.remote-setup`: MediaType =
+ new MediaType("application", "vnd.yamaha.remote-setup", compressible = false, binary = true)
+
+ lazy val `vnd.cyan.dean.root+xml`: MediaType =
+ new MediaType("application", "vnd.cyan.dean.root+xml", compressible = true, binary = true)
+
+ lazy val `ubjson`: MediaType =
+ new MediaType("application", "ubjson", compressible = false, binary = false, List("ubj"))
+
+ lazy val `vnd.dolby.mobile.1`: MediaType =
+ new MediaType("application", "vnd.dolby.mobile.1", compressible = false, binary = true)
+
+ lazy val `mbms-envelope+xml`: MediaType =
+ new MediaType("application", "mbms-envelope+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.presentation`: MediaType =
+ new MediaType(
"application",
- "vnd.crick.clicker.keyboard",
- Compressible,
- NotBinary,
- List("clkk"),
+ "vnd.openxmlformats-officedocument.presentationml.presentation",
+ compressible = false,
+ binary = true,
+ List("pptx"),
)
- lazy val `vnd.crick.clicker.palette`: MediaType = new MediaType(
+
+ lazy val `cdfx+xml`: MediaType =
+ new MediaType("application", "cdfx+xml", compressible = true, binary = true, List("cdfx"))
+
+ lazy val `vnd.hydrostatix.sof-data`: MediaType =
+ new MediaType("application", "vnd.hydrostatix.sof-data", compressible = false, binary = true, List("sfd-hdstx"))
+
+ lazy val `vnd.afpc.afplinedata-pagedef`: MediaType =
+ new MediaType("application", "vnd.afpc.afplinedata-pagedef", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.crick.clicker.palette",
- Compressible,
- NotBinary,
- List("clkp"),
+ "vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.crick.clicker.template`: MediaType = new MediaType(
+
+ lazy val `aif+cbor`: MediaType =
+ new MediaType("application", "aif+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.template`: MediaType =
+ new MediaType(
"application",
- "vnd.crick.clicker.template",
- Compressible,
- NotBinary,
- List("clkt"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.template",
+ compressible = false,
+ binary = true,
+ List("xltx"),
)
- lazy val `vnd.crick.clicker.wordbank`: MediaType = new MediaType(
+
+ lazy val `appxbundle`: MediaType =
+ new MediaType("application", "appxbundle", compressible = false, binary = true, List("appxbundle"))
+
+ lazy val `vnd.koan`: MediaType =
+ new MediaType("application", "vnd.koan", compressible = false, binary = true, List("skp", "skd", "skt", "skm"))
+
+ lazy val `vnd.osa.netdeploy`: MediaType =
+ new MediaType("application", "vnd.osa.netdeploy", compressible = false, binary = true)
+
+ lazy val `mbms-msk+xml`: MediaType =
+ new MediaType("application", "mbms-msk+xml", compressible = true, binary = true)
+
+ lazy val `vnd.dece.unspecified`: MediaType =
+ new MediaType("application", "vnd.dece.unspecified", compressible = false, binary = true, List("uvx", "uvvx"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.crick.clicker.wordbank",
- Compressible,
- NotBinary,
- List("clkw"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.criticaltools.wbs+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.fujifilm.fb.docuworks.binder`: MediaType =
+ new MediaType("application", "vnd.fujifilm.fb.docuworks.binder", compressible = false, binary = true)
+
+ lazy val `x-ms-application`: MediaType =
+ new MediaType("application", "x-ms-application", compressible = false, binary = true, List("application"))
+
+ lazy val `n-quads`: MediaType =
+ new MediaType("application", "n-quads", compressible = false, binary = true, List("nq"))
+
+ lazy val `davmount+xml`: MediaType =
+ new MediaType("application", "davmount+xml", compressible = true, binary = true, List("davmount"))
+
+ lazy val `vnd.oasis.opendocument.graphics-template`: MediaType =
+ new MediaType(
"application",
- "vnd.criticaltools.wbs+xml",
- Compressible,
- NotBinary,
- List("wbs"),
+ "vnd.oasis.opendocument.graphics-template",
+ compressible = false,
+ binary = true,
+ List("otg"),
)
- lazy val `vnd.cryptii.pipe+json`: MediaType =
- new MediaType("application", "vnd.cryptii.pipe+json", Compressible, NotBinary)
- lazy val `vnd.crypto-shade-file`: MediaType =
- new MediaType("application", "vnd.crypto-shade-file", Compressible, NotBinary)
- lazy val `vnd.cryptomator.encrypted`: MediaType =
- new MediaType("application", "vnd.cryptomator.encrypted", Compressible, NotBinary)
- lazy val `vnd.cryptomator.vault`: MediaType =
- new MediaType("application", "vnd.cryptomator.vault", Compressible, NotBinary)
- lazy val `vnd.ctc-posml`: MediaType =
- new MediaType("application", "vnd.ctc-posml", Compressible, NotBinary, List("pml"))
- lazy val `vnd.ctct.ws+xml`: MediaType =
- new MediaType("application", "vnd.ctct.ws+xml", Compressible, NotBinary)
- lazy val `vnd.cups-pdf`: MediaType =
- new MediaType("application", "vnd.cups-pdf", Compressible, NotBinary)
- lazy val `vnd.cups-postscript`: MediaType =
- new MediaType("application", "vnd.cups-postscript", Compressible, NotBinary)
- lazy val `vnd.cups-ppd`: MediaType =
- new MediaType("application", "vnd.cups-ppd", Compressible, NotBinary, List("ppd"))
- lazy val `vnd.cups-raster`: MediaType =
- new MediaType("application", "vnd.cups-raster", Compressible, NotBinary)
- lazy val `vnd.cups-raw`: MediaType =
- new MediaType("application", "vnd.cups-raw", Compressible, NotBinary)
- lazy val `vnd.curl`: MediaType =
- new MediaType("application", "vnd.curl", Compressible, NotBinary)
- lazy val `vnd.curl.car`: MediaType =
- new MediaType("application", "vnd.curl.car", Compressible, NotBinary, List("car"))
- lazy val `vnd.curl.pcurl`: MediaType =
- new MediaType("application", "vnd.curl.pcurl", Compressible, NotBinary, List("pcurl"))
- lazy val `vnd.cyan.dean.root+xml`: MediaType =
- new MediaType("application", "vnd.cyan.dean.root+xml", Compressible, NotBinary)
- lazy val `vnd.cybank`: MediaType =
- new MediaType("application", "vnd.cybank", Compressible, NotBinary)
- lazy val `vnd.cyclonedx+json`: MediaType =
- new MediaType("application", "vnd.cyclonedx+json", Compressible, NotBinary)
- lazy val `vnd.cyclonedx+xml`: MediaType =
- new MediaType("application", "vnd.cyclonedx+xml", Compressible, NotBinary)
- lazy val `vnd.d2l.coursepackage1p0+zip`: MediaType =
- new MediaType("application", "vnd.d2l.coursepackage1p0+zip", Uncompressible, NotBinary)
- lazy val `vnd.d3m-dataset`: MediaType =
- new MediaType("application", "vnd.d3m-dataset", Compressible, NotBinary)
- lazy val `vnd.d3m-problem`: MediaType =
- new MediaType("application", "vnd.d3m-problem", Compressible, NotBinary)
- lazy val `vnd.dart`: MediaType =
- new MediaType("application", "vnd.dart", Compressible, NotBinary, List("dart"))
- lazy val `vnd.data-vision.rdz`: MediaType =
- new MediaType("application", "vnd.data-vision.rdz", Compressible, NotBinary, List("rdz"))
- lazy val `vnd.datapackage+json`: MediaType =
- new MediaType("application", "vnd.datapackage+json", Compressible, NotBinary)
- lazy val `vnd.dataresource+json`: MediaType =
- new MediaType("application", "vnd.dataresource+json", Compressible, NotBinary)
- lazy val `vnd.dbf`: MediaType =
- new MediaType("application", "vnd.dbf", Compressible, NotBinary, List("dbf"))
- lazy val `vnd.debian.binary-package`: MediaType =
- new MediaType("application", "vnd.debian.binary-package", Compressible, NotBinary)
- lazy val `vnd.dece.data`: MediaType = new MediaType(
+
+ lazy val `vnd.emclient.accessrequest+xml`: MediaType =
+ new MediaType("application", "vnd.emclient.accessrequest+xml", compressible = true, binary = true)
+
+ lazy val `vnd.efi.img`: MediaType =
+ new MediaType("application", "vnd.efi.img", compressible = false, binary = true)
+
+ lazy val `x-iwork-pages-sffpages`: MediaType =
+ new MediaType("application", "x-iwork-pages-sffpages", compressible = false, binary = true, List("pages"))
+
+ lazy val `mipc`: MediaType =
+ new MediaType("application", "mipc", compressible = false, binary = true)
+
+ lazy val `vnd.lotus-approach`: MediaType =
+ new MediaType("application", "vnd.lotus-approach", compressible = false, binary = true, List("apr"))
+
+ lazy val `vnd.bmi`: MediaType =
+ new MediaType("application", "vnd.bmi", compressible = false, binary = true, List("bmi"))
+
+ lazy val `vnd.dece.ttml+xml`: MediaType =
+ new MediaType("application", "vnd.dece.ttml+xml", compressible = true, binary = true, List("uvt", "uvvt"))
+
+ lazy val `vnd.shana.informed.formtemplate`: MediaType =
+ new MediaType("application", "vnd.shana.informed.formtemplate", compressible = false, binary = true, List("itp"))
+
+ lazy val `vnd.3gpp.mcdata-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oma-scws-http-request`: MediaType =
+ new MediaType("application", "vnd.oma-scws-http-request", compressible = false, binary = true)
+
+ lazy val `vnd.hbci`: MediaType =
+ new MediaType("application", "vnd.hbci", compressible = false, binary = true, List("hbci"))
+
+ lazy val `x-xfig`: MediaType =
+ new MediaType("application", "x-xfig", compressible = false, binary = true, List("fig"))
+
+ lazy val `vnd.3gpp.ngap`: MediaType =
+ new MediaType("application", "vnd.3gpp.ngap", compressible = false, binary = true)
+
+ lazy val `route-s-tsid+xml`: MediaType =
+ new MediaType("application", "route-s-tsid+xml", compressible = true, binary = true, List("sls"))
+
+ lazy val `vnd.kenameaapp`: MediaType =
+ new MediaType("application", "vnd.kenameaapp", compressible = false, binary = true, List("htke"))
+
+ lazy val `vnd.kahootz`: MediaType =
+ new MediaType("application", "vnd.kahootz", compressible = false, binary = true, List("ktz", "ktr"))
+
+ lazy val `vnd.cluetrust.cartomobile-config`: MediaType =
+ new MediaType(
"application",
- "vnd.dece.data",
- Compressible,
- NotBinary,
- List("uvf", "uvvf", "uvd", "uvvd"),
+ "vnd.cluetrust.cartomobile-config",
+ compressible = false,
+ binary = true,
+ List("c11amc"),
)
- lazy val `vnd.dece.ttml+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.uplanet.alert`: MediaType =
+ new MediaType("application", "vnd.uplanet.alert", compressible = false, binary = true)
+
+ lazy val `vnd.rar`: MediaType =
+ new MediaType("application", "vnd.rar", compressible = false, binary = true, List("rar"))
+
+ lazy val `vnd.nokia.landmark+xml`: MediaType =
+ new MediaType("application", "vnd.nokia.landmark+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-windows.nwprinting.oob`: MediaType =
+ new MediaType("application", "vnd.ms-windows.nwprinting.oob", compressible = false, binary = true)
+
+ lazy val `vnd.yamaha.hv-script`: MediaType =
+ new MediaType("application", "vnd.yamaha.hv-script", compressible = false, binary = true, List("hvs"))
+
+ lazy val `x-install-instructions`: MediaType =
+ new MediaType("application", "x-install-instructions", compressible = false, binary = true, List("install"))
+
+ lazy val `vnd.evolv.ecig.settings`: MediaType =
+ new MediaType("application", "vnd.evolv.ecig.settings", compressible = false, binary = true)
+
+ lazy val `vnd.pg.osasli`: MediaType =
+ new MediaType("application", "vnd.pg.osasli", compressible = false, binary = true, List("ei6"))
+
+ lazy val `pkcs8`: MediaType =
+ new MediaType("application", "pkcs8", compressible = false, binary = true, List("p8"))
+
+ lazy val `at+jwt`: MediaType =
+ new MediaType("application", "at+jwt", compressible = false, binary = true)
+
+ lazy val `vnd.ntt-local.sip-ta_remote`: MediaType =
+ new MediaType("application", "vnd.ntt-local.sip-ta_remote", compressible = false, binary = true)
+
+ lazy val `vnd.dm.delegation+xml`: MediaType =
+ new MediaType("application", "vnd.dm.delegation+xml", compressible = true, binary = true)
+
+ lazy val `vnd.intergeo`: MediaType =
+ new MediaType("application", "vnd.intergeo", compressible = false, binary = true, List("i2g"))
+
+ lazy val `tamp-apex-update`: MediaType =
+ new MediaType("application", "tamp-apex-update", compressible = false, binary = true)
+
+ lazy val `x-bzip2`: MediaType =
+ new MediaType("application", "x-bzip2", compressible = false, binary = true, List("bz2", "boz"))
+
+ lazy val `vnd.fujixerox.docuworks`: MediaType =
+ new MediaType("application", "vnd.fujixerox.docuworks", compressible = false, binary = true, List("xdw"))
+
+ lazy val `ccmp+xml`: MediaType =
+ new MediaType("application", "ccmp+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ffsns`: MediaType =
+ new MediaType("application", "vnd.ffsns", compressible = false, binary = true)
+
+ lazy val `x-chat`: MediaType =
+ new MediaType("application", "x-chat", compressible = false, binary = true, List("chat"))
+
+ lazy val `vnd.ves.encrypted`: MediaType =
+ new MediaType("application", "vnd.ves.encrypted", compressible = false, binary = true)
+
+ lazy val `vnd.xmpie.ppkg`: MediaType =
+ new MediaType("application", "vnd.xmpie.ppkg", compressible = false, binary = true)
+
+ lazy val `held+xml`: MediaType =
+ new MediaType("application", "held+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-wmdrm.lic-resp`: MediaType =
+ new MediaType("application", "vnd.ms-wmdrm.lic-resp", compressible = false, binary = true)
+
+ lazy val `qsig`: MediaType =
+ new MediaType("application", "qsig", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.presentation-template`: MediaType =
+ new MediaType(
"application",
- "vnd.dece.ttml+xml",
- Compressible,
- NotBinary,
- List("uvt", "uvvt"),
+ "vnd.oasis.opendocument.presentation-template",
+ compressible = false,
+ binary = true,
+ List("otp"),
)
- lazy val `vnd.dece.unspecified`: MediaType = new MediaType(
- "application",
- "vnd.dece.unspecified",
- Compressible,
- NotBinary,
- List("uvx", "uvvx"),
- )
- lazy val `vnd.dece.zip`: MediaType =
- new MediaType("application", "vnd.dece.zip", Compressible, NotBinary, List("uvz", "uvvz"))
- lazy val `vnd.denovo.fcselayout-link`: MediaType = new MediaType(
- "application",
- "vnd.denovo.fcselayout-link",
- Compressible,
- NotBinary,
- List("fe_launch"),
- )
- lazy val `vnd.desmume.movie`: MediaType =
- new MediaType("application", "vnd.desmume.movie", Compressible, NotBinary)
- lazy val `vnd.dir-bi.plate-dl-nosuffix`: MediaType =
- new MediaType("application", "vnd.dir-bi.plate-dl-nosuffix", Compressible, NotBinary)
- lazy val `vnd.dm.delegation+xml`: MediaType =
- new MediaType("application", "vnd.dm.delegation+xml", Compressible, NotBinary)
- lazy val `vnd.dna`: MediaType =
- new MediaType("application", "vnd.dna", Compressible, NotBinary, List("dna"))
- lazy val `vnd.document+json`: MediaType =
- new MediaType("application", "vnd.document+json", Compressible, NotBinary)
- lazy val `vnd.dolby.mlp`: MediaType =
- new MediaType("application", "vnd.dolby.mlp", Compressible, NotBinary, List("mlp"))
- lazy val `vnd.dolby.mobile.1`: MediaType =
- new MediaType("application", "vnd.dolby.mobile.1", Compressible, NotBinary)
- lazy val `vnd.dolby.mobile.2`: MediaType =
- new MediaType("application", "vnd.dolby.mobile.2", Compressible, NotBinary)
- lazy val `vnd.doremir.scorecloud-binary-document`: MediaType = new MediaType(
- "application",
- "vnd.doremir.scorecloud-binary-document",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.dpgraph`: MediaType =
- new MediaType("application", "vnd.dpgraph", Compressible, NotBinary, List("dpg"))
- lazy val `vnd.dreamfactory`: MediaType =
- new MediaType("application", "vnd.dreamfactory", Compressible, NotBinary, List("dfac"))
- lazy val `vnd.drive+json`: MediaType =
- new MediaType("application", "vnd.drive+json", Compressible, NotBinary)
- lazy val `vnd.ds-keypoint`: MediaType =
- new MediaType("application", "vnd.ds-keypoint", Compressible, NotBinary, List("kpxx"))
- lazy val `vnd.dtg.local`: MediaType =
- new MediaType("application", "vnd.dtg.local", Compressible, NotBinary)
- lazy val `vnd.dtg.local.flash`: MediaType =
- new MediaType("application", "vnd.dtg.local.flash", Compressible, NotBinary)
- lazy val `vnd.dtg.local.html`: MediaType =
- new MediaType("application", "vnd.dtg.local.html", Compressible, NotBinary)
- lazy val `vnd.dvb.ait`: MediaType =
- new MediaType("application", "vnd.dvb.ait", Compressible, NotBinary, List("ait"))
- lazy val `vnd.dvb.dvbisl+xml`: MediaType =
- new MediaType("application", "vnd.dvb.dvbisl+xml", Compressible, NotBinary)
- lazy val `vnd.dvb.dvbj`: MediaType =
- new MediaType("application", "vnd.dvb.dvbj", Compressible, NotBinary)
- lazy val `vnd.dvb.esgcontainer`: MediaType =
- new MediaType("application", "vnd.dvb.esgcontainer", Compressible, NotBinary)
- lazy val `vnd.dvb.ipdcdftnotifaccess`: MediaType =
- new MediaType("application", "vnd.dvb.ipdcdftnotifaccess", Compressible, NotBinary)
- lazy val `vnd.dvb.ipdcesgaccess`: MediaType =
- new MediaType("application", "vnd.dvb.ipdcesgaccess", Compressible, NotBinary)
- lazy val `vnd.dvb.ipdcesgaccess2`: MediaType =
- new MediaType("application", "vnd.dvb.ipdcesgaccess2", Compressible, NotBinary)
- lazy val `vnd.dvb.ipdcesgpdd`: MediaType =
- new MediaType("application", "vnd.dvb.ipdcesgpdd", Compressible, NotBinary)
- lazy val `vnd.dvb.ipdcroaming`: MediaType =
- new MediaType("application", "vnd.dvb.ipdcroaming", Compressible, NotBinary)
- lazy val `vnd.dvb.iptv.alfec-base`: MediaType =
- new MediaType("application", "vnd.dvb.iptv.alfec-base", Compressible, NotBinary)
- lazy val `vnd.dvb.iptv.alfec-enhancement`: MediaType =
- new MediaType("application", "vnd.dvb.iptv.alfec-enhancement", Compressible, NotBinary)
- lazy val `vnd.dvb.notif-aggregate-root+xml`: MediaType =
- new MediaType("application", "vnd.dvb.notif-aggregate-root+xml", Compressible, NotBinary)
- lazy val `vnd.dvb.notif-container+xml`: MediaType =
- new MediaType("application", "vnd.dvb.notif-container+xml", Compressible, NotBinary)
- lazy val `vnd.dvb.notif-generic+xml`: MediaType =
- new MediaType("application", "vnd.dvb.notif-generic+xml", Compressible, NotBinary)
- lazy val `vnd.dvb.notif-ia-msglist+xml`: MediaType =
- new MediaType("application", "vnd.dvb.notif-ia-msglist+xml", Compressible, NotBinary)
- lazy val `vnd.dvb.notif-ia-registration-request+xml`: MediaType = new MediaType(
- "application",
- "vnd.dvb.notif-ia-registration-request+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.dvb.notif-ia-registration-response+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.iptc.g2.packageitem+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.packageitem+xml", compressible = true, binary = true)
+
+ lazy val `vnd.realvnc.bed`: MediaType =
+ new MediaType("application", "vnd.realvnc.bed", compressible = false, binary = true, List("bed"))
+
+ lazy val `mets+xml`: MediaType =
+ new MediaType("application", "mets+xml", compressible = true, binary = true, List("mets"))
+
+ lazy val `atsc-dynamic-event-message`: MediaType =
+ new MediaType("application", "atsc-dynamic-event-message", compressible = false, binary = true)
+
+ lazy val `nasdata`: MediaType =
+ new MediaType("application", "nasdata", compressible = false, binary = true)
+
+ lazy val `x-pilot`: MediaType =
+ new MediaType("application", "x-pilot", compressible = false, binary = true, List("prc", "pdb"))
+
+ lazy val `java-serialized-object`: MediaType =
+ new MediaType("application", "java-serialized-object", compressible = false, binary = true, List("ser"))
+
+ lazy val `x-stuffitx`: MediaType =
+ new MediaType("application", "x-stuffitx", compressible = false, binary = true, List("sitx"))
+
+ lazy val `simple-message-summary`: MediaType =
+ new MediaType("application", "simple-message-summary", compressible = false, binary = true)
+
+ lazy val `zstd`: MediaType =
+ new MediaType("application", "zstd", compressible = false, binary = true)
+
+ lazy val `news-transmission`: MediaType =
+ new MediaType("application", "news-transmission", compressible = false, binary = true)
+
+ lazy val `vnd.fujitsu.oasys`: MediaType =
+ new MediaType("application", "vnd.fujitsu.oasys", compressible = false, binary = true, List("oas"))
+
+ lazy val `vnd.adobe.xfdf`: MediaType =
+ new MediaType("application", "vnd.adobe.xfdf", compressible = false, binary = true, List("xfdf"))
+
+ lazy val `dssc+xml`: MediaType =
+ new MediaType("application", "dssc+xml", compressible = true, binary = true, List("xdssc"))
+
+ lazy val `vnd.netfpx`: MediaType =
+ new MediaType("application", "vnd.netfpx", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.tsl+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.tsl+xml", compressible = true, binary = true)
+
+ lazy val `vnd.palm`: MediaType =
+ new MediaType("application", "vnd.palm", compressible = false, binary = true, List("pdb", "pqa", "oprc"))
+
+ lazy val `expect-ct-report+json`: MediaType =
+ new MediaType("application", "expect-ct-report+json", compressible = true, binary = false)
+
+ lazy val `applixware`: MediaType =
+ new MediaType("application", "applixware", compressible = false, binary = true, List("aw"))
+
+ lazy val `vnd.adobe.air-application-installer-package+zip`: MediaType =
+ new MediaType(
"application",
- "vnd.dvb.notif-ia-registration-response+xml",
- Compressible,
- NotBinary,
+ "vnd.adobe.air-application-installer-package+zip",
+ compressible = false,
+ binary = true,
+ List("air"),
)
- lazy val `vnd.dvb.notif-init+xml`: MediaType =
- new MediaType("application", "vnd.dvb.notif-init+xml", Compressible, NotBinary)
- lazy val `vnd.dvb.pfr`: MediaType =
- new MediaType("application", "vnd.dvb.pfr", Compressible, NotBinary)
- lazy val `vnd.dvb.service`: MediaType =
- new MediaType("application", "vnd.dvb.service", Compressible, NotBinary, List("svc"))
- lazy val `vnd.dxr`: MediaType =
- new MediaType("application", "vnd.dxr", Compressible, NotBinary)
- lazy val `vnd.dynageo`: MediaType =
- new MediaType("application", "vnd.dynageo", Compressible, NotBinary, List("geo"))
- lazy val `vnd.dzr`: MediaType =
- new MediaType("application", "vnd.dzr", Compressible, NotBinary)
- lazy val `vnd.easykaraoke.cdgdownload`: MediaType =
- new MediaType("application", "vnd.easykaraoke.cdgdownload", Compressible, NotBinary)
- lazy val `vnd.ecdis-update`: MediaType =
- new MediaType("application", "vnd.ecdis-update", Compressible, NotBinary)
- lazy val `vnd.ecip.rlp`: MediaType =
- new MediaType("application", "vnd.ecip.rlp", Compressible, NotBinary)
- lazy val `vnd.ecowin.chart`: MediaType =
- new MediaType("application", "vnd.ecowin.chart", Compressible, NotBinary, List("mag"))
- lazy val `vnd.ecowin.filerequest`: MediaType =
- new MediaType("application", "vnd.ecowin.filerequest", Compressible, NotBinary)
- lazy val `vnd.ecowin.fileupdate`: MediaType =
- new MediaType("application", "vnd.ecowin.fileupdate", Compressible, NotBinary)
- lazy val `vnd.ecowin.series`: MediaType =
- new MediaType("application", "vnd.ecowin.series", Compressible, NotBinary)
- lazy val `vnd.ecowin.seriesrequest`: MediaType =
- new MediaType("application", "vnd.ecowin.seriesrequest", Compressible, NotBinary)
- lazy val `vnd.ecowin.seriesupdate`: MediaType =
- new MediaType("application", "vnd.ecowin.seriesupdate", Compressible, NotBinary)
- lazy val `vnd.efi.img`: MediaType =
- new MediaType("application", "vnd.efi.img", Compressible, NotBinary)
- lazy val `vnd.efi.iso`: MediaType =
- new MediaType("application", "vnd.efi.iso", Compressible, NotBinary)
- lazy val `vnd.emclient.accessrequest+xml`: MediaType =
- new MediaType("application", "vnd.emclient.accessrequest+xml", Compressible, NotBinary)
- lazy val `vnd.enliven`: MediaType =
- new MediaType("application", "vnd.enliven", Compressible, NotBinary, List("nml"))
- lazy val `vnd.enphase.envoy`: MediaType =
- new MediaType("application", "vnd.enphase.envoy", Compressible, NotBinary)
- lazy val `vnd.eprints.data+xml`: MediaType =
- new MediaType("application", "vnd.eprints.data+xml", Compressible, NotBinary)
- lazy val `vnd.epson.esf`: MediaType =
- new MediaType("application", "vnd.epson.esf", Compressible, NotBinary, List("esf"))
- lazy val `vnd.epson.msf`: MediaType =
- new MediaType("application", "vnd.epson.msf", Compressible, NotBinary, List("msf"))
- lazy val `vnd.epson.quickanime`: MediaType =
- new MediaType("application", "vnd.epson.quickanime", Compressible, NotBinary, List("qam"))
- lazy val `vnd.epson.salt`: MediaType =
- new MediaType("application", "vnd.epson.salt", Compressible, NotBinary, List("slt"))
- lazy val `vnd.epson.ssf`: MediaType =
- new MediaType("application", "vnd.epson.ssf", Compressible, NotBinary, List("ssf"))
- lazy val `vnd.ericsson.quickcall`: MediaType =
- new MediaType("application", "vnd.ericsson.quickcall", Compressible, NotBinary)
- lazy val `vnd.espass-espass+zip`: MediaType =
- new MediaType("application", "vnd.espass-espass+zip", Uncompressible, NotBinary)
- lazy val `vnd.eszigno3+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.dart`: MediaType =
+ new MediaType("application", "vnd.dart", compressible = true, binary = true, List("dart"))
+
+ lazy val `vnd.osgi.dp`: MediaType =
+ new MediaType("application", "vnd.osgi.dp", compressible = false, binary = true, List("dp"))
+
+ lazy val `vnd.sun.xml.impress.template`: MediaType =
+ new MediaType("application", "vnd.sun.xml.impress.template", compressible = false, binary = true, List("sti"))
+
+ lazy val `vnd.cups-raw`: MediaType =
+ new MediaType("application", "vnd.cups-raw", compressible = false, binary = true)
+
+ lazy val `alto-cdnifilter+json`: MediaType =
+ new MediaType("application", "alto-cdnifilter+json", compressible = true, binary = false)
+
+ lazy val `vnd.shana.informed.formdata`: MediaType =
+ new MediaType("application", "vnd.shana.informed.formdata", compressible = false, binary = true, List("ifm"))
+
+ lazy val `its+xml`: MediaType =
+ new MediaType("application", "its+xml", compressible = true, binary = true, List("its"))
+
+ lazy val `vnd.zul`: MediaType =
+ new MediaType("application", "vnd.zul", compressible = false, binary = true, List("zir", "zirz"))
+
+ lazy val `vnd.pvi.ptid1`: MediaType =
+ new MediaType("application", "vnd.pvi.ptid1", compressible = false, binary = true, List("ptid"))
+
+ lazy val `vnd.3gpp.mcvideo-location-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-location-info+xml", compressible = true, binary = true)
+
+ lazy val `alto-endpointcost+json`: MediaType =
+ new MediaType("application", "alto-endpointcost+json", compressible = true, binary = false)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.settings+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.eszigno3+xml",
- Compressible,
- NotBinary,
- List("es3", "et3"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.settings+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.etsi.aoc+xml`: MediaType =
- new MediaType("application", "vnd.etsi.aoc+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.asic-e+zip`: MediaType =
- new MediaType("application", "vnd.etsi.asic-e+zip", Uncompressible, NotBinary)
- lazy val `vnd.etsi.asic-s+zip`: MediaType =
- new MediaType("application", "vnd.etsi.asic-s+zip", Uncompressible, NotBinary)
- lazy val `vnd.etsi.cug+xml`: MediaType =
- new MediaType("application", "vnd.etsi.cug+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvcommand+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvcommand+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvdiscovery+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvdiscovery+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvprofile+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvprofile+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvsad-bc+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvsad-bc+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvsad-cod+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvsad-cod+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvsad-npvr+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvsad-npvr+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvservice+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvservice+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvsync+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvsync+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.iptvueprofile+xml`: MediaType =
- new MediaType("application", "vnd.etsi.iptvueprofile+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.mcid+xml`: MediaType =
- new MediaType("application", "vnd.etsi.mcid+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.mheg5`: MediaType =
- new MediaType("application", "vnd.etsi.mheg5", Compressible, NotBinary)
- lazy val `vnd.etsi.overload-control-policy-dataset+xml`: MediaType = new MediaType(
+
+ lazy val `stix+json`: MediaType =
+ new MediaType("application", "stix+json", compressible = true, binary = false)
+
+ lazy val `vnd.wqd`: MediaType =
+ new MediaType("application", "vnd.wqd", compressible = false, binary = true, List("wqd"))
+
+ lazy val `vnd.japannet-setstore-wakeup`: MediaType =
+ new MediaType("application", "vnd.japannet-setstore-wakeup", compressible = false, binary = true)
+
+ lazy val `vnd.ericsson.quickcall`: MediaType =
+ new MediaType("application", "vnd.ericsson.quickcall", compressible = false, binary = true)
+
+ lazy val `efi`: MediaType =
+ new MediaType("application", "efi", compressible = false, binary = true)
+
+ lazy val `vnd.android.package-archive`: MediaType =
+ new MediaType("application", "vnd.android.package-archive", compressible = false, binary = true, List("apk"))
+
+ lazy val `vnd.3gpp.mcptt-ue-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-ue-config+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-powerpoint.presentation.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.etsi.overload-control-policy-dataset+xml",
- Compressible,
- NotBinary,
+ "vnd.ms-powerpoint.presentation.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("pptm"),
)
- lazy val `vnd.etsi.pstn+xml`: MediaType =
- new MediaType("application", "vnd.etsi.pstn+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.sci+xml`: MediaType =
- new MediaType("application", "vnd.etsi.sci+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.simservs+xml`: MediaType =
- new MediaType("application", "vnd.etsi.simservs+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.timestamp-token`: MediaType =
- new MediaType("application", "vnd.etsi.timestamp-token", Compressible, NotBinary)
- lazy val `vnd.etsi.tsl+xml`: MediaType =
- new MediaType("application", "vnd.etsi.tsl+xml", Compressible, NotBinary)
- lazy val `vnd.etsi.tsl.der`: MediaType =
- new MediaType("application", "vnd.etsi.tsl.der", Compressible, NotBinary)
- lazy val `vnd.eudora.data`: MediaType =
- new MediaType("application", "vnd.eudora.data", Compressible, NotBinary)
- lazy val `vnd.evolv.ecig.profile`: MediaType =
- new MediaType("application", "vnd.evolv.ecig.profile", Compressible, NotBinary)
- lazy val `vnd.evolv.ecig.settings`: MediaType =
- new MediaType("application", "vnd.evolv.ecig.settings", Compressible, NotBinary)
- lazy val `vnd.evolv.ecig.theme`: MediaType =
- new MediaType("application", "vnd.evolv.ecig.theme", Compressible, NotBinary)
- lazy val `vnd.exstream-empower+zip`: MediaType =
- new MediaType("application", "vnd.exstream-empower+zip", Uncompressible, NotBinary)
- lazy val `vnd.exstream-package`: MediaType =
- new MediaType("application", "vnd.exstream-package", Compressible, NotBinary)
- lazy val `vnd.ezpix-album`: MediaType =
- new MediaType("application", "vnd.ezpix-album", Compressible, NotBinary, List("ez2"))
- lazy val `vnd.ezpix-package`: MediaType =
- new MediaType("application", "vnd.ezpix-package", Compressible, NotBinary, List("ez3"))
- lazy val `vnd.f-secure.mobile`: MediaType =
- new MediaType("application", "vnd.f-secure.mobile", Compressible, NotBinary)
- lazy val `vnd.fastcopy-disk-image`: MediaType =
- new MediaType("application", "vnd.fastcopy-disk-image", Compressible, NotBinary)
- lazy val `vnd.fdf`: MediaType =
- new MediaType("application", "vnd.fdf", Compressible, NotBinary, List("fdf"))
- lazy val `vnd.fdsn.mseed`: MediaType =
- new MediaType("application", "vnd.fdsn.mseed", Compressible, NotBinary, List("mseed"))
- lazy val `vnd.fdsn.seed`: MediaType = new MediaType(
+
+ lazy val `set-registration`: MediaType =
+ new MediaType("application", "set-registration", compressible = false, binary = true)
+
+ lazy val `vnd.laszip`: MediaType =
+ new MediaType("application", "vnd.laszip", compressible = false, binary = true)
+
+ lazy val `vnd.stardivision.writer`: MediaType =
+ new MediaType("application", "vnd.stardivision.writer", compressible = false, binary = true, List("sdw", "vor"))
+
+ lazy val `gml+xml`: MediaType =
+ new MediaType("application", "gml+xml", compressible = true, binary = true, List("gml"))
+
+ lazy val `ppsp-tracker+json`: MediaType =
+ new MediaType("application", "ppsp-tracker+json", compressible = true, binary = false)
+
+ lazy val `cdmi-container`: MediaType =
+ new MediaType("application", "cdmi-container", compressible = false, binary = true, List("cdmic"))
+
+ lazy val `x-mswrite`: MediaType =
+ new MediaType("application", "x-mswrite", compressible = false, binary = true, List("wri"))
+
+ lazy val `x-sv4crc`: MediaType =
+ new MediaType("application", "x-sv4crc", compressible = false, binary = true, List("sv4crc"))
+
+ lazy val `vnd.ms-printdevicecapabilities+xml`: MediaType =
+ new MediaType("application", "vnd.ms-printdevicecapabilities+xml", compressible = true, binary = true)
+
+ lazy val `vnd.mobius.mbk`: MediaType =
+ new MediaType("application", "vnd.mobius.mbk", compressible = false, binary = true, List("mbk"))
+
+ lazy val `vnd.fujifilm.fb.docuworks.container`: MediaType =
+ new MediaType("application", "vnd.fujifilm.fb.docuworks.container", compressible = false, binary = true)
+
+ lazy val `tamp-sequence-adjust-confirm`: MediaType =
+ new MediaType("application", "tamp-sequence-adjust-confirm", compressible = false, binary = true)
+
+ lazy val `fastinfoset`: MediaType =
+ new MediaType("application", "fastinfoset", compressible = false, binary = true)
+
+ lazy val `vnd.veryant.thin`: MediaType =
+ new MediaType("application", "vnd.veryant.thin", compressible = false, binary = true)
+
+ lazy val `vcard+json`: MediaType =
+ new MediaType("application", "vcard+json", compressible = true, binary = false)
+
+ lazy val `vnd.audiograph`: MediaType =
+ new MediaType("application", "vnd.audiograph", compressible = false, binary = true, List("aep"))
+
+ lazy val `vnd.heroku+json`: MediaType =
+ new MediaType("application", "vnd.heroku+json", compressible = true, binary = false)
+
+ lazy val `vnd.mobius.msl`: MediaType =
+ new MediaType("application", "vnd.mobius.msl", compressible = false, binary = true, List("msl"))
+
+ lazy val `vnd.dvb.pfr`: MediaType =
+ new MediaType("application", "vnd.dvb.pfr", compressible = false, binary = true)
+
+ lazy val `vnd.enliven`: MediaType =
+ new MediaType("application", "vnd.enliven", compressible = false, binary = true, List("nml"))
+
+ lazy val `x-dtbook+xml`: MediaType =
+ new MediaType("application", "x-dtbook+xml", compressible = true, binary = true, List("dtb"))
+
+ lazy val `pdx`: MediaType =
+ new MediaType("application", "pdx", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp-prose-pc8+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp-prose-pc8+xml", compressible = true, binary = true)
+
+ lazy val `atom+xml`: MediaType =
+ new MediaType("application", "atom+xml", compressible = true, binary = true, List("atom"))
+
+ lazy val `vnd.fut-misnet`: MediaType =
+ new MediaType("application", "vnd.fut-misnet", compressible = false, binary = true)
+
+ lazy val `x-iwork-numbers-sffnumbers`: MediaType =
+ new MediaType("application", "x-iwork-numbers-sffnumbers", compressible = false, binary = true, List("numbers"))
+
+ lazy val `vnd.micro+json`: MediaType =
+ new MediaType("application", "vnd.micro+json", compressible = true, binary = false)
+
+ lazy val `vnd.blueice.multipass`: MediaType =
+ new MediaType("application", "vnd.blueice.multipass", compressible = false, binary = true, List("mpm"))
+
+ lazy val `vnd.3gpp.mcvideo-transmission-request+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-transmission-request+xml", compressible = true, binary = true)
+
+ lazy val `mbms-associated-procedure-description+xml`: MediaType =
+ new MediaType("application", "mbms-associated-procedure-description+xml", compressible = true, binary = true)
+
+ lazy val `vnd.bbf.usp.msg+json`: MediaType =
+ new MediaType("application", "vnd.bbf.usp.msg+json", compressible = true, binary = false)
+
+ lazy val `vnd.radisys.msml-conf+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-conf+xml", compressible = true, binary = true)
+
+ lazy val `vnd.futoin+json`: MediaType =
+ new MediaType("application", "vnd.futoin+json", compressible = true, binary = false)
+
+ lazy val `vnd.mophun.application`: MediaType =
+ new MediaType("application", "vnd.mophun.application", compressible = false, binary = true, List("mpn"))
+
+ lazy val `x-rar-compressed`: MediaType =
+ new MediaType("application", "x-rar-compressed", compressible = false, binary = true, List("rar"))
+
+ lazy val `vnd.3gpp.mcvideo-affiliation-command+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-affiliation-command+xml", compressible = true, binary = true)
+
+ lazy val `vnd.publishare-delta-tree`: MediaType =
+ new MediaType("application", "vnd.publishare-delta-tree", compressible = false, binary = true, List("qps"))
+
+ lazy val `vnd.font-fontforge-sfd`: MediaType =
+ new MediaType("application", "vnd.font-fontforge-sfd", compressible = false, binary = true)
+
+ lazy val `vnd.autopackage`: MediaType =
+ new MediaType("application", "vnd.autopackage", compressible = false, binary = true)
+
+ lazy val `vnd.airzip.filesecure.azs`: MediaType =
+ new MediaType("application", "vnd.airzip.filesecure.azs", compressible = false, binary = true, List("azs"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.fdsn.seed",
- Compressible,
- NotBinary,
- List("seed", "dataless"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ffsns`: MediaType =
- new MediaType("application", "vnd.ffsns", Compressible, NotBinary)
- lazy val `vnd.ficlab.flb+zip`: MediaType =
- new MediaType("application", "vnd.ficlab.flb+zip", Uncompressible, NotBinary)
- lazy val `vnd.filmit.zfc`: MediaType =
- new MediaType("application", "vnd.filmit.zfc", Compressible, NotBinary)
- lazy val `vnd.fints`: MediaType =
- new MediaType("application", "vnd.fints", Compressible, NotBinary)
- lazy val `vnd.firemonkeys.cloudcell`: MediaType =
- new MediaType("application", "vnd.firemonkeys.cloudcell", Compressible, NotBinary)
- lazy val `vnd.flographit`: MediaType =
- new MediaType("application", "vnd.flographit", Compressible, NotBinary, List("gph"))
- lazy val `vnd.fluxtime.clip`: MediaType =
- new MediaType("application", "vnd.fluxtime.clip", Compressible, NotBinary, List("ftc"))
- lazy val `vnd.font-fontforge-sfd`: MediaType =
- new MediaType("application", "vnd.font-fontforge-sfd", Compressible, NotBinary)
- lazy val `vnd.framemaker`: MediaType = new MediaType(
+
+ lazy val `vnd.americandynamics.acc`: MediaType =
+ new MediaType("application", "vnd.americandynamics.acc", compressible = false, binary = true, List("acc"))
+
+ lazy val `xslt+xml`: MediaType =
+ new MediaType("application", "xslt+xml", compressible = true, binary = true, List("xsl", "xslt"))
+
+ lazy val `rls-services+xml`: MediaType =
+ new MediaType("application", "rls-services+xml", compressible = true, binary = true, List("rs"))
+
+ lazy val `moss-keys`: MediaType =
+ new MediaType("application", "moss-keys", compressible = false, binary = true)
+
+ lazy val `vnd.ibm.afplinedata`: MediaType =
+ new MediaType("application", "vnd.ibm.afplinedata", compressible = false, binary = true)
+
+ lazy val `x-font-bdf`: MediaType =
+ new MediaType("application", "x-font-bdf", compressible = false, binary = true, List("bdf"))
+
+ lazy val `vnd.hp-hps`: MediaType =
+ new MediaType("application", "vnd.hp-hps", compressible = false, binary = true, List("hps"))
+
+ lazy val `vnd.apothekende.reservation+json`: MediaType =
+ new MediaType("application", "vnd.apothekende.reservation+json", compressible = true, binary = false)
+
+ lazy val `vnd.hzn-3d-crossword`: MediaType =
+ new MediaType("application", "vnd.hzn-3d-crossword", compressible = false, binary = true)
+
+ lazy val `vnd.japannet-registration`: MediaType =
+ new MediaType("application", "vnd.japannet-registration", compressible = false, binary = true)
+
+ lazy val `vnd.sun.xml.calc`: MediaType =
+ new MediaType("application", "vnd.sun.xml.calc", compressible = false, binary = true, List("sxc"))
+
+ lazy val `vnd.wolfram.mathematica.package`: MediaType =
+ new MediaType("application", "vnd.wolfram.mathematica.package", compressible = false, binary = true)
+
+ lazy val `vnd.framemaker`: MediaType =
+ new MediaType(
"application",
"vnd.framemaker",
- Compressible,
- NotBinary,
+ compressible = false,
+ binary = true,
List("fm", "frame", "maker", "book"),
)
- lazy val `vnd.frogans.fnc`: MediaType =
- new MediaType("application", "vnd.frogans.fnc", Compressible, NotBinary, List("fnc"))
- lazy val `vnd.frogans.ltf`: MediaType =
- new MediaType("application", "vnd.frogans.ltf", Compressible, NotBinary, List("ltf"))
- lazy val `vnd.fsc.weblaunch`: MediaType =
- new MediaType("application", "vnd.fsc.weblaunch", Compressible, NotBinary, List("fsc"))
- lazy val `vnd.fujifilm.fb.docuworks`: MediaType =
- new MediaType("application", "vnd.fujifilm.fb.docuworks", Compressible, NotBinary)
- lazy val `vnd.fujifilm.fb.docuworks.binder`: MediaType =
- new MediaType("application", "vnd.fujifilm.fb.docuworks.binder", Compressible, NotBinary)
- lazy val `vnd.fujifilm.fb.docuworks.container`: MediaType =
- new MediaType("application", "vnd.fujifilm.fb.docuworks.container", Compressible, NotBinary)
- lazy val `vnd.fujifilm.fb.jfi+xml`: MediaType =
- new MediaType("application", "vnd.fujifilm.fb.jfi+xml", Compressible, NotBinary)
- lazy val `vnd.fujitsu.oasys`: MediaType =
- new MediaType("application", "vnd.fujitsu.oasys", Compressible, NotBinary, List("oas"))
- lazy val `vnd.fujitsu.oasys2`: MediaType =
- new MediaType("application", "vnd.fujitsu.oasys2", Compressible, NotBinary, List("oa2"))
- lazy val `vnd.fujitsu.oasys3`: MediaType =
- new MediaType("application", "vnd.fujitsu.oasys3", Compressible, NotBinary, List("oa3"))
- lazy val `vnd.fujitsu.oasysgp`: MediaType =
- new MediaType("application", "vnd.fujitsu.oasysgp", Compressible, NotBinary, List("fg5"))
- lazy val `vnd.fujitsu.oasysprs`: MediaType =
- new MediaType("application", "vnd.fujitsu.oasysprs", Compressible, NotBinary, List("bh2"))
- lazy val `vnd.fujixerox.art-ex`: MediaType =
- new MediaType("application", "vnd.fujixerox.art-ex", Compressible, NotBinary)
- lazy val `vnd.fujixerox.art4`: MediaType =
- new MediaType("application", "vnd.fujixerox.art4", Compressible, NotBinary)
- lazy val `vnd.fujixerox.ddd`: MediaType =
- new MediaType("application", "vnd.fujixerox.ddd", Compressible, NotBinary, List("ddd"))
- lazy val `vnd.fujixerox.docuworks`: MediaType = new MediaType(
+
+ lazy val `vnd.3gpp.5gnas`: MediaType =
+ new MediaType("application", "vnd.3gpp.5gnas", compressible = false, binary = true)
+
+ lazy val `vnd.zzazz.deck+xml`: MediaType =
+ new MediaType("application", "vnd.zzazz.deck+xml", compressible = true, binary = true, List("zaz"))
+
+ lazy val `index.obj`: MediaType =
+ new MediaType("application", "index.obj", compressible = false, binary = true)
+
+ lazy val `vnd.pagerduty+json`: MediaType =
+ new MediaType("application", "vnd.pagerduty+json", compressible = true, binary = false)
+
+ lazy val `vnd.uplanet.bearer-choice`: MediaType =
+ new MediaType("application", "vnd.uplanet.bearer-choice", compressible = false, binary = true)
+
+ lazy val `vnd.llamagraphics.life-balance.desktop`: MediaType =
+ new MediaType(
"application",
- "vnd.fujixerox.docuworks",
- Compressible,
- NotBinary,
- List("xdw"),
+ "vnd.llamagraphics.life-balance.desktop",
+ compressible = false,
+ binary = true,
+ List("lbd"),
)
- lazy val `vnd.fujixerox.docuworks.binder`: MediaType = new MediaType(
+
+ lazy val `ttml+xml`: MediaType =
+ new MediaType("application", "ttml+xml", compressible = true, binary = true, List("ttml"))
+
+ lazy val `vnd.xmi+xml`: MediaType =
+ new MediaType("application", "vnd.xmi+xml", compressible = true, binary = true)
+
+ lazy val `vnd.nebumind.line`: MediaType =
+ new MediaType("application", "vnd.nebumind.line", compressible = false, binary = true)
+
+ lazy val `x-pkcs7-certificates`: MediaType =
+ new MediaType("application", "x-pkcs7-certificates", compressible = false, binary = true, List("p7b", "spc"))
+
+ lazy val `sparql-query`: MediaType =
+ new MediaType("application", "sparql-query", compressible = false, binary = true, List("rq"))
+
+ lazy val `vnd.hp-hpid`: MediaType =
+ new MediaType("application", "vnd.hp-hpid", compressible = false, binary = true, List("hpid"))
+
+ lazy val `mrb-consumer+xml`: MediaType =
+ new MediaType("application", "mrb-consumer+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sbm.mid2`: MediaType =
+ new MediaType("application", "vnd.sbm.mid2", compressible = false, binary = true)
+
+ lazy val `mosskey-data`: MediaType =
+ new MediaType("application", "mosskey-data", compressible = false, binary = true)
+
+ lazy val `vnd.hp-pcl`: MediaType =
+ new MediaType("application", "vnd.hp-pcl", compressible = false, binary = true, List("pcl"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.tags+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.fujixerox.docuworks.binder",
- Compressible,
- NotBinary,
- List("xbd"),
+ "vnd.openxmlformats-officedocument.presentationml.tags+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.fujixerox.docuworks.container`: MediaType =
- new MediaType("application", "vnd.fujixerox.docuworks.container", Compressible, NotBinary)
- lazy val `vnd.fujixerox.hbpl`: MediaType =
- new MediaType("application", "vnd.fujixerox.hbpl", Compressible, NotBinary)
- lazy val `vnd.fut-misnet`: MediaType =
- new MediaType("application", "vnd.fut-misnet", Compressible, NotBinary)
- lazy val `vnd.futoin+cbor`: MediaType =
- new MediaType("application", "vnd.futoin+cbor", Compressible, NotBinary)
- lazy val `vnd.futoin+json`: MediaType =
- new MediaType("application", "vnd.futoin+json", Compressible, NotBinary)
- lazy val `vnd.fuzzysheet`: MediaType =
- new MediaType("application", "vnd.fuzzysheet", Compressible, NotBinary, List("fzs"))
- lazy val `vnd.genomatix.tuxedo`: MediaType =
- new MediaType("application", "vnd.genomatix.tuxedo", Compressible, NotBinary, List("txd"))
- lazy val `vnd.gentics.grd+json`: MediaType =
- new MediaType("application", "vnd.gentics.grd+json", Compressible, NotBinary)
- lazy val `vnd.geo+json`: MediaType =
- new MediaType("application", "vnd.geo+json", Compressible, NotBinary)
- lazy val `vnd.geocube+xml`: MediaType =
- new MediaType("application", "vnd.geocube+xml", Compressible, NotBinary)
- lazy val `vnd.geogebra.file`: MediaType =
- new MediaType("application", "vnd.geogebra.file", Compressible, NotBinary, List("ggb"))
- lazy val `vnd.geogebra.slides`: MediaType =
- new MediaType("application", "vnd.geogebra.slides", Compressible, NotBinary)
- lazy val `vnd.geogebra.tool`: MediaType =
- new MediaType("application", "vnd.geogebra.tool", Compressible, NotBinary, List("ggt"))
- lazy val `vnd.geometry-explorer`: MediaType = new MediaType(
+
+ lazy val `linkset`: MediaType =
+ new MediaType("application", "linkset", compressible = false, binary = true)
+
+ lazy val `vnd.coreos.ignition+json`: MediaType =
+ new MediaType("application", "vnd.coreos.ignition+json", compressible = true, binary = false)
+
+ lazy val `vnd.ims.imsccv1p2`: MediaType =
+ new MediaType("application", "vnd.ims.imsccv1p2", compressible = false, binary = true)
+
+ lazy val `vnd.dzr`: MediaType =
+ new MediaType("application", "vnd.dzr", compressible = false, binary = true)
+
+ lazy val `vnd.hcl-bireports`: MediaType =
+ new MediaType("application", "vnd.hcl-bireports", compressible = false, binary = true)
+
+ lazy val `vnd.mophun.certificate`: MediaType =
+ new MediaType("application", "vnd.mophun.certificate", compressible = false, binary = true, List("mpc"))
+
+ lazy val `vnd.ims.lti.v2.toolproxy+json`: MediaType =
+ new MediaType("application", "vnd.ims.lti.v2.toolproxy+json", compressible = true, binary = false)
+
+ lazy val `vnd.piaccess.application-licence`: MediaType =
+ new MediaType("application", "vnd.piaccess.application-licence", compressible = false, binary = true)
+
+ lazy val `vnd.cloanto.rp9`: MediaType =
+ new MediaType("application", "vnd.cloanto.rp9", compressible = false, binary = true, List("rp9"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slidemaster+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.geometry-explorer",
- Compressible,
- NotBinary,
- List("gex", "gre"),
+ "vnd.openxmlformats-officedocument.presentationml.slidemaster+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.geonext`: MediaType =
- new MediaType("application", "vnd.geonext", Compressible, NotBinary, List("gxt"))
- lazy val `vnd.geoplan`: MediaType =
- new MediaType("application", "vnd.geoplan", Compressible, NotBinary, List("g2w"))
- lazy val `vnd.geospace`: MediaType =
- new MediaType("application", "vnd.geospace", Compressible, NotBinary, List("g3w"))
- lazy val `vnd.gerber`: MediaType =
- new MediaType("application", "vnd.gerber", Compressible, NotBinary)
- lazy val `vnd.globalplatform.card-content-mgt`: MediaType =
- new MediaType("application", "vnd.globalplatform.card-content-mgt", Compressible, NotBinary)
- lazy val `vnd.globalplatform.card-content-mgt-response`: MediaType = new MediaType(
+
+ lazy val `vnd.paos.xml`: MediaType =
+ new MediaType("application", "vnd.paos.xml", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.notif-ia-registration-response+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-ia-registration-response+xml", compressible = true, binary = true)
+
+ lazy val `x-cpio`: MediaType =
+ new MediaType("application", "x-cpio", compressible = false, binary = true, List("cpio"))
+
+ lazy val `vnd.recordare.musicxml`: MediaType =
+ new MediaType("application", "vnd.recordare.musicxml", compressible = false, binary = true, List("mxl"))
+
+ lazy val `atomicmail`: MediaType =
+ new MediaType("application", "atomicmail", compressible = false, binary = true)
+
+ lazy val `vnd.uplanet.cacheop-wbxml`: MediaType =
+ new MediaType("application", "vnd.uplanet.cacheop-wbxml", compressible = false, binary = true)
+
+ lazy val `set-payment-initiation`: MediaType =
+ new MediaType("application", "set-payment-initiation", compressible = false, binary = true, List("setpay"))
+
+ lazy val `vnd.stardivision.draw`: MediaType =
+ new MediaType("application", "vnd.stardivision.draw", compressible = false, binary = true, List("sda"))
+
+ lazy val `vnd.nimn`: MediaType =
+ new MediaType("application", "vnd.nimn", compressible = false, binary = true)
+
+ lazy val `vnd.powerbuilder7`: MediaType =
+ new MediaType("application", "vnd.powerbuilder7", compressible = false, binary = true)
+
+ lazy val `vnd.apple.pkpass`: MediaType =
+ new MediaType("application", "vnd.apple.pkpass", compressible = false, binary = true, List("pkpass"))
+
+ lazy val `vnd.uplanet.listcmd`: MediaType =
+ new MediaType("application", "vnd.uplanet.listcmd", compressible = false, binary = true)
+
+ lazy val `oebps-package+xml`: MediaType =
+ new MediaType("application", "oebps-package+xml", compressible = true, binary = true, List("opf"))
+
+ lazy val `vnd.wfa.dpp`: MediaType =
+ new MediaType("application", "vnd.wfa.dpp", compressible = false, binary = true)
+
+ lazy val `gltf-buffer`: MediaType =
+ new MediaType("application", "gltf-buffer", compressible = false, binary = true)
+
+ lazy val `x-dtbresource+xml`: MediaType =
+ new MediaType("application", "x-dtbresource+xml", compressible = true, binary = true, List("res"))
+
+ lazy val `x-deb`: MediaType =
+ new MediaType("application", "x-deb", compressible = false, binary = true)
+
+ lazy val `vnd.street-stream`: MediaType =
+ new MediaType("application", "vnd.street-stream", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp-v2x-local-service-information`: MediaType =
+ new MediaType("application", "vnd.3gpp-v2x-local-service-information", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.ipdcesgpdd`: MediaType =
+ new MediaType("application", "vnd.dvb.ipdcesgpdd", compressible = false, binary = true)
+
+ lazy val `vnd.fdsn.mseed`: MediaType =
+ new MediaType("application", "vnd.fdsn.mseed", compressible = false, binary = true, List("mseed"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.globalplatform.card-content-mgt-response",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.gmx`: MediaType =
- new MediaType("application", "vnd.gmx", Compressible, NotBinary, List("gmx"))
- lazy val `vnd.google-apps.document`: MediaType = new MediaType(
+
+ lazy val `vnd.uplanet.channel-wbxml`: MediaType =
+ new MediaType("application", "vnd.uplanet.channel-wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.yamaha.hv-voice`: MediaType =
+ new MediaType("application", "vnd.yamaha.hv-voice", compressible = false, binary = true, List("hvp"))
+
+ lazy val `alto-propmap+json`: MediaType =
+ new MediaType("application", "alto-propmap+json", compressible = true, binary = false)
+
+ lazy val `vnd.1000minds.decision-model+xml`: MediaType =
+ new MediaType("application", "vnd.1000minds.decision-model+xml", compressible = true, binary = true, List("1km"))
+
+ lazy val `mathematica`: MediaType =
+ new MediaType("application", "mathematica", compressible = false, binary = true, List("ma", "nb", "mb"))
+
+ lazy val `problem+json`: MediaType =
+ new MediaType("application", "problem+json", compressible = true, binary = false)
+
+ lazy val `vnd.iptc.g2.newsitem+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.newsitem+xml", compressible = true, binary = true)
+
+ lazy val `vnd.nokia.landmarkcollection+xml`: MediaType =
+ new MediaType("application", "vnd.nokia.landmarkcollection+xml", compressible = true, binary = true)
+
+ lazy val `x-xliff+xml`: MediaType =
+ new MediaType("application", "x-xliff+xml", compressible = true, binary = true, List("xlf"))
+
+ lazy val `atsc-dwd+xml`: MediaType =
+ new MediaType("application", "atsc-dwd+xml", compressible = true, binary = true, List("dwd"))
+
+ lazy val `automationml-amlx+zip`: MediaType =
+ new MediaType("application", "automationml-amlx+zip", compressible = false, binary = true, List("amlx"))
+
+ lazy val `vnd.bluetooth.ep.oob`: MediaType =
+ new MediaType("application", "vnd.bluetooth.ep.oob", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.styles+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.google-apps.document",
- Uncompressible,
- NotBinary,
- List("gdoc"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.styles+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.google-apps.presentation`: MediaType = new MediaType(
+
+ lazy val `vnd.cendio.thinlinc.clientconf`: MediaType =
+ new MediaType("application", "vnd.cendio.thinlinc.clientconf", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.overload-control-policy-dataset+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.overload-control-policy-dataset+xml", compressible = true, binary = true)
+
+ lazy val `urc-uisocketdesc+xml`: MediaType =
+ new MediaType("application", "urc-uisocketdesc+xml", compressible = true, binary = true)
+
+ lazy val `vnd.radisys.msml+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml+xml", compressible = true, binary = true)
+
+ lazy val `vnd.dvb.dvbj`: MediaType =
+ new MediaType("application", "vnd.dvb.dvbj", compressible = false, binary = true)
+
+ lazy val `vnd.windows.devicepairing`: MediaType =
+ new MediaType("application", "vnd.windows.devicepairing", compressible = false, binary = true)
+
+ lazy val `vnd.comicbook-rar`: MediaType =
+ new MediaType("application", "vnd.comicbook-rar", compressible = false, binary = true)
+
+ lazy val `captive+json`: MediaType =
+ new MediaType("application", "captive+json", compressible = true, binary = false)
+
+ lazy val `vnd.etsi.iptvcommand+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvcommand+xml", compressible = true, binary = true)
+
+ lazy val `vnd.cups-postscript`: MediaType =
+ new MediaType("application", "vnd.cups-postscript", compressible = false, binary = true)
+
+ lazy val `vnd.gentoo.catmetadata+xml`: MediaType =
+ new MediaType("application", "vnd.gentoo.catmetadata+xml", compressible = true, binary = true)
+
+ lazy val `vnd.collection+json`: MediaType =
+ new MediaType("application", "vnd.collection+json", compressible = true, binary = false)
+
+ lazy val `vnd.oma.lwm2m+json`: MediaType =
+ new MediaType("application", "vnd.oma.lwm2m+json", compressible = true, binary = false)
+
+ lazy val `vnd.hp-jlyt`: MediaType =
+ new MediaType("application", "vnd.hp-jlyt", compressible = false, binary = true, List("jlt"))
+
+ lazy val `vnd.veritone.aion+json`: MediaType =
+ new MediaType("application", "vnd.veritone.aion+json", compressible = true, binary = false)
+
+ lazy val `wasm`: MediaType =
+ new MediaType("application", "wasm", compressible = true, binary = true, List("wasm"))
+
+ lazy val `vnd.oma.drm.risd+xml`: MediaType =
+ new MediaType("application", "vnd.oma.drm.risd+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.google-apps.presentation",
- Uncompressible,
- NotBinary,
- List("gslides"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.google-apps.spreadsheet`: MediaType = new MediaType(
+
+ lazy val `vnd.adobe.xdp+xml`: MediaType =
+ new MediaType("application", "vnd.adobe.xdp+xml", compressible = true, binary = true, List("xdp"))
+
+ lazy val `vnd.adobe.flash.movie`: MediaType =
+ new MediaType("application", "vnd.adobe.flash.movie", compressible = false, binary = true)
+
+ lazy val `vnd.novadigm.ext`: MediaType =
+ new MediaType("application", "vnd.novadigm.ext", compressible = false, binary = true, List("ext"))
+
+ lazy val `vnd.las.las+json`: MediaType =
+ new MediaType("application", "vnd.las.las+json", compressible = true, binary = false)
+
+ lazy val `x-msbinder`: MediaType =
+ new MediaType("application", "x-msbinder", compressible = false, binary = true, List("obd"))
+
+ lazy val `coap-group+json`: MediaType =
+ new MediaType("application", "coap-group+json", compressible = true, binary = false)
+
+ lazy val `vnd.oma-scws-config`: MediaType =
+ new MediaType("application", "vnd.oma-scws-config", compressible = false, binary = true)
+
+ lazy val `vnd.xfdl`: MediaType =
+ new MediaType("application", "vnd.xfdl", compressible = false, binary = true, List("xfdl"))
+
+ lazy val `vnd.oma.bcast.notification+xml`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.notification+xml", compressible = true, binary = true)
+
+ lazy val `x-msclip`: MediaType =
+ new MediaType("application", "x-msclip", compressible = false, binary = true, List("clp"))
+
+ lazy val `vnd.apple.installer+xml`: MediaType =
+ new MediaType("application", "vnd.apple.installer+xml", compressible = true, binary = true, List("mpkg"))
+
+ lazy val `vnd.marlin.drm.actiontoken+xml`: MediaType =
+ new MediaType("application", "vnd.marlin.drm.actiontoken+xml", compressible = true, binary = true)
+
+ lazy val `marc`: MediaType =
+ new MediaType("application", "marc", compressible = false, binary = true, List("mrc"))
+
+ lazy val `vnd.etsi.iptvsync+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvsync+xml", compressible = true, binary = true)
+
+ lazy val `x-conference`: MediaType =
+ new MediaType("application", "x-conference", compressible = false, binary = true, List("nsc"))
+
+ lazy val `vnd.epson.esf`: MediaType =
+ new MediaType("application", "vnd.epson.esf", compressible = false, binary = true, List("esf"))
+
+ lazy val `vnd.oma.bcast.provisioningtrigger`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.provisioningtrigger", compressible = false, binary = true)
+
+ lazy val `vnd.dna`: MediaType =
+ new MediaType("application", "vnd.dna", compressible = false, binary = true, List("dna"))
+
+ lazy val `soap+xml`: MediaType =
+ new MediaType("application", "soap+xml", compressible = true, binary = true)
+
+ lazy val `vnd.etsi.simservs+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.simservs+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.document`: MediaType =
+ new MediaType(
"application",
- "vnd.google-apps.spreadsheet",
- Uncompressible,
- NotBinary,
- List("gsheet"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.document",
+ compressible = false,
+ binary = true,
+ List("docx"),
)
- lazy val `vnd.google-earth.kml+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.microsoft.portable-executable`: MediaType =
+ new MediaType("application", "vnd.microsoft.portable-executable", compressible = false, binary = true)
+
+ lazy val `vnd.ms-powerpoint.addin.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.google-earth.kml+xml",
- Compressible,
- NotBinary,
- List("kml"),
+ "vnd.ms-powerpoint.addin.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("ppam"),
)
- lazy val `vnd.google-earth.kmz`: MediaType =
- new MediaType("application", "vnd.google-earth.kmz", Uncompressible, Binary, List("kmz"))
- lazy val `vnd.gov.sk.e-form+xml`: MediaType =
- new MediaType("application", "vnd.gov.sk.e-form+xml", Compressible, NotBinary)
- lazy val `vnd.gov.sk.e-form+zip`: MediaType =
- new MediaType("application", "vnd.gov.sk.e-form+zip", Uncompressible, NotBinary)
- lazy val `vnd.gov.sk.xmldatacontainer+xml`: MediaType =
- new MediaType("application", "vnd.gov.sk.xmldatacontainer+xml", Compressible, NotBinary)
- lazy val `vnd.grafeq`: MediaType =
- new MediaType("application", "vnd.grafeq", Compressible, NotBinary, List("gqf", "gqs"))
- lazy val `vnd.gridmp`: MediaType =
- new MediaType("application", "vnd.gridmp", Compressible, NotBinary)
- lazy val `vnd.groove-account`: MediaType =
- new MediaType("application", "vnd.groove-account", Compressible, NotBinary, List("gac"))
- lazy val `vnd.groove-help`: MediaType =
- new MediaType("application", "vnd.groove-help", Compressible, NotBinary, List("ghf"))
- lazy val `vnd.groove-identity-message`: MediaType = new MediaType(
+
+ lazy val `vnd.think-cell.ppttc+json`: MediaType =
+ new MediaType("application", "vnd.think-cell.ppttc+json", compressible = true, binary = false)
+
+ lazy val `vnd.avistar+xml`: MediaType =
+ new MediaType("application", "vnd.avistar+xml", compressible = true, binary = true)
+
+ lazy val `vnd.las.las+xml`: MediaType =
+ new MediaType("application", "vnd.las.las+xml", compressible = true, binary = true, List("lasxml"))
+
+ lazy val `vnd.ms-powerpoint.slideshow.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.groove-identity-message",
- Compressible,
- NotBinary,
- List("gim"),
+ "vnd.ms-powerpoint.slideshow.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("ppsm"),
)
- lazy val `vnd.groove-injector`: MediaType =
- new MediaType("application", "vnd.groove-injector", Compressible, NotBinary, List("grv"))
- lazy val `vnd.groove-tool-message`: MediaType = new MediaType(
+
+ lazy val `vnd.ims.lti.v2.toolproxy.id+json`: MediaType =
+ new MediaType("application", "vnd.ims.lti.v2.toolproxy.id+json", compressible = true, binary = false)
+
+ lazy val `vnd.nintendo.nitro.rom`: MediaType =
+ new MediaType("application", "vnd.nintendo.nitro.rom", compressible = false, binary = true)
+
+ lazy val `vnd.apache.arrow.file`: MediaType =
+ new MediaType("application", "vnd.apache.arrow.file", compressible = false, binary = true)
+
+ lazy val `ipfix`: MediaType =
+ new MediaType("application", "ipfix", compressible = false, binary = true, List("ipfix"))
+
+ lazy val `vnd.3gpp.mcptt-floor-request+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-floor-request+xml", compressible = true, binary = true)
+
+ lazy val `alto-updatestreamparams+json`: MediaType =
+ new MediaType("application", "alto-updatestreamparams+json", compressible = true, binary = false)
+
+ lazy val `vnd.ibm.minipay`: MediaType =
+ new MediaType("application", "vnd.ibm.minipay", compressible = false, binary = true, List("mpy"))
+
+ lazy val `vnd.document+json`: MediaType =
+ new MediaType("application", "vnd.document+json", compressible = true, binary = false)
+
+ lazy val `vnd.groove-tool-template`: MediaType =
+ new MediaType("application", "vnd.groove-tool-template", compressible = false, binary = true, List("tpl"))
+
+ lazy val `vnd.oasis.opendocument.chart-template`: MediaType =
+ new MediaType(
"application",
- "vnd.groove-tool-message",
- Compressible,
- NotBinary,
- List("gtm"),
+ "vnd.oasis.opendocument.chart-template",
+ compressible = false,
+ binary = true,
+ List("otc"),
)
- lazy val `vnd.groove-tool-template`: MediaType = new MediaType(
+
+ lazy val `vnd.ms-wmdrm.lic-chlg-req`: MediaType =
+ new MediaType("application", "vnd.ms-wmdrm.lic-chlg-req", compressible = false, binary = true)
+
+ lazy val `vnd.wasmflow.wafl`: MediaType =
+ new MediaType("application", "vnd.wasmflow.wafl", compressible = false, binary = true)
+
+ lazy val `vnd.google-earth.kml+xml`: MediaType =
+ new MediaType("application", "vnd.google-earth.kml+xml", compressible = true, binary = true, List("kml"))
+
+ lazy val `alto-endpointcostparams+json`: MediaType =
+ new MediaType("application", "alto-endpointcostparams+json", compressible = true, binary = false)
+
+ lazy val `vnd.radisys.msml-dialog-transform+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog-transform+xml", compressible = true, binary = true)
+
+ lazy val `emergencycalldata.ecall.msd`: MediaType =
+ new MediaType("application", "emergencycalldata.ecall.msd", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcptt-affiliation-command+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-affiliation-command+xml", compressible = true, binary = true)
+
+ lazy val `mbms-schedule+xml`: MediaType =
+ new MediaType("application", "mbms-schedule+xml", compressible = true, binary = true)
+
+ lazy val `vnd.nervana`: MediaType =
+ new MediaType("application", "vnd.nervana", compressible = false, binary = true)
+
+ lazy val `vnd.smart.notebook`: MediaType =
+ new MediaType("application", "vnd.smart.notebook", compressible = false, binary = true)
+
+ lazy val `vnd.pcos`: MediaType =
+ new MediaType("application", "vnd.pcos", compressible = false, binary = true)
+
+ lazy val `vnd.valve.source.material`: MediaType =
+ new MediaType("application", "vnd.valve.source.material", compressible = false, binary = true)
+
+ lazy val `java-archive`: MediaType =
+ new MediaType("application", "java-archive", compressible = false, binary = true, List("jar", "war", "ear"))
+
+ lazy val `vnd.miele+json`: MediaType =
+ new MediaType("application", "vnd.miele+json", compressible = true, binary = false)
+
+ lazy val `vnd.3gpp.mcptt-mbms-usage-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-mbms-usage-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.infotech.project`: MediaType =
+ new MediaType("application", "vnd.infotech.project", compressible = false, binary = true)
+
+ lazy val `vnd.yamaha.tunnel-udpencap`: MediaType =
+ new MediaType("application", "vnd.yamaha.tunnel-udpencap", compressible = false, binary = true)
+
+ lazy val `appx`: MediaType =
+ new MediaType("application", "appx", compressible = false, binary = true, List("appx"))
+
+ lazy val `smpte336m`: MediaType =
+ new MediaType("application", "smpte336m", compressible = false, binary = true)
+
+ lazy val `x-sv4cpio`: MediaType =
+ new MediaType("application", "x-sv4cpio", compressible = false, binary = true, List("sv4cpio"))
+
+ lazy val `mbms-user-service-description+xml`: MediaType =
+ new MediaType("application", "mbms-user-service-description+xml", compressible = true, binary = true)
+
+ lazy val `jwt`: MediaType =
+ new MediaType("application", "jwt", compressible = false, binary = true)
+
+ lazy val `vnd.fdsn.seed`: MediaType =
+ new MediaType("application", "vnd.fdsn.seed", compressible = false, binary = true, List("seed", "dataless"))
+
+ lazy val `ipp`: MediaType =
+ new MediaType("application", "ipp", compressible = false, binary = true)
+
+ lazy val `vnd.yamaha.through-ngn`: MediaType =
+ new MediaType("application", "vnd.yamaha.through-ngn", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.spreadsheet`: MediaType =
+ new MediaType(
"application",
- "vnd.groove-tool-template",
- Compressible,
- NotBinary,
- List("tpl"),
- )
- lazy val `vnd.groove-vcard`: MediaType =
- new MediaType("application", "vnd.groove-vcard", Compressible, NotBinary, List("vcg"))
- lazy val `vnd.hal+json`: MediaType =
- new MediaType("application", "vnd.hal+json", Compressible, NotBinary)
- lazy val `vnd.hal+xml`: MediaType =
- new MediaType("application", "vnd.hal+xml", Compressible, NotBinary, List("hal"))
- lazy val `vnd.handheld-entertainment+xml`: MediaType = new MediaType(
- "application",
- "vnd.handheld-entertainment+xml",
- Compressible,
- NotBinary,
- List("zmm"),
- )
- lazy val `vnd.hbci`: MediaType =
- new MediaType("application", "vnd.hbci", Compressible, NotBinary, List("hbci"))
- lazy val `vnd.hc+json`: MediaType =
- new MediaType("application", "vnd.hc+json", Compressible, NotBinary)
- lazy val `vnd.hcl-bireports`: MediaType =
- new MediaType("application", "vnd.hcl-bireports", Compressible, NotBinary)
- lazy val `vnd.hdt`: MediaType =
- new MediaType("application", "vnd.hdt", Compressible, NotBinary)
- lazy val `vnd.heroku+json`: MediaType =
- new MediaType("application", "vnd.heroku+json", Compressible, NotBinary)
- lazy val `vnd.hhe.lesson-player`: MediaType =
- new MediaType("application", "vnd.hhe.lesson-player", Compressible, NotBinary, List("les"))
- lazy val `vnd.hp-hpgl`: MediaType =
- new MediaType("application", "vnd.hp-hpgl", Compressible, NotBinary, List("hpgl"))
- lazy val `vnd.hp-hpid`: MediaType =
- new MediaType("application", "vnd.hp-hpid", Compressible, NotBinary, List("hpid"))
- lazy val `vnd.hp-hps`: MediaType =
- new MediaType("application", "vnd.hp-hps", Compressible, NotBinary, List("hps"))
- lazy val `vnd.hp-jlyt`: MediaType =
- new MediaType("application", "vnd.hp-jlyt", Compressible, NotBinary, List("jlt"))
- lazy val `vnd.hp-pcl`: MediaType =
- new MediaType("application", "vnd.hp-pcl", Compressible, NotBinary, List("pcl"))
- lazy val `vnd.hp-pclxl`: MediaType =
- new MediaType("application", "vnd.hp-pclxl", Compressible, NotBinary, List("pclxl"))
- lazy val `vnd.httphone`: MediaType =
- new MediaType("application", "vnd.httphone", Compressible, NotBinary)
- lazy val `vnd.hydrostatix.sof-data`: MediaType = new MediaType(
- "application",
- "vnd.hydrostatix.sof-data",
- Compressible,
- NotBinary,
- List("sfd-hdstx"),
+ "vnd.oasis.opendocument.spreadsheet",
+ compressible = false,
+ binary = true,
+ List("ods"),
)
- lazy val `vnd.hyper+json`: MediaType =
- new MediaType("application", "vnd.hyper+json", Compressible, NotBinary)
- lazy val `vnd.hyper-item+json`: MediaType =
- new MediaType("application", "vnd.hyper-item+json", Compressible, NotBinary)
- lazy val `vnd.hyperdrive+json`: MediaType =
- new MediaType("application", "vnd.hyperdrive+json", Compressible, NotBinary)
- lazy val `vnd.hzn-3d-crossword`: MediaType =
- new MediaType("application", "vnd.hzn-3d-crossword", Compressible, NotBinary)
- lazy val `vnd.ibm.afplinedata`: MediaType =
- new MediaType("application", "vnd.ibm.afplinedata", Compressible, NotBinary)
- lazy val `vnd.ibm.electronic-media`: MediaType =
- new MediaType("application", "vnd.ibm.electronic-media", Compressible, NotBinary)
- lazy val `vnd.ibm.minipay`: MediaType =
- new MediaType("application", "vnd.ibm.minipay", Compressible, NotBinary, List("mpy"))
- lazy val `vnd.ibm.modcap`: MediaType = new MediaType(
+
+ lazy val `vnd.etsi.iptvsad-npvr+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvsad-npvr+xml", compressible = true, binary = true)
+
+ lazy val `mpeg4-iod-xmt`: MediaType =
+ new MediaType("application", "mpeg4-iod-xmt", compressible = false, binary = true)
+
+ lazy val `vnd.wv.csp+xml`: MediaType =
+ new MediaType("application", "vnd.wv.csp+xml", compressible = true, binary = true)
+
+ lazy val `vnd.vectorworks`: MediaType =
+ new MediaType("application", "vnd.vectorworks", compressible = false, binary = true)
+
+ lazy val `vnd.mynfc`: MediaType =
+ new MediaType("application", "vnd.mynfc", compressible = false, binary = true, List("taglet"))
+
+ lazy val `vnd.century-systems.tcp_stream`: MediaType =
+ new MediaType("application", "vnd.century-systems.tcp_stream", compressible = false, binary = true)
+
+ lazy val `clue+xml`: MediaType =
+ new MediaType("application", "clue+xml", compressible = true, binary = true)
+
+ lazy val `senml+cbor`: MediaType =
+ new MediaType("application", "senml+cbor", compressible = false, binary = true)
+
+ lazy val `elm+json`: MediaType =
+ new MediaType("application", "elm+json", compressible = true, binary = false)
+
+ lazy val `vnd.music-niff`: MediaType =
+ new MediaType("application", "vnd.music-niff", compressible = false, binary = true)
+
+ lazy val `vnd.ibm.modcap`: MediaType =
+ new MediaType(
"application",
"vnd.ibm.modcap",
- Compressible,
- NotBinary,
+ compressible = false,
+ binary = true,
List("afp", "listafp", "list3820"),
)
- lazy val `vnd.ibm.rights-management`: MediaType = new MediaType(
+
+ lazy val `vnd.ctc-posml`: MediaType =
+ new MediaType("application", "vnd.ctc-posml", compressible = false, binary = true, List("pml"))
+
+ lazy val `p2p-overlay+xml`: MediaType =
+ new MediaType("application", "p2p-overlay+xml", compressible = true, binary = true, List("relo"))
+
+ lazy val `rfc+xml`: MediaType =
+ new MediaType("application", "rfc+xml", compressible = true, binary = true)
+
+ lazy val `x-authorware-seg`: MediaType =
+ new MediaType("application", "x-authorware-seg", compressible = false, binary = true, List("aas"))
+
+ lazy val `vnd.sealed.csf`: MediaType =
+ new MediaType("application", "vnd.sealed.csf", compressible = false, binary = true)
+
+ lazy val `samlmetadata+xml`: MediaType =
+ new MediaType("application", "samlmetadata+xml", compressible = true, binary = true)
+
+ lazy val `ssdl+xml`: MediaType =
+ new MediaType("application", "ssdl+xml", compressible = true, binary = true, List("ssdl"))
+
+ lazy val `missing-blocks+cbor-seq`: MediaType =
+ new MediaType("application", "missing-blocks+cbor-seq", compressible = false, binary = true)
+
+ lazy val `vnd.mobius.txf`: MediaType =
+ new MediaType("application", "vnd.mobius.txf", compressible = false, binary = true, List("txf"))
+
+ lazy val `vnd.radisys.msml-audit-conn+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-audit-conn+xml", compressible = true, binary = true)
+
+ lazy val `vnd.futoin+cbor`: MediaType =
+ new MediaType("application", "vnd.futoin+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.intertrust.digibox`: MediaType =
+ new MediaType("application", "vnd.intertrust.digibox", compressible = false, binary = true)
+
+ lazy val `vnd.radisys.msml-audit+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-audit+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oma-scws-http-response`: MediaType =
+ new MediaType("application", "vnd.oma-scws-http-response", compressible = false, binary = true)
+
+ lazy val `x-tar`: MediaType =
+ new MediaType("application", "x-tar", compressible = true, binary = true, List("tar"))
+
+ lazy val `vnd.banana-accounting`: MediaType =
+ new MediaType("application", "vnd.banana-accounting", compressible = false, binary = true)
+
+ lazy val `token-introspection+jwt`: MediaType =
+ new MediaType("application", "token-introspection+jwt", compressible = false, binary = true)
+
+ lazy val `kpml-response+xml`: MediaType =
+ new MediaType("application", "kpml-response+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sealed.mht`: MediaType =
+ new MediaType("application", "vnd.sealed.mht", compressible = false, binary = true)
+
+ lazy val `vnd.yamaha.hv-dic`: MediaType =
+ new MediaType("application", "vnd.yamaha.hv-dic", compressible = false, binary = true, List("hvd"))
+
+ lazy val `applefile`: MediaType =
+ new MediaType("application", "applefile", compressible = false, binary = true)
+
+ lazy val `xhtml+xml`: MediaType =
+ new MediaType("application", "xhtml+xml", compressible = true, binary = true, List("xhtml", "xht"))
+
+ lazy val `mmt-aei+xml`: MediaType =
+ new MediaType("application", "mmt-aei+xml", compressible = true, binary = true, List("maei"))
+
+ lazy val `vnd.oma.bcast.drm-trigger+xml`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.drm-trigger+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sealed.xls`: MediaType =
+ new MediaType("application", "vnd.sealed.xls", compressible = false, binary = true)
+
+ lazy val `vnd.snesdev-page-table`: MediaType =
+ new MediaType("application", "vnd.snesdev-page-table", compressible = false, binary = true)
+
+ lazy val `exi`: MediaType =
+ new MediaType("application", "exi", compressible = false, binary = true, List("exi"))
+
+ lazy val `vnd.wap.wmlc`: MediaType =
+ new MediaType("application", "vnd.wap.wmlc", compressible = false, binary = true, List("wmlc"))
+
+ lazy val `vnd.oma.cab-feature-handler+xml`: MediaType =
+ new MediaType("application", "vnd.oma.cab-feature-handler+xml", compressible = true, binary = true)
+
+ lazy val `media_control+xml`: MediaType =
+ new MediaType("application", "media_control+xml", compressible = true, binary = true)
+
+ lazy val `vnd.curl.car`: MediaType =
+ new MediaType("application", "vnd.curl.car", compressible = false, binary = true, List("car"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.viewprops+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ibm.rights-management",
- Compressible,
- NotBinary,
- List("irm"),
+ "vnd.openxmlformats-officedocument.presentationml.viewprops+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ibm.secure-container`: MediaType = new MediaType(
+
+ lazy val `xaml+xml`: MediaType =
+ new MediaType("application", "xaml+xml", compressible = true, binary = true, List("xaml"))
+
+ lazy val `vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ibm.secure-container",
- Compressible,
- NotBinary,
- List("sc"),
+ "vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.iccprofile`: MediaType =
- new MediaType("application", "vnd.iccprofile", Compressible, NotBinary, List("icc", "icm"))
- lazy val `vnd.ieee.1905`: MediaType =
- new MediaType("application", "vnd.ieee.1905", Compressible, NotBinary)
- lazy val `vnd.igloader`: MediaType =
- new MediaType("application", "vnd.igloader", Compressible, NotBinary, List("igl"))
- lazy val `vnd.imagemeter.folder+zip`: MediaType =
- new MediaType("application", "vnd.imagemeter.folder+zip", Uncompressible, NotBinary)
- lazy val `vnd.imagemeter.image+zip`: MediaType =
- new MediaType("application", "vnd.imagemeter.image+zip", Uncompressible, NotBinary)
- lazy val `vnd.immervision-ivp`: MediaType =
- new MediaType("application", "vnd.immervision-ivp", Compressible, NotBinary, List("ivp"))
- lazy val `vnd.immervision-ivu`: MediaType =
- new MediaType("application", "vnd.immervision-ivu", Compressible, NotBinary, List("ivu"))
- lazy val `vnd.ims.imsccv1p1`: MediaType =
- new MediaType("application", "vnd.ims.imsccv1p1", Compressible, NotBinary)
- lazy val `vnd.ims.imsccv1p2`: MediaType =
- new MediaType("application", "vnd.ims.imsccv1p2", Compressible, NotBinary)
- lazy val `vnd.ims.imsccv1p3`: MediaType =
- new MediaType("application", "vnd.ims.imsccv1p3", Compressible, NotBinary)
- lazy val `vnd.ims.lis.v2.result+json`: MediaType =
- new MediaType("application", "vnd.ims.lis.v2.result+json", Compressible, NotBinary)
- lazy val `vnd.ims.lti.v2.toolconsumerprofile+json`: MediaType = new MediaType(
+
+ lazy val `tlsrpt+gzip`: MediaType =
+ new MediaType("application", "tlsrpt+gzip", compressible = false, binary = true)
+
+ lazy val `vnd.citationstyles.style+xml`: MediaType =
+ new MediaType("application", "vnd.citationstyles.style+xml", compressible = true, binary = true, List("csl"))
+
+ lazy val `urc-grpsheet+xml`: MediaType =
+ new MediaType("application", "urc-grpsheet+xml", compressible = true, binary = true)
+
+ lazy val `vnd.frogans.fnc`: MediaType =
+ new MediaType("application", "vnd.frogans.fnc", compressible = false, binary = true, List("fnc"))
+
+ lazy val `vnd.onepager`: MediaType =
+ new MediaType("application", "vnd.onepager", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ims.lti.v2.toolconsumerprofile+json",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ims.lti.v2.toolproxy+json`: MediaType =
- new MediaType("application", "vnd.ims.lti.v2.toolproxy+json", Compressible, NotBinary)
- lazy val `vnd.ims.lti.v2.toolproxy.id+json`: MediaType =
- new MediaType("application", "vnd.ims.lti.v2.toolproxy.id+json", Compressible, NotBinary)
- lazy val `vnd.ims.lti.v2.toolsettings+json`: MediaType =
- new MediaType("application", "vnd.ims.lti.v2.toolsettings+json", Compressible, NotBinary)
- lazy val `vnd.ims.lti.v2.toolsettings.simple+json`: MediaType = new MediaType(
+
+ lazy val `vnd.dvb.iptv.alfec-base`: MediaType =
+ new MediaType("application", "vnd.dvb.iptv.alfec-base", compressible = false, binary = true)
+
+ lazy val `vnd.joost.joda-archive`: MediaType =
+ new MediaType("application", "vnd.joost.joda-archive", compressible = false, binary = true, List("joda"))
+
+ lazy val `pgp-encrypted`: MediaType =
+ new MediaType("application", "pgp-encrypted", compressible = false, binary = true, List("pgp"))
+
+ lazy val `x-freearc`: MediaType =
+ new MediaType("application", "x-freearc", compressible = false, binary = true, List("arc"))
+
+ lazy val `vnd.3gpp.lpp`: MediaType =
+ new MediaType("application", "vnd.3gpp.lpp", compressible = false, binary = true)
+
+ lazy val `vnd.curl.pcurl`: MediaType =
+ new MediaType("application", "vnd.curl.pcurl", compressible = false, binary = true, List("pcurl"))
+
+ lazy val `rpki-manifest`: MediaType =
+ new MediaType("application", "rpki-manifest", compressible = false, binary = true, List("mft"))
+
+ lazy val `vnd.3gpp.sms+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.sms+xml", compressible = true, binary = true)
+
+ lazy val `vnd.spotfire.sfs`: MediaType =
+ new MediaType("application", "vnd.spotfire.sfs", compressible = false, binary = true, List("sfs"))
+
+ lazy val `vnd.liberty-request+xml`: MediaType =
+ new MediaType("application", "vnd.liberty-request+xml", compressible = true, binary = true)
+
+ lazy val `node`: MediaType =
+ new MediaType("application", "node", compressible = false, binary = true, List("cjs"))
+
+ lazy val `xacml+xml`: MediaType =
+ new MediaType("application", "xacml+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ecowin.seriesupdate`: MediaType =
+ new MediaType("application", "vnd.ecowin.seriesupdate", compressible = false, binary = true)
+
+ lazy val `vnd.geonext`: MediaType =
+ new MediaType("application", "vnd.geonext", compressible = false, binary = true, List("gxt"))
+
+ lazy val `prs.xsf+xml`: MediaType =
+ new MediaType("application", "prs.xsf+xml", compressible = true, binary = true, List("xsf"))
+
+ lazy val `srgs`: MediaType =
+ new MediaType("application", "srgs", compressible = false, binary = true, List("gram"))
+
+ lazy val `vnd.etsi.timestamp-token`: MediaType =
+ new MediaType("application", "vnd.etsi.timestamp-token", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcdata-signalling`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-signalling", compressible = false, binary = true)
+
+ lazy val `x-font-dos`: MediaType =
+ new MediaType("application", "x-font-dos", compressible = false, binary = true)
+
+ lazy val `x-pki-message`: MediaType =
+ new MediaType("application", "x-pki-message", compressible = false, binary = true)
+
+ lazy val `vnd.hsl`: MediaType =
+ new MediaType("application", "vnd.hsl", compressible = false, binary = true)
+
+ lazy val `vnd.motorola.flexsuite.ttc`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite.ttc", compressible = false, binary = true)
+
+ lazy val `x-mspublisher`: MediaType =
+ new MediaType("application", "x-mspublisher", compressible = false, binary = true, List("pub"))
+
+ lazy val `vnd.3lightssoftware.imagescal`: MediaType =
+ new MediaType("application", "vnd.3lightssoftware.imagescal", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.connections+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ims.lti.v2.toolsettings.simple+json",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.spreadsheetml.connections+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.informedcontrol.rms+xml`: MediaType =
- new MediaType("application", "vnd.informedcontrol.rms+xml", Compressible, NotBinary)
- lazy val `vnd.informix-visionary`: MediaType =
- new MediaType("application", "vnd.informix-visionary", Compressible, NotBinary)
- lazy val `vnd.infotech.project`: MediaType =
- new MediaType("application", "vnd.infotech.project", Compressible, NotBinary)
- lazy val `vnd.infotech.project+xml`: MediaType =
- new MediaType("application", "vnd.infotech.project+xml", Compressible, NotBinary)
- lazy val `vnd.innopath.wamp.notification`: MediaType =
- new MediaType("application", "vnd.innopath.wamp.notification", Compressible, NotBinary)
- lazy val `vnd.insors.igm`: MediaType =
- new MediaType("application", "vnd.insors.igm", Compressible, NotBinary, List("igm"))
- lazy val `vnd.intercon.formnet`: MediaType = new MediaType(
+
+ lazy val `vnd.fujitsu.oasys3`: MediaType =
+ new MediaType("application", "vnd.fujitsu.oasys3", compressible = false, binary = true, List("oa3"))
+
+ lazy val `wspolicy+xml`: MediaType =
+ new MediaType("application", "wspolicy+xml", compressible = true, binary = true, List("wspolicy"))
+
+ lazy val `xml-external-parsed-entity`: MediaType =
+ new MediaType("application", "xml-external-parsed-entity", compressible = false, binary = false)
+
+ lazy val `vnd.shp`: MediaType =
+ new MediaType("application", "vnd.shp", compressible = false, binary = true)
+
+ lazy val `vnd.hyper+json`: MediaType =
+ new MediaType("application", "vnd.hyper+json", compressible = true, binary = false)
+
+ lazy val `vnd.age`: MediaType =
+ new MediaType("application", "vnd.age", compressible = false, binary = true, List("age"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.intercon.formnet",
- Compressible,
- NotBinary,
- List("xpw", "xpx"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.intergeo`: MediaType =
- new MediaType("application", "vnd.intergeo", Compressible, NotBinary, List("i2g"))
- lazy val `vnd.intertrust.digibox`: MediaType =
- new MediaType("application", "vnd.intertrust.digibox", Compressible, NotBinary)
- lazy val `vnd.intertrust.nncp`: MediaType =
- new MediaType("application", "vnd.intertrust.nncp", Compressible, NotBinary)
- lazy val `vnd.intu.qbo`: MediaType =
- new MediaType("application", "vnd.intu.qbo", Compressible, NotBinary, List("qbo"))
- lazy val `vnd.intu.qfx`: MediaType =
- new MediaType("application", "vnd.intu.qfx", Compressible, NotBinary, List("qfx"))
- lazy val `vnd.iptc.g2.catalogitem+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.catalogitem+xml", Compressible, NotBinary)
- lazy val `vnd.iptc.g2.conceptitem+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.conceptitem+xml", Compressible, NotBinary)
- lazy val `vnd.iptc.g2.knowledgeitem+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.knowledgeitem+xml", Compressible, NotBinary)
- lazy val `vnd.iptc.g2.newsitem+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.newsitem+xml", Compressible, NotBinary)
- lazy val `vnd.iptc.g2.newsmessage+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.newsmessage+xml", Compressible, NotBinary)
- lazy val `vnd.iptc.g2.packageitem+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.packageitem+xml", Compressible, NotBinary)
- lazy val `vnd.iptc.g2.planningitem+xml`: MediaType =
- new MediaType("application", "vnd.iptc.g2.planningitem+xml", Compressible, NotBinary)
- lazy val `vnd.ipunplugged.rcprofile`: MediaType = new MediaType(
+
+ lazy val `vnd.crick.clicker.wordbank`: MediaType =
+ new MediaType("application", "vnd.crick.clicker.wordbank", compressible = false, binary = true, List("clkw"))
+
+ lazy val `x-amf`: MediaType =
+ new MediaType("application", "x-amf", compressible = false, binary = true)
+
+ lazy val `vnd.eszigno3+xml`: MediaType =
+ new MediaType("application", "vnd.eszigno3+xml", compressible = true, binary = true, List("es3", "et3"))
+
+ lazy val `ecmascript`: MediaType =
+ new MediaType("application", "ecmascript", compressible = true, binary = true, List("ecma"))
+
+ lazy val `vnd.rs-274x`: MediaType =
+ new MediaType("application", "vnd.rs-274x", compressible = false, binary = true)
+
+ lazy val `lostsync+xml`: MediaType =
+ new MediaType("application", "lostsync+xml", compressible = true, binary = true)
+
+ lazy val `vnd.curl`: MediaType =
+ new MediaType("application", "vnd.curl", compressible = false, binary = true)
+
+ lazy val `vnd.api+json`: MediaType =
+ new MediaType("application", "vnd.api+json", compressible = true, binary = false)
+
+ lazy val `vnd.ims.imsccv1p3`: MediaType =
+ new MediaType("application", "vnd.ims.imsccv1p3", compressible = false, binary = true)
+
+ lazy val `vnd.logipipe.circuit+zip`: MediaType =
+ new MediaType("application", "vnd.logipipe.circuit+zip", compressible = false, binary = true)
+
+ lazy val `x-authorware-bin`: MediaType =
+ new MediaType(
"application",
- "vnd.ipunplugged.rcprofile",
- Compressible,
- NotBinary,
- List("rcprofile"),
+ "x-authorware-bin",
+ compressible = false,
+ binary = true,
+ List("aab", "x32", "u32", "vox"),
)
- lazy val `vnd.irepository.package+xml`: MediaType = new MediaType(
+
+ lazy val `geoxacml+xml`: MediaType =
+ new MediaType("application", "geoxacml+xml", compressible = true, binary = true)
+
+ lazy val `toml`: MediaType =
+ new MediaType("application", "toml", compressible = true, binary = true, List("toml"))
+
+ lazy val `vnd.anser-web-certificate-issue-initiation`: MediaType =
+ new MediaType(
"application",
- "vnd.irepository.package+xml",
- Compressible,
- NotBinary,
- List("irp"),
+ "vnd.anser-web-certificate-issue-initiation",
+ compressible = false,
+ binary = true,
+ List("cii"),
)
- lazy val `vnd.is-xpr`: MediaType =
- new MediaType("application", "vnd.is-xpr", Compressible, NotBinary, List("xpr"))
- lazy val `vnd.isac.fcs`: MediaType =
- new MediaType("application", "vnd.isac.fcs", Compressible, NotBinary, List("fcs"))
- lazy val `vnd.iso11783-10+zip`: MediaType =
- new MediaType("application", "vnd.iso11783-10+zip", Uncompressible, NotBinary)
- lazy val `vnd.jam`: MediaType =
- new MediaType("application", "vnd.jam", Compressible, NotBinary, List("jam"))
- lazy val `vnd.japannet-directory-service`: MediaType =
- new MediaType("application", "vnd.japannet-directory-service", Compressible, NotBinary)
- lazy val `vnd.japannet-jpnstore-wakeup`: MediaType =
- new MediaType("application", "vnd.japannet-jpnstore-wakeup", Compressible, NotBinary)
- lazy val `vnd.japannet-payment-wakeup`: MediaType =
- new MediaType("application", "vnd.japannet-payment-wakeup", Compressible, NotBinary)
- lazy val `vnd.japannet-registration`: MediaType =
- new MediaType("application", "vnd.japannet-registration", Compressible, NotBinary)
- lazy val `vnd.japannet-registration-wakeup`: MediaType =
- new MediaType("application", "vnd.japannet-registration-wakeup", Compressible, NotBinary)
- lazy val `vnd.japannet-setstore-wakeup`: MediaType =
- new MediaType("application", "vnd.japannet-setstore-wakeup", Compressible, NotBinary)
- lazy val `vnd.japannet-verification`: MediaType =
- new MediaType("application", "vnd.japannet-verification", Compressible, NotBinary)
- lazy val `vnd.japannet-verification-wakeup`: MediaType =
- new MediaType("application", "vnd.japannet-verification-wakeup", Compressible, NotBinary)
- lazy val `vnd.jcp.javame.midlet-rms`: MediaType = new MediaType(
+
+ lazy val `scvp-vp-request`: MediaType =
+ new MediaType("application", "scvp-vp-request", compressible = false, binary = true, List("spq"))
+
+ lazy val `vnd.openxmlformats-officedocument.themeoverride+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.jcp.javame.midlet-rms",
- Compressible,
- NotBinary,
- List("rms"),
+ "vnd.openxmlformats-officedocument.themeoverride+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.jisp`: MediaType =
- new MediaType("application", "vnd.jisp", Compressible, NotBinary, List("jisp"))
- lazy val `vnd.joost.joda-archive`: MediaType = new MediaType(
+
+ lazy val `vnd.psfs`: MediaType =
+ new MediaType("application", "vnd.psfs", compressible = false, binary = true)
+
+ lazy val `voucher-cms+json`: MediaType =
+ new MediaType("application", "voucher-cms+json", compressible = true, binary = false)
+
+ lazy val `xmpp+xml`: MediaType =
+ new MediaType("application", "xmpp+xml", compressible = true, binary = true)
+
+ lazy val `bdoc`: MediaType =
+ new MediaType("application", "bdoc", compressible = false, binary = true, List("bdoc"))
+
+ lazy val `vnd.wfa.p2p`: MediaType =
+ new MediaType("application", "vnd.wfa.p2p", compressible = false, binary = true)
+
+ lazy val `vnd.uplanet.channel`: MediaType =
+ new MediaType("application", "vnd.uplanet.channel", compressible = false, binary = true)
+
+ lazy val `mbms-protection-description+xml`: MediaType =
+ new MediaType("application", "mbms-protection-description+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sus-calendar`: MediaType =
+ new MediaType("application", "vnd.sus-calendar", compressible = false, binary = true, List("sus", "susp"))
+
+ lazy val `senml-etch+cbor`: MediaType =
+ new MediaType("application", "senml-etch+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.motorola.flexsuite`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite", compressible = false, binary = true)
+
+ lazy val `x-authorware-map`: MediaType =
+ new MediaType("application", "x-authorware-map", compressible = false, binary = true, List("aam"))
+
+ lazy val `vnd.3gpp.seal-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.seal-info+xml", compressible = true, binary = true)
+
+ lazy val `dssc+der`: MediaType =
+ new MediaType("application", "dssc+der", compressible = false, binary = true, List("dssc"))
+
+ lazy val `vnd.rapid`: MediaType =
+ new MediaType("application", "vnd.rapid", compressible = false, binary = true)
+
+ lazy val `vnd.sun.xml.writer.template`: MediaType =
+ new MediaType("application", "vnd.sun.xml.writer.template", compressible = false, binary = true, List("stw"))
+
+ lazy val `vnd.3gpp.mcdata-service-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-service-config+xml", compressible = true, binary = true)
+
+ lazy val `mikey`: MediaType =
+ new MediaType("application", "mikey", compressible = false, binary = true)
+
+ lazy val `vnd.ms-excel.sheet.binary.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.joost.joda-archive",
- Compressible,
- NotBinary,
- List("joda"),
+ "vnd.ms-excel.sheet.binary.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("xlsb"),
)
- lazy val `vnd.jsk.isdn-ngn`: MediaType =
- new MediaType("application", "vnd.jsk.isdn-ngn", Compressible, NotBinary)
- lazy val `vnd.kahootz`: MediaType =
- new MediaType("application", "vnd.kahootz", Compressible, NotBinary, List("ktz", "ktr"))
- lazy val `vnd.kde.karbon`: MediaType =
- new MediaType("application", "vnd.kde.karbon", Compressible, NotBinary, List("karbon"))
- lazy val `vnd.kde.kchart`: MediaType =
- new MediaType("application", "vnd.kde.kchart", Compressible, NotBinary, List("chrt"))
- lazy val `vnd.kde.kformula`: MediaType =
- new MediaType("application", "vnd.kde.kformula", Compressible, NotBinary, List("kfo"))
- lazy val `vnd.kde.kivio`: MediaType =
- new MediaType("application", "vnd.kde.kivio", Compressible, NotBinary, List("flw"))
- lazy val `vnd.kde.kontour`: MediaType =
- new MediaType("application", "vnd.kde.kontour", Compressible, NotBinary, List("kon"))
- lazy val `vnd.kde.kpresenter`: MediaType = new MediaType(
+
+ lazy val `batch-smtp`: MediaType =
+ new MediaType("application", "batch-smtp", compressible = false, binary = true)
+
+ lazy val `vnd.powerbuilder6-s`: MediaType =
+ new MediaType("application", "vnd.powerbuilder6-s", compressible = false, binary = true)
+
+ lazy val `cpl+xml`: MediaType =
+ new MediaType("application", "cpl+xml", compressible = true, binary = true, List("cpl"))
+
+ lazy val `cellml+xml`: MediaType =
+ new MediaType("application", "cellml+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oma.poc.final-report+xml`: MediaType =
+ new MediaType("application", "vnd.oma.poc.final-report+xml", compressible = true, binary = true)
+
+ lazy val `x-mobipocket-ebook`: MediaType =
+ new MediaType("application", "x-mobipocket-ebook", compressible = false, binary = true, List("prc", "mobi"))
+
+ lazy val `vnd.ipld.dag-json`: MediaType =
+ new MediaType("application", "vnd.ipld.dag-json", compressible = false, binary = false)
+
+ lazy val `isup`: MediaType =
+ new MediaType("application", "isup", compressible = false, binary = true)
+
+ lazy val `cwl+json`: MediaType =
+ new MediaType("application", "cwl+json", compressible = true, binary = false)
+
+ lazy val `omdoc+xml`: MediaType =
+ new MediaType("application", "omdoc+xml", compressible = true, binary = true, List("omdoc"))
+
+ lazy val `vnd.artsquare`: MediaType =
+ new MediaType("application", "vnd.artsquare", compressible = false, binary = true)
+
+ lazy val `vnd.obn`: MediaType =
+ new MediaType("application", "vnd.obn", compressible = false, binary = true)
+
+ lazy val `vnd.neurolanguage.nlu`: MediaType =
+ new MediaType("application", "vnd.neurolanguage.nlu", compressible = false, binary = true, List("nlu"))
+
+ lazy val `vnd.lotus-organizer`: MediaType =
+ new MediaType("application", "vnd.lotus-organizer", compressible = false, binary = true, List("org"))
+
+ lazy val `x-font-snf`: MediaType =
+ new MediaType("application", "x-font-snf", compressible = false, binary = true, List("snf"))
+
+ lazy val `vnd.syft+json`: MediaType =
+ new MediaType("application", "vnd.syft+json", compressible = true, binary = false)
+
+ lazy val `vnd.uoml+xml`: MediaType =
+ new MediaType("application", "vnd.uoml+xml", compressible = true, binary = true, List("uoml", "uo"))
+
+ lazy val `x-msschedule`: MediaType =
+ new MediaType("application", "x-msschedule", compressible = false, binary = true, List("scd"))
+
+ lazy val `vnd.afpc.cmoca-cmresource`: MediaType =
+ new MediaType("application", "vnd.afpc.cmoca-cmresource", compressible = false, binary = true)
+
+ lazy val `x-mscardfile`: MediaType =
+ new MediaType("application", "x-mscardfile", compressible = false, binary = true, List("crd"))
+
+ lazy val `vnd.stepmania.stepchart`: MediaType =
+ new MediaType("application", "vnd.stepmania.stepchart", compressible = false, binary = true, List("sm"))
+
+ lazy val `eshop`: MediaType =
+ new MediaType("application", "eshop", compressible = false, binary = true)
+
+ lazy val `emotionml+xml`: MediaType =
+ new MediaType("application", "emotionml+xml", compressible = true, binary = true, List("emotionml"))
+
+ lazy val `tve-trigger`: MediaType =
+ new MediaType("application", "tve-trigger", compressible = false, binary = true)
+
+ lazy val `vnd.exstream-package`: MediaType =
+ new MediaType("application", "vnd.exstream-package", compressible = false, binary = true)
+
+ lazy val `vnd.svd`: MediaType =
+ new MediaType("application", "vnd.svd", compressible = false, binary = true, List("svd"))
+
+ lazy val `vnd.openxmlformats-officedocument.drawingml.diagramdata+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.kde.kpresenter",
- Compressible,
- NotBinary,
- List("kpr", "kpt"),
+ "vnd.openxmlformats-officedocument.drawingml.diagramdata+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.kde.kspread`: MediaType =
- new MediaType("application", "vnd.kde.kspread", Compressible, NotBinary, List("ksp"))
- lazy val `vnd.kde.kword`: MediaType =
- new MediaType("application", "vnd.kde.kword", Compressible, NotBinary, List("kwd", "kwt"))
- lazy val `vnd.kenameaapp`: MediaType =
- new MediaType("application", "vnd.kenameaapp", Compressible, NotBinary, List("htke"))
- lazy val `vnd.kidspiration`: MediaType =
- new MediaType("application", "vnd.kidspiration", Compressible, NotBinary, List("kia"))
- lazy val `vnd.kinar`: MediaType =
- new MediaType("application", "vnd.kinar", Compressible, NotBinary, List("kne", "knp"))
- lazy val `vnd.koan`: MediaType = new MediaType(
+
+ lazy val `vnd.afpc.modca-formdef`: MediaType =
+ new MediaType("application", "vnd.afpc.modca-formdef", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.state-and-event-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.state-and-event-info+xml", compressible = true, binary = true)
+
+ lazy val `mbms-msk-response+xml`: MediaType =
+ new MediaType("application", "mbms-msk-response+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sealedmedia.softseal.html`: MediaType =
+ new MediaType("application", "vnd.sealedmedia.softseal.html", compressible = false, binary = true)
+
+ lazy val `vnd.groove-tool-message`: MediaType =
+ new MediaType("application", "vnd.groove-tool-message", compressible = false, binary = true, List("gtm"))
+
+ lazy val `vnd.ecip.rlp`: MediaType =
+ new MediaType("application", "vnd.ecip.rlp", compressible = false, binary = true)
+
+ lazy val `hl7v2+xml`: MediaType =
+ new MediaType("application", "hl7v2+xml", compressible = true, binary = true)
+
+ lazy val `vnd.afpc.modca-pagesegment`: MediaType =
+ new MediaType("application", "vnd.afpc.modca-pagesegment", compressible = false, binary = true)
+
+ lazy val `vnd.httphone`: MediaType =
+ new MediaType("application", "vnd.httphone", compressible = false, binary = true)
+
+ lazy val `vnd.smart.teacher`: MediaType =
+ new MediaType("application", "vnd.smart.teacher", compressible = false, binary = true, List("teacher"))
+
+ lazy val `vnd.oasis.opendocument.text-master`: MediaType =
+ new MediaType(
"application",
- "vnd.koan",
- Compressible,
- NotBinary,
- List("skp", "skd", "skt", "skm"),
+ "vnd.oasis.opendocument.text-master",
+ compressible = false,
+ binary = true,
+ List("odm"),
)
- lazy val `vnd.kodak-descriptor`: MediaType =
- new MediaType("application", "vnd.kodak-descriptor", Compressible, NotBinary, List("sse"))
- lazy val `vnd.las`: MediaType =
- new MediaType("application", "vnd.las", Compressible, NotBinary)
- lazy val `vnd.las.las+json`: MediaType =
- new MediaType("application", "vnd.las.las+json", Compressible, NotBinary)
- lazy val `vnd.las.las+xml`: MediaType =
- new MediaType("application", "vnd.las.las+xml", Compressible, NotBinary, List("lasxml"))
- lazy val `vnd.laszip`: MediaType =
- new MediaType("application", "vnd.laszip", Compressible, NotBinary)
- lazy val `vnd.leap+json`: MediaType =
- new MediaType("application", "vnd.leap+json", Compressible, NotBinary)
- lazy val `vnd.liberty-request+xml`: MediaType =
- new MediaType("application", "vnd.liberty-request+xml", Compressible, NotBinary)
- lazy val `vnd.llamagraphics.life-balance.desktop`: MediaType = new MediaType(
+
+ lazy val `mediaservercontrol+xml`: MediaType =
+ new MediaType("application", "mediaservercontrol+xml", compressible = true, binary = true, List("mscml"))
+
+ lazy val `ibe-key-request+xml`: MediaType =
+ new MediaType("application", "ibe-key-request+xml", compressible = true, binary = true)
+
+ lazy val `index.cmd`: MediaType =
+ new MediaType("application", "index.cmd", compressible = false, binary = true)
+
+ lazy val `dns+json`: MediaType =
+ new MediaType("application", "dns+json", compressible = true, binary = false)
+
+ lazy val `rsd+xml`: MediaType =
+ new MediaType("application", "rsd+xml", compressible = true, binary = true, List("rsd"))
+
+ lazy val `vnd.chemdraw+xml`: MediaType =
+ new MediaType("application", "vnd.chemdraw+xml", compressible = true, binary = true, List("cdxml"))
+
+ lazy val `mathml-content+xml`: MediaType =
+ new MediaType("application", "mathml-content+xml", compressible = true, binary = true)
+
+ lazy val `vnd.motorola.flexsuite.fis`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite.fis", compressible = false, binary = true)
+
+ lazy val `vnd.vcx`: MediaType =
+ new MediaType("application", "vnd.vcx", compressible = false, binary = true, List("vcx"))
+
+ lazy val `tm+json`: MediaType =
+ new MediaType("application", "tm+json", compressible = true, binary = false)
+
+ lazy val `vnd.frogans.ltf`: MediaType =
+ new MediaType("application", "vnd.frogans.ltf", compressible = false, binary = true, List("ltf"))
+
+ lazy val `pgp-signature`: MediaType =
+ new MediaType("application", "pgp-signature", compressible = false, binary = true, List("sig", "asc"))
+
+ lazy val `x-redhat-package-manager`: MediaType =
+ new MediaType("application", "x-redhat-package-manager", compressible = false, binary = true, List("rpm"))
+
+ lazy val `vnd.wap.wbxml`: MediaType =
+ new MediaType("application", "vnd.wap.wbxml", compressible = false, binary = true, List("wbxml"))
+
+ lazy val `oscore`: MediaType =
+ new MediaType("application", "oscore", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.spreadsheet-template`: MediaType =
+ new MediaType(
"application",
- "vnd.llamagraphics.life-balance.desktop",
- Compressible,
- NotBinary,
- List("lbd"),
+ "vnd.oasis.opendocument.spreadsheet-template",
+ compressible = false,
+ binary = true,
+ List("ots"),
)
- lazy val `vnd.llamagraphics.life-balance.exchange+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.maxmind.maxmind-db`: MediaType =
+ new MediaType("application", "vnd.maxmind.maxmind-db", compressible = false, binary = true)
+
+ lazy val `fastsoap`: MediaType =
+ new MediaType("application", "fastsoap", compressible = false, binary = true)
+
+ lazy val `vnd.llamagraphics.life-balance.exchange+xml`: MediaType =
+ new MediaType(
"application",
"vnd.llamagraphics.life-balance.exchange+xml",
- Compressible,
- NotBinary,
+ compressible = true,
+ binary = true,
List("lbe"),
)
- lazy val `vnd.logipipe.circuit+zip`: MediaType =
- new MediaType("application", "vnd.logipipe.circuit+zip", Uncompressible, NotBinary)
- lazy val `vnd.loom`: MediaType =
- new MediaType("application", "vnd.loom", Compressible, NotBinary)
- lazy val `vnd.lotus-1-2-3`: MediaType =
- new MediaType("application", "vnd.lotus-1-2-3", Compressible, NotBinary, List("123"))
- lazy val `vnd.lotus-approach`: MediaType =
- new MediaType("application", "vnd.lotus-approach", Compressible, NotBinary, List("apr"))
- lazy val `vnd.lotus-freelance`: MediaType =
- new MediaType("application", "vnd.lotus-freelance", Compressible, NotBinary, List("pre"))
- lazy val `vnd.lotus-notes`: MediaType =
- new MediaType("application", "vnd.lotus-notes", Compressible, NotBinary, List("nsf"))
- lazy val `vnd.lotus-organizer`: MediaType =
- new MediaType("application", "vnd.lotus-organizer", Compressible, NotBinary, List("org"))
- lazy val `vnd.lotus-screencam`: MediaType =
- new MediaType("application", "vnd.lotus-screencam", Compressible, NotBinary, List("scm"))
- lazy val `vnd.lotus-wordpro`: MediaType =
- new MediaType("application", "vnd.lotus-wordpro", Compressible, NotBinary, List("lwp"))
- lazy val `vnd.macports.portpkg`: MediaType = new MediaType(
+
+ lazy val `mads+xml`: MediaType =
+ new MediaType("application", "mads+xml", compressible = true, binary = true, List("mads"))
+
+ lazy val `vnd.triscape.mxs`: MediaType =
+ new MediaType("application", "vnd.triscape.mxs", compressible = false, binary = true, List("mxs"))
+
+ lazy val `x-ace-compressed`: MediaType =
+ new MediaType("application", "x-ace-compressed", compressible = false, binary = true, List("ace"))
+
+ lazy val `x-iwork-keynote-sffkey`: MediaType =
+ new MediaType("application", "x-iwork-keynote-sffkey", compressible = false, binary = true, List("key"))
+
+ lazy val `sarif-external-properties+json`: MediaType =
+ new MediaType("application", "sarif-external-properties+json", compressible = true, binary = false)
+
+ lazy val `vnd.sss-cod`: MediaType =
+ new MediaType("application", "vnd.sss-cod", compressible = false, binary = true)
+
+ lazy val `mrb-publish+xml`: MediaType =
+ new MediaType("application", "mrb-publish+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oipf.pae.gem`: MediaType =
+ new MediaType("application", "vnd.oipf.pae.gem", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.macports.portpkg",
- Compressible,
- NotBinary,
- List("portpkg"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.mapbox-vector-tile`: MediaType =
- new MediaType("application", "vnd.mapbox-vector-tile", Compressible, NotBinary, List("mvt"))
- lazy val `vnd.marlin.drm.actiontoken+xml`: MediaType =
- new MediaType("application", "vnd.marlin.drm.actiontoken+xml", Compressible, NotBinary)
- lazy val `vnd.marlin.drm.conftoken+xml`: MediaType =
- new MediaType("application", "vnd.marlin.drm.conftoken+xml", Compressible, NotBinary)
- lazy val `vnd.marlin.drm.license+xml`: MediaType =
- new MediaType("application", "vnd.marlin.drm.license+xml", Compressible, NotBinary)
- lazy val `vnd.marlin.drm.mdcf`: MediaType =
- new MediaType("application", "vnd.marlin.drm.mdcf", Compressible, NotBinary)
- lazy val `vnd.mason+json`: MediaType =
- new MediaType("application", "vnd.mason+json", Compressible, NotBinary)
- lazy val `vnd.maxmind.maxmind-db`: MediaType =
- new MediaType("application", "vnd.maxmind.maxmind-db", Compressible, NotBinary)
- lazy val `vnd.mcd`: MediaType =
- new MediaType("application", "vnd.mcd", Compressible, NotBinary, List("mcd"))
- lazy val `vnd.medcalcdata`: MediaType =
- new MediaType("application", "vnd.medcalcdata", Compressible, NotBinary, List("mc1"))
- lazy val `vnd.mediastation.cdkey`: MediaType = new MediaType(
+
+ lazy val `xop+xml`: MediaType =
+ new MediaType("application", "xop+xml", compressible = true, binary = true, List("xop"))
+
+ lazy val `vnd.intu.qbo`: MediaType =
+ new MediaType("application", "vnd.intu.qbo", compressible = false, binary = true, List("qbo"))
+
+ lazy val `set-payment`: MediaType =
+ new MediaType("application", "set-payment", compressible = false, binary = true)
+
+ lazy val `appinstaller`: MediaType =
+ new MediaType("application", "appinstaller", compressible = false, binary = true, List("appinstaller"))
+
+ lazy val `vnd.biopax.rdf+xml`: MediaType =
+ new MediaType("application", "vnd.biopax.rdf+xml", compressible = true, binary = true)
+
+ lazy val `vnd.uplanet.signal`: MediaType =
+ new MediaType("application", "vnd.uplanet.signal", compressible = false, binary = true)
+
+ lazy val `vnd.macports.portpkg`: MediaType =
+ new MediaType("application", "vnd.macports.portpkg", compressible = false, binary = true, List("portpkg"))
+
+ lazy val `activity+json`: MediaType =
+ new MediaType("application", "activity+json", compressible = true, binary = false)
+
+ lazy val `whoispp-query`: MediaType =
+ new MediaType("application", "whoispp-query", compressible = false, binary = true)
+
+ lazy val `auth-policy+xml`: MediaType =
+ new MediaType("application", "auth-policy+xml", compressible = true, binary = true)
+
+ lazy val `x-sea`: MediaType =
+ new MediaType("application", "x-sea", compressible = false, binary = true, List("sea"))
+
+ lazy val `vnd.semd`: MediaType =
+ new MediaType("application", "vnd.semd", compressible = false, binary = true, List("semd"))
+
+ lazy val `vnd.google-apps.spreadsheet`: MediaType =
+ new MediaType("application", "vnd.google-apps.spreadsheet", compressible = false, binary = true, List("gsheet"))
+
+ lazy val `x-virtualbox-vmdk`: MediaType =
+ new MediaType("application", "x-virtualbox-vmdk", compressible = true, binary = true, List("vmdk"))
+
+ lazy val `vnd.aristanetworks.swi`: MediaType =
+ new MediaType("application", "vnd.aristanetworks.swi", compressible = false, binary = true, List("swi"))
+
+ lazy val `xcap-el+xml`: MediaType =
+ new MediaType("application", "xcap-el+xml", compressible = true, binary = true, List("xel"))
+
+ lazy val `emma+xml`: MediaType =
+ new MediaType("application", "emma+xml", compressible = true, binary = true, List("emma"))
+
+ lazy val `cdni`: MediaType =
+ new MediaType("application", "cdni", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.table+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.mediastation.cdkey",
- Compressible,
- NotBinary,
- List("cdkey"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.table+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.meridian-slingshot`: MediaType =
- new MediaType("application", "vnd.meridian-slingshot", Compressible, NotBinary)
- lazy val `vnd.mfer`: MediaType =
- new MediaType("application", "vnd.mfer", Compressible, NotBinary, List("mwf"))
- lazy val `vnd.mfmp`: MediaType =
- new MediaType("application", "vnd.mfmp", Compressible, NotBinary, List("mfm"))
- lazy val `vnd.micro+json`: MediaType =
- new MediaType("application", "vnd.micro+json", Compressible, NotBinary)
- lazy val `vnd.micrografx.flo`: MediaType =
- new MediaType("application", "vnd.micrografx.flo", Compressible, NotBinary, List("flo"))
- lazy val `vnd.micrografx.igx`: MediaType =
- new MediaType("application", "vnd.micrografx.igx", Compressible, NotBinary, List("igx"))
- lazy val `vnd.microsoft.portable-executable`: MediaType =
- new MediaType("application", "vnd.microsoft.portable-executable", Compressible, NotBinary)
- lazy val `vnd.microsoft.windows.thumbnail-cache`: MediaType = new MediaType(
+
+ lazy val `x-doom`: MediaType =
+ new MediaType("application", "x-doom", compressible = false, binary = true, List("wad"))
+
+ lazy val `vnd.etsi.sci+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.sci+xml", compressible = true, binary = true)
+
+ lazy val `swid+cbor`: MediaType =
+ new MediaType("application", "swid+cbor", compressible = false, binary = true)
+
+ lazy val `font-tdpfr`: MediaType =
+ new MediaType("application", "font-tdpfr", compressible = false, binary = true, List("pfr"))
+
+ lazy val `vnd.gentics.grd+json`: MediaType =
+ new MediaType("application", "vnd.gentics.grd+json", compressible = true, binary = false)
+
+ lazy val `x-ustar`: MediaType =
+ new MediaType("application", "x-ustar", compressible = false, binary = true, List("ustar"))
+
+ lazy val `urc-ressheet+xml`: MediaType =
+ new MediaType("application", "urc-ressheet+xml", compressible = true, binary = true, List("rsheet"))
+
+ lazy val `vnd.dtg.local`: MediaType =
+ new MediaType("application", "vnd.dtg.local", compressible = false, binary = true)
+
+ lazy val `http`: MediaType =
+ new MediaType("application", "http", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.dvbisl+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.dvbisl+xml", compressible = true, binary = true)
+
+ lazy val `vnd.cryptii.pipe+json`: MediaType =
+ new MediaType("application", "vnd.cryptii.pipe+json", compressible = true, binary = false)
+
+ lazy val `vnd.quark.quarkxpress`: MediaType =
+ new MediaType(
"application",
- "vnd.microsoft.windows.thumbnail-cache",
- Compressible,
- NotBinary,
+ "vnd.quark.quarkxpress",
+ compressible = false,
+ binary = true,
+ List("qxd", "qxt", "qwd", "qwt", "qxl", "qxb"),
)
- lazy val `vnd.miele+json`: MediaType =
- new MediaType("application", "vnd.miele+json", Compressible, NotBinary)
- lazy val `vnd.mif`: MediaType =
- new MediaType("application", "vnd.mif", Compressible, NotBinary, List("mif"))
- lazy val `vnd.minisoft-hp3000-save`: MediaType =
- new MediaType("application", "vnd.minisoft-hp3000-save", Compressible, NotBinary)
- lazy val `vnd.mitsubishi.misty-guard.trustweb`: MediaType =
- new MediaType("application", "vnd.mitsubishi.misty-guard.trustweb", Compressible, NotBinary)
- lazy val `vnd.mobius.daf`: MediaType =
- new MediaType("application", "vnd.mobius.daf", Compressible, NotBinary, List("daf"))
- lazy val `vnd.mobius.dis`: MediaType =
- new MediaType("application", "vnd.mobius.dis", Compressible, NotBinary, List("dis"))
- lazy val `vnd.mobius.mbk`: MediaType =
- new MediaType("application", "vnd.mobius.mbk", Compressible, NotBinary, List("mbk"))
- lazy val `vnd.mobius.mqy`: MediaType =
- new MediaType("application", "vnd.mobius.mqy", Compressible, NotBinary, List("mqy"))
- lazy val `vnd.mobius.msl`: MediaType =
- new MediaType("application", "vnd.mobius.msl", Compressible, NotBinary, List("msl"))
- lazy val `vnd.mobius.plc`: MediaType =
- new MediaType("application", "vnd.mobius.plc", Compressible, NotBinary, List("plc"))
- lazy val `vnd.mobius.txf`: MediaType =
- new MediaType("application", "vnd.mobius.txf", Compressible, NotBinary, List("txf"))
- lazy val `vnd.mophun.application`: MediaType =
- new MediaType("application", "vnd.mophun.application", Compressible, NotBinary, List("mpn"))
- lazy val `vnd.mophun.certificate`: MediaType =
- new MediaType("application", "vnd.mophun.certificate", Compressible, NotBinary, List("mpc"))
- lazy val `vnd.motorola.flexsuite`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite", Compressible, NotBinary)
- lazy val `vnd.motorola.flexsuite.adsi`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite.adsi", Compressible, NotBinary)
- lazy val `vnd.motorola.flexsuite.fis`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite.fis", Compressible, NotBinary)
- lazy val `vnd.motorola.flexsuite.gotap`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite.gotap", Compressible, NotBinary)
- lazy val `vnd.motorola.flexsuite.kmr`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite.kmr", Compressible, NotBinary)
- lazy val `vnd.motorola.flexsuite.ttc`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite.ttc", Compressible, NotBinary)
- lazy val `vnd.motorola.flexsuite.wem`: MediaType =
- new MediaType("application", "vnd.motorola.flexsuite.wem", Compressible, NotBinary)
- lazy val `vnd.motorola.iprm`: MediaType =
- new MediaType("application", "vnd.motorola.iprm", Compressible, NotBinary)
- lazy val `vnd.mozilla.xul+xml`: MediaType =
- new MediaType("application", "vnd.mozilla.xul+xml", Compressible, NotBinary, List("xul"))
- lazy val `vnd.ms-3mfdocument`: MediaType =
- new MediaType("application", "vnd.ms-3mfdocument", Compressible, NotBinary)
- lazy val `vnd.ms-artgalry`: MediaType =
- new MediaType("application", "vnd.ms-artgalry", Compressible, NotBinary, List("cil"))
- lazy val `vnd.ms-asf`: MediaType =
- new MediaType("application", "vnd.ms-asf", Compressible, NotBinary)
- lazy val `vnd.ms-cab-compressed`: MediaType =
- new MediaType("application", "vnd.ms-cab-compressed", Compressible, NotBinary, List("cab"))
- lazy val `vnd.ms-color.iccprofile`: MediaType =
- new MediaType("application", "vnd.ms-color.iccprofile", Compressible, NotBinary)
- lazy val `vnd.ms-excel`: MediaType = new MediaType(
+
+ lazy val `vnd.kde.kontour`: MediaType =
+ new MediaType("application", "vnd.kde.kontour", compressible = false, binary = true, List("kon"))
+
+ lazy val `vnd.igloader`: MediaType =
+ new MediaType("application", "vnd.igloader", compressible = false, binary = true, List("igl"))
+
+ lazy val `vnd.yamaha.smaf-phrase`: MediaType =
+ new MediaType("application", "vnd.yamaha.smaf-phrase", compressible = false, binary = true, List("spf"))
+
+ lazy val `vnd.drive+json`: MediaType =
+ new MediaType("application", "vnd.drive+json", compressible = true, binary = false)
+
+ lazy val `jsonml+json`: MediaType =
+ new MediaType("application", "jsonml+json", compressible = true, binary = false, List("jsonml"))
+
+ lazy val `oblivious-dns-message`: MediaType =
+ new MediaType("application", "oblivious-dns-message", compressible = false, binary = true)
+
+ lazy val `vnd.hyper-item+json`: MediaType =
+ new MediaType("application", "vnd.hyper-item+json", compressible = true, binary = false)
+
+ lazy val `x-virtualbox-vdi`: MediaType =
+ new MediaType("application", "x-virtualbox-vdi", compressible = true, binary = true, List("vdi"))
+
+ lazy val `vcard+xml`: MediaType =
+ new MediaType("application", "vcard+xml", compressible = true, binary = true)
+
+ lazy val `vnd.commonspace`: MediaType =
+ new MediaType("application", "vnd.commonspace", compressible = false, binary = true, List("csp"))
+
+ lazy val `vnd.shana.informed.interchange`: MediaType =
+ new MediaType("application", "vnd.shana.informed.interchange", compressible = false, binary = true, List("iif"))
+
+ lazy val `x-virtualbox-ovf`: MediaType =
+ new MediaType("application", "x-virtualbox-ovf", compressible = true, binary = true, List("ovf"))
+
+ lazy val `vnd.ms-powerpoint.slide.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-excel",
- Uncompressible,
- NotBinary,
- List("xls", "xlm", "xla", "xlc", "xlt", "xlw"),
+ "vnd.ms-powerpoint.slide.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("sldm"),
)
- lazy val `vnd.ms-excel.addin.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.tmobile-livetv`: MediaType =
+ new MediaType("application", "vnd.tmobile-livetv", compressible = false, binary = true, List("tmo"))
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-excel.addin.macroenabled.12",
- Compressible,
- NotBinary,
- List("xlam"),
- )
- lazy val `vnd.ms-excel.sheet.binary.macroenabled.12`: MediaType = new MediaType(
- "application",
- "vnd.ms-excel.sheet.binary.macroenabled.12",
- Compressible,
- NotBinary,
- List("xlsb"),
- )
- lazy val `vnd.ms-excel.sheet.macroenabled.12`: MediaType = new MediaType(
- "application",
- "vnd.ms-excel.sheet.macroenabled.12",
- Compressible,
- NotBinary,
- List("xlsm"),
- )
- lazy val `vnd.ms-excel.template.macroenabled.12`: MediaType = new MediaType(
- "application",
- "vnd.ms-excel.template.macroenabled.12",
- Compressible,
- NotBinary,
- List("xltm"),
- )
- lazy val `vnd.ms-fontobject`: MediaType =
- new MediaType("application", "vnd.ms-fontobject", Compressible, Binary, List("eot"))
- lazy val `vnd.ms-htmlhelp`: MediaType =
- new MediaType("application", "vnd.ms-htmlhelp", Compressible, NotBinary, List("chm"))
- lazy val `vnd.ms-ims`: MediaType =
- new MediaType("application", "vnd.ms-ims", Compressible, NotBinary, List("ims"))
- lazy val `vnd.ms-lrm`: MediaType =
- new MediaType("application", "vnd.ms-lrm", Compressible, NotBinary, List("lrm"))
- lazy val `vnd.ms-office.activex+xml`: MediaType =
- new MediaType("application", "vnd.ms-office.activex+xml", Compressible, NotBinary)
- lazy val `vnd.ms-officetheme`: MediaType =
- new MediaType("application", "vnd.ms-officetheme", Compressible, NotBinary, List("thmx"))
- lazy val `vnd.ms-opentype`: MediaType =
- new MediaType("application", "vnd.ms-opentype", Compressible, NotBinary)
- lazy val `vnd.ms-outlook`: MediaType =
- new MediaType("application", "vnd.ms-outlook", Uncompressible, NotBinary, List("msg"))
- lazy val `vnd.ms-package.obfuscated-opentype`: MediaType =
- new MediaType("application", "vnd.ms-package.obfuscated-opentype", Compressible, NotBinary)
- lazy val `vnd.ms-pki.seccat`: MediaType =
- new MediaType("application", "vnd.ms-pki.seccat", Compressible, NotBinary, List("cat"))
- lazy val `vnd.ms-pki.stl`: MediaType =
- new MediaType("application", "vnd.ms-pki.stl", Compressible, NotBinary, List("stl"))
- lazy val `vnd.ms-playready.initiator+xml`: MediaType =
- new MediaType("application", "vnd.ms-playready.initiator+xml", Compressible, NotBinary)
- lazy val `vnd.ms-powerpoint`: MediaType = new MediaType(
- "application",
- "vnd.ms-powerpoint",
- Uncompressible,
- NotBinary,
- List("ppt", "pps", "pot"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ms-powerpoint.addin.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.mobius.daf`: MediaType =
+ new MediaType("application", "vnd.mobius.daf", compressible = false, binary = true, List("daf"))
+
+ lazy val `fhir+json`: MediaType =
+ new MediaType("application", "fhir+json", compressible = true, binary = false)
+
+ lazy val `vnd.epson.ssf`: MediaType =
+ new MediaType("application", "vnd.epson.ssf", compressible = false, binary = true, List("ssf"))
+
+ lazy val `dicom`: MediaType =
+ new MediaType("application", "dicom", compressible = false, binary = true)
+
+ lazy val `x-cbr`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-powerpoint.addin.macroenabled.12",
- Compressible,
- NotBinary,
- List("ppam"),
+ "x-cbr",
+ compressible = false,
+ binary = true,
+ List("cbr", "cba", "cbt", "cbz", "cb7"),
)
- lazy val `vnd.ms-powerpoint.presentation.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.nokia.conml+wbxml`: MediaType =
+ new MediaType("application", "vnd.nokia.conml+wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.wv.ssp+xml`: MediaType =
+ new MediaType("application", "vnd.wv.ssp+xml", compressible = true, binary = true)
+
+ lazy val `vnd.etsi.tsl.der`: MediaType =
+ new MediaType("application", "vnd.etsi.tsl.der", compressible = false, binary = true)
+
+ lazy val `prs.hpub+zip`: MediaType =
+ new MediaType("application", "prs.hpub+zip", compressible = false, binary = true)
+
+ lazy val `vnd.japannet-directory-service`: MediaType =
+ new MediaType("application", "vnd.japannet-directory-service", compressible = false, binary = true)
+
+ lazy val `sarif+json`: MediaType =
+ new MediaType("application", "sarif+json", compressible = true, binary = false)
+
+ lazy val `vnd.siren+json`: MediaType =
+ new MediaType("application", "vnd.siren+json", compressible = true, binary = false)
+
+ lazy val `gxf`: MediaType =
+ new MediaType("application", "gxf", compressible = false, binary = true, List("gxf"))
+
+ lazy val `vnd.openstreetmap.data+xml`: MediaType =
+ new MediaType("application", "vnd.openstreetmap.data+xml", compressible = true, binary = true, List("osm"))
+
+ lazy val `vnd.amundsen.maze+xml`: MediaType =
+ new MediaType("application", "vnd.amundsen.maze+xml", compressible = true, binary = true)
+
+ lazy val `x-eva`: MediaType =
+ new MediaType("application", "x-eva", compressible = false, binary = true, List("eva"))
+
+ lazy val `vnd.hyperdrive+json`: MediaType =
+ new MediaType("application", "vnd.hyperdrive+json", compressible = true, binary = false)
+
+ lazy val `n-triples`: MediaType =
+ new MediaType("application", "n-triples", compressible = false, binary = true, List("nt"))
+
+ lazy val `vnd.clonk.c4group`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-powerpoint.presentation.macroenabled.12",
- Compressible,
- NotBinary,
- List("pptm"),
+ "vnd.clonk.c4group",
+ compressible = false,
+ binary = true,
+ List("c4g", "c4d", "c4f", "c4p", "c4u"),
)
- lazy val `vnd.ms-powerpoint.slide.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.stepmania.package`: MediaType =
+ new MediaType("application", "vnd.stepmania.package", compressible = false, binary = true, List("smzip"))
+
+ lazy val `vnd.radisys.msml-audit-conf+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-audit-conf+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-asf`: MediaType =
+ new MediaType("application", "vnd.ms-asf", compressible = false, binary = true)
+
+ lazy val `vnd.collabio.xodocuments.document`: MediaType =
+ new MediaType("application", "vnd.collabio.xodocuments.document", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcvideo-service-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-service-config+xml", compressible = true, binary = true)
+
+ lazy val `tamp-status-response`: MediaType =
+ new MediaType("application", "tamp-status-response", compressible = false, binary = true)
+
+ lazy val `alto-updatestreamcontrol+json`: MediaType =
+ new MediaType("application", "alto-updatestreamcontrol+json", compressible = true, binary = false)
+
+ lazy val `vnd.msa-disk-image`: MediaType =
+ new MediaType("application", "vnd.msa-disk-image", compressible = false, binary = true)
+
+ lazy val `x-cfs-compressed`: MediaType =
+ new MediaType("application", "x-cfs-compressed", compressible = false, binary = true, List("cfs"))
+
+ lazy val `vnd.oma.cab-address-book+xml`: MediaType =
+ new MediaType("application", "vnd.oma.cab-address-book+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-powerpoint.slide.macroenabled.12",
- Compressible,
- NotBinary,
- List("sldm"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ms-powerpoint.slideshow.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `xfdf`: MediaType =
+ new MediaType("application", "xfdf", compressible = false, binary = true, List("xfdf"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-powerpoint.slideshow.macroenabled.12",
- Compressible,
- NotBinary,
- List("ppsm"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ms-powerpoint.template.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.iccprofile`: MediaType =
+ new MediaType("application", "vnd.iccprofile", compressible = false, binary = true, List("icc", "icm"))
+
+ lazy val `rpki-updown`: MediaType =
+ new MediaType("application", "rpki-updown", compressible = false, binary = true)
+
+ lazy val `tamp-community-update`: MediaType =
+ new MediaType("application", "tamp-community-update", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.mobile.2`: MediaType =
+ new MediaType("application", "vnd.dolby.mobile.2", compressible = false, binary = true)
+
+ lazy val `vnd.nearst.inv+json`: MediaType =
+ new MediaType("application", "vnd.nearst.inv+json", compressible = true, binary = false)
+
+ lazy val `lxf`: MediaType =
+ new MediaType("application", "lxf", compressible = false, binary = true)
+
+ lazy val `vnd.wordperfect`: MediaType =
+ new MediaType("application", "vnd.wordperfect", compressible = false, binary = true, List("wpd"))
+
+ lazy val `epp+xml`: MediaType =
+ new MediaType("application", "epp+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-package.digital-signature-xmlsignature+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-powerpoint.template.macroenabled.12",
- Compressible,
- NotBinary,
- List("potm"),
- )
- lazy val `vnd.ms-printdevicecapabilities+xml`: MediaType =
- new MediaType("application", "vnd.ms-printdevicecapabilities+xml", Compressible, NotBinary)
- lazy val `vnd.ms-printing.printticket+xml`: MediaType =
- new MediaType("application", "vnd.ms-printing.printticket+xml", Compressible, NotBinary)
- lazy val `vnd.ms-printschematicket+xml`: MediaType =
- new MediaType("application", "vnd.ms-printschematicket+xml", Compressible, NotBinary)
- lazy val `vnd.ms-project`: MediaType =
- new MediaType("application", "vnd.ms-project", Compressible, NotBinary, List("mpp", "mpt"))
- lazy val `vnd.ms-tnef`: MediaType =
- new MediaType("application", "vnd.ms-tnef", Compressible, NotBinary)
- lazy val `vnd.ms-windows.devicepairing`: MediaType =
- new MediaType("application", "vnd.ms-windows.devicepairing", Compressible, NotBinary)
- lazy val `vnd.ms-windows.nwprinting.oob`: MediaType =
- new MediaType("application", "vnd.ms-windows.nwprinting.oob", Compressible, NotBinary)
- lazy val `vnd.ms-windows.printerpairing`: MediaType =
- new MediaType("application", "vnd.ms-windows.printerpairing", Compressible, NotBinary)
- lazy val `vnd.ms-windows.wsd.oob`: MediaType =
- new MediaType("application", "vnd.ms-windows.wsd.oob", Compressible, NotBinary)
- lazy val `vnd.ms-wmdrm.lic-chlg-req`: MediaType =
- new MediaType("application", "vnd.ms-wmdrm.lic-chlg-req", Compressible, NotBinary)
- lazy val part_1: List[MediaType] = List(
- `vnd.adobe.air-application-installer-package+zip`,
- `vnd.adobe.flash.movie`,
- `vnd.adobe.formscentral.fcdt`,
- `vnd.adobe.fxp`,
- `vnd.adobe.partial-upload`,
- `vnd.adobe.xdp+xml`,
- `vnd.adobe.xfdf`,
- `vnd.aether.imp`,
- `vnd.afpc.afplinedata`,
- `vnd.afpc.afplinedata-pagedef`,
- `vnd.afpc.cmoca-cmresource`,
- `vnd.afpc.foca-charset`,
- `vnd.afpc.foca-codedfont`,
- `vnd.afpc.foca-codepage`,
- `vnd.afpc.modca`,
- `vnd.afpc.modca-cmtable`,
- `vnd.afpc.modca-formdef`,
- `vnd.afpc.modca-mediummap`,
- `vnd.afpc.modca-objectcontainer`,
- `vnd.afpc.modca-overlay`,
- `vnd.afpc.modca-pagesegment`,
- `vnd.ah-barcode`,
- `vnd.ahead.space`,
- `vnd.airzip.filesecure.azf`,
- `vnd.airzip.filesecure.azs`,
- `vnd.amadeus+json`,
- `vnd.amazon.ebook`,
- `vnd.amazon.mobi8-ebook`,
- `vnd.americandynamics.acc`,
- `vnd.amiga.ami`,
- `vnd.amundsen.maze+xml`,
- `vnd.android.ota`,
- `vnd.android.package-archive`,
- `vnd.anki`,
- `vnd.anser-web-certificate-issue-initiation`,
- `vnd.anser-web-funds-transfer-initiation`,
- `vnd.antix.game-component`,
- `vnd.apache.thrift.binary`,
- `vnd.apache.thrift.compact`,
- `vnd.apache.thrift.json`,
- `vnd.api+json`,
- `vnd.aplextor.warrp+json`,
- `vnd.apothekende.reservation+json`,
- `vnd.apple.installer+xml`,
- `vnd.apple.keynote`,
- `vnd.apple.mpegurl`,
- `vnd.apple.numbers`,
- `vnd.apple.pages`,
- `vnd.apple.pkpass`,
- `vnd.arastra.swi`,
- `vnd.aristanetworks.swi`,
- `vnd.artisan+json`,
- `vnd.artsquare`,
- `vnd.astraea-software.iota`,
- `vnd.audiograph`,
- `vnd.autopackage`,
- `vnd.avalon+json`,
- `vnd.avistar+xml`,
- `vnd.balsamiq.bmml+xml`,
- `vnd.balsamiq.bmpr`,
- `vnd.banana-accounting`,
- `vnd.bbf.usp.error`,
- `vnd.bbf.usp.msg`,
- `vnd.bbf.usp.msg+json`,
- `vnd.bekitzur-stech+json`,
- `vnd.bint.med-content`,
- `vnd.biopax.rdf+xml`,
- `vnd.blink-idb-value-wrapper`,
- `vnd.blueice.multipass`,
- `vnd.bluetooth.ep.oob`,
- `vnd.bluetooth.le.oob`,
- `vnd.bmi`,
- `vnd.bpf`,
- `vnd.bpf3`,
- `vnd.businessobjects`,
- `vnd.byu.uapi+json`,
- `vnd.cab-jscript`,
- `vnd.canon-cpdl`,
- `vnd.canon-lips`,
- `vnd.capasystems-pg+json`,
- `vnd.cendio.thinlinc.clientconf`,
- `vnd.century-systems.tcp_stream`,
- `vnd.chemdraw+xml`,
- `vnd.chess-pgn`,
- `vnd.chipnuts.karaoke-mmd`,
- `vnd.ciedi`,
- `vnd.cinderella`,
- `vnd.cirpack.isdn-ext`,
- `vnd.citationstyles.style+xml`,
- `vnd.claymore`,
- `vnd.cloanto.rp9`,
- `vnd.clonk.c4group`,
- `vnd.cluetrust.cartomobile-config`,
- `vnd.cluetrust.cartomobile-config-pkg`,
- `vnd.coffeescript`,
- `vnd.collabio.xodocuments.document`,
- `vnd.collabio.xodocuments.document-template`,
- `vnd.collabio.xodocuments.presentation`,
- `vnd.collabio.xodocuments.presentation-template`,
- `vnd.collabio.xodocuments.spreadsheet`,
- `vnd.collabio.xodocuments.spreadsheet-template`,
- `vnd.collection+json`,
- `vnd.collection.doc+json`,
- `vnd.collection.next+json`,
- `vnd.comicbook+zip`,
- `vnd.comicbook-rar`,
- `vnd.commerce-battelle`,
- `vnd.commonspace`,
- `vnd.contact.cmsg`,
- `vnd.coreos.ignition+json`,
- `vnd.cosmocaller`,
- `vnd.crick.clicker`,
- `vnd.crick.clicker.keyboard`,
- `vnd.crick.clicker.palette`,
- `vnd.crick.clicker.template`,
- `vnd.crick.clicker.wordbank`,
- `vnd.criticaltools.wbs+xml`,
- `vnd.cryptii.pipe+json`,
- `vnd.crypto-shade-file`,
- `vnd.cryptomator.encrypted`,
- `vnd.cryptomator.vault`,
- `vnd.ctc-posml`,
- `vnd.ctct.ws+xml`,
- `vnd.cups-pdf`,
- `vnd.cups-postscript`,
- `vnd.cups-ppd`,
- `vnd.cups-raster`,
- `vnd.cups-raw`,
- `vnd.curl`,
- `vnd.curl.car`,
- `vnd.curl.pcurl`,
- `vnd.cyan.dean.root+xml`,
- `vnd.cybank`,
- `vnd.cyclonedx+json`,
- `vnd.cyclonedx+xml`,
- `vnd.d2l.coursepackage1p0+zip`,
- `vnd.d3m-dataset`,
- `vnd.d3m-problem`,
- `vnd.dart`,
- `vnd.data-vision.rdz`,
- `vnd.datapackage+json`,
- `vnd.dataresource+json`,
- `vnd.dbf`,
- `vnd.debian.binary-package`,
- `vnd.dece.data`,
- `vnd.dece.ttml+xml`,
- `vnd.dece.unspecified`,
- `vnd.dece.zip`,
- `vnd.denovo.fcselayout-link`,
- `vnd.desmume.movie`,
- `vnd.dir-bi.plate-dl-nosuffix`,
- `vnd.dm.delegation+xml`,
- `vnd.dna`,
- `vnd.document+json`,
- `vnd.dolby.mlp`,
- `vnd.dolby.mobile.1`,
- `vnd.dolby.mobile.2`,
- `vnd.doremir.scorecloud-binary-document`,
- `vnd.dpgraph`,
- `vnd.dreamfactory`,
- `vnd.drive+json`,
- `vnd.ds-keypoint`,
- `vnd.dtg.local`,
- `vnd.dtg.local.flash`,
- `vnd.dtg.local.html`,
- `vnd.dvb.ait`,
- `vnd.dvb.dvbisl+xml`,
- `vnd.dvb.dvbj`,
- `vnd.dvb.esgcontainer`,
- `vnd.dvb.ipdcdftnotifaccess`,
- `vnd.dvb.ipdcesgaccess`,
- `vnd.dvb.ipdcesgaccess2`,
- `vnd.dvb.ipdcesgpdd`,
- `vnd.dvb.ipdcroaming`,
- `vnd.dvb.iptv.alfec-base`,
- `vnd.dvb.iptv.alfec-enhancement`,
- `vnd.dvb.notif-aggregate-root+xml`,
- `vnd.dvb.notif-container+xml`,
- `vnd.dvb.notif-generic+xml`,
- `vnd.dvb.notif-ia-msglist+xml`,
- `vnd.dvb.notif-ia-registration-request+xml`,
- `vnd.dvb.notif-ia-registration-response+xml`,
- `vnd.dvb.notif-init+xml`,
- `vnd.dvb.pfr`,
- `vnd.dvb.service`,
- `vnd.dxr`,
- `vnd.dynageo`,
- `vnd.dzr`,
- `vnd.easykaraoke.cdgdownload`,
- `vnd.ecdis-update`,
- `vnd.ecip.rlp`,
- `vnd.ecowin.chart`,
- `vnd.ecowin.filerequest`,
- `vnd.ecowin.fileupdate`,
- `vnd.ecowin.series`,
- `vnd.ecowin.seriesrequest`,
- `vnd.ecowin.seriesupdate`,
- `vnd.efi.img`,
- `vnd.efi.iso`,
- `vnd.emclient.accessrequest+xml`,
- `vnd.enliven`,
- `vnd.enphase.envoy`,
- `vnd.eprints.data+xml`,
- `vnd.epson.esf`,
- `vnd.epson.msf`,
- `vnd.epson.quickanime`,
- `vnd.epson.salt`,
- `vnd.epson.ssf`,
- `vnd.ericsson.quickcall`,
- `vnd.espass-espass+zip`,
- `vnd.eszigno3+xml`,
- `vnd.etsi.aoc+xml`,
- `vnd.etsi.asic-e+zip`,
- `vnd.etsi.asic-s+zip`,
- `vnd.etsi.cug+xml`,
- `vnd.etsi.iptvcommand+xml`,
- `vnd.etsi.iptvdiscovery+xml`,
- `vnd.etsi.iptvprofile+xml`,
- `vnd.etsi.iptvsad-bc+xml`,
- `vnd.etsi.iptvsad-cod+xml`,
- `vnd.etsi.iptvsad-npvr+xml`,
- `vnd.etsi.iptvservice+xml`,
- `vnd.etsi.iptvsync+xml`,
- `vnd.etsi.iptvueprofile+xml`,
- `vnd.etsi.mcid+xml`,
- `vnd.etsi.mheg5`,
- `vnd.etsi.overload-control-policy-dataset+xml`,
- `vnd.etsi.pstn+xml`,
- `vnd.etsi.sci+xml`,
- `vnd.etsi.simservs+xml`,
- `vnd.etsi.timestamp-token`,
- `vnd.etsi.tsl+xml`,
- `vnd.etsi.tsl.der`,
- `vnd.eudora.data`,
- `vnd.evolv.ecig.profile`,
- `vnd.evolv.ecig.settings`,
- `vnd.evolv.ecig.theme`,
- `vnd.exstream-empower+zip`,
- `vnd.exstream-package`,
- `vnd.ezpix-album`,
- `vnd.ezpix-package`,
- `vnd.f-secure.mobile`,
- `vnd.fastcopy-disk-image`,
- `vnd.fdf`,
- `vnd.fdsn.mseed`,
- `vnd.fdsn.seed`,
- `vnd.ffsns`,
- `vnd.ficlab.flb+zip`,
- `vnd.filmit.zfc`,
- `vnd.fints`,
- `vnd.firemonkeys.cloudcell`,
- `vnd.flographit`,
- `vnd.fluxtime.clip`,
- `vnd.font-fontforge-sfd`,
- `vnd.framemaker`,
- `vnd.frogans.fnc`,
- `vnd.frogans.ltf`,
- `vnd.fsc.weblaunch`,
- `vnd.fujifilm.fb.docuworks`,
- `vnd.fujifilm.fb.docuworks.binder`,
- `vnd.fujifilm.fb.docuworks.container`,
- `vnd.fujifilm.fb.jfi+xml`,
- `vnd.fujitsu.oasys`,
- `vnd.fujitsu.oasys2`,
- `vnd.fujitsu.oasys3`,
- `vnd.fujitsu.oasysgp`,
- `vnd.fujitsu.oasysprs`,
- `vnd.fujixerox.art-ex`,
- `vnd.fujixerox.art4`,
- `vnd.fujixerox.ddd`,
- `vnd.fujixerox.docuworks`,
- `vnd.fujixerox.docuworks.binder`,
- `vnd.fujixerox.docuworks.container`,
- `vnd.fujixerox.hbpl`,
- `vnd.fut-misnet`,
- `vnd.futoin+cbor`,
- `vnd.futoin+json`,
- `vnd.fuzzysheet`,
- `vnd.genomatix.tuxedo`,
- `vnd.gentics.grd+json`,
- `vnd.geo+json`,
- `vnd.geocube+xml`,
- `vnd.geogebra.file`,
- `vnd.geogebra.slides`,
- `vnd.geogebra.tool`,
- `vnd.geometry-explorer`,
- `vnd.geonext`,
- `vnd.geoplan`,
- `vnd.geospace`,
- `vnd.gerber`,
- `vnd.globalplatform.card-content-mgt`,
- `vnd.globalplatform.card-content-mgt-response`,
- `vnd.gmx`,
- `vnd.google-apps.document`,
- `vnd.google-apps.presentation`,
- `vnd.google-apps.spreadsheet`,
- `vnd.google-earth.kml+xml`,
- `vnd.google-earth.kmz`,
- `vnd.gov.sk.e-form+xml`,
- `vnd.gov.sk.e-form+zip`,
- `vnd.gov.sk.xmldatacontainer+xml`,
- `vnd.grafeq`,
- `vnd.gridmp`,
- `vnd.groove-account`,
- `vnd.groove-help`,
- `vnd.groove-identity-message`,
- `vnd.groove-injector`,
- `vnd.groove-tool-message`,
- `vnd.groove-tool-template`,
- `vnd.groove-vcard`,
- `vnd.hal+json`,
- `vnd.hal+xml`,
- `vnd.handheld-entertainment+xml`,
- `vnd.hbci`,
- `vnd.hc+json`,
- `vnd.hcl-bireports`,
- `vnd.hdt`,
- `vnd.heroku+json`,
- `vnd.hhe.lesson-player`,
- `vnd.hp-hpgl`,
- `vnd.hp-hpid`,
- `vnd.hp-hps`,
- `vnd.hp-jlyt`,
- `vnd.hp-pcl`,
- `vnd.hp-pclxl`,
- `vnd.httphone`,
- `vnd.hydrostatix.sof-data`,
- `vnd.hyper+json`,
- `vnd.hyper-item+json`,
- `vnd.hyperdrive+json`,
- `vnd.hzn-3d-crossword`,
- `vnd.ibm.afplinedata`,
- `vnd.ibm.electronic-media`,
- `vnd.ibm.minipay`,
- `vnd.ibm.modcap`,
- `vnd.ibm.rights-management`,
- `vnd.ibm.secure-container`,
- `vnd.iccprofile`,
- `vnd.ieee.1905`,
- `vnd.igloader`,
- `vnd.imagemeter.folder+zip`,
- `vnd.imagemeter.image+zip`,
- `vnd.immervision-ivp`,
- `vnd.immervision-ivu`,
- `vnd.ims.imsccv1p1`,
- `vnd.ims.imsccv1p2`,
- `vnd.ims.imsccv1p3`,
- `vnd.ims.lis.v2.result+json`,
- `vnd.ims.lti.v2.toolconsumerprofile+json`,
- `vnd.ims.lti.v2.toolproxy+json`,
- `vnd.ims.lti.v2.toolproxy.id+json`,
- `vnd.ims.lti.v2.toolsettings+json`,
- `vnd.ims.lti.v2.toolsettings.simple+json`,
- `vnd.informedcontrol.rms+xml`,
- `vnd.informix-visionary`,
- `vnd.infotech.project`,
- `vnd.infotech.project+xml`,
- `vnd.innopath.wamp.notification`,
- `vnd.insors.igm`,
- `vnd.intercon.formnet`,
- `vnd.intergeo`,
- `vnd.intertrust.digibox`,
- `vnd.intertrust.nncp`,
- `vnd.intu.qbo`,
- `vnd.intu.qfx`,
- `vnd.iptc.g2.catalogitem+xml`,
- `vnd.iptc.g2.conceptitem+xml`,
- `vnd.iptc.g2.knowledgeitem+xml`,
- `vnd.iptc.g2.newsitem+xml`,
- `vnd.iptc.g2.newsmessage+xml`,
- `vnd.iptc.g2.packageitem+xml`,
- `vnd.iptc.g2.planningitem+xml`,
- `vnd.ipunplugged.rcprofile`,
- `vnd.irepository.package+xml`,
- `vnd.is-xpr`,
- `vnd.isac.fcs`,
- `vnd.iso11783-10+zip`,
- `vnd.jam`,
- `vnd.japannet-directory-service`,
- `vnd.japannet-jpnstore-wakeup`,
- `vnd.japannet-payment-wakeup`,
- `vnd.japannet-registration`,
- `vnd.japannet-registration-wakeup`,
- `vnd.japannet-setstore-wakeup`,
- `vnd.japannet-verification`,
- `vnd.japannet-verification-wakeup`,
- `vnd.jcp.javame.midlet-rms`,
- `vnd.jisp`,
- `vnd.joost.joda-archive`,
- `vnd.jsk.isdn-ngn`,
- `vnd.kahootz`,
- `vnd.kde.karbon`,
- `vnd.kde.kchart`,
- `vnd.kde.kformula`,
- `vnd.kde.kivio`,
- `vnd.kde.kontour`,
- `vnd.kde.kpresenter`,
- `vnd.kde.kspread`,
- `vnd.kde.kword`,
- `vnd.kenameaapp`,
- `vnd.kidspiration`,
- `vnd.kinar`,
- `vnd.koan`,
- `vnd.kodak-descriptor`,
- `vnd.las`,
- `vnd.las.las+json`,
- `vnd.las.las+xml`,
- `vnd.laszip`,
- `vnd.leap+json`,
- `vnd.liberty-request+xml`,
- `vnd.llamagraphics.life-balance.desktop`,
- `vnd.llamagraphics.life-balance.exchange+xml`,
- `vnd.logipipe.circuit+zip`,
- `vnd.loom`,
- `vnd.lotus-1-2-3`,
- `vnd.lotus-approach`,
- `vnd.lotus-freelance`,
- `vnd.lotus-notes`,
- `vnd.lotus-organizer`,
- `vnd.lotus-screencam`,
- `vnd.lotus-wordpro`,
- `vnd.macports.portpkg`,
- `vnd.mapbox-vector-tile`,
- `vnd.marlin.drm.actiontoken+xml`,
- `vnd.marlin.drm.conftoken+xml`,
- `vnd.marlin.drm.license+xml`,
- `vnd.marlin.drm.mdcf`,
- `vnd.mason+json`,
- `vnd.maxmind.maxmind-db`,
- `vnd.mcd`,
- `vnd.medcalcdata`,
- `vnd.mediastation.cdkey`,
- `vnd.meridian-slingshot`,
- `vnd.mfer`,
- `vnd.mfmp`,
- `vnd.micro+json`,
- `vnd.micrografx.flo`,
- `vnd.micrografx.igx`,
- `vnd.microsoft.portable-executable`,
- `vnd.microsoft.windows.thumbnail-cache`,
- `vnd.miele+json`,
- `vnd.mif`,
- `vnd.minisoft-hp3000-save`,
- `vnd.mitsubishi.misty-guard.trustweb`,
- `vnd.mobius.daf`,
- `vnd.mobius.dis`,
- `vnd.mobius.mbk`,
- `vnd.mobius.mqy`,
- `vnd.mobius.msl`,
- `vnd.mobius.plc`,
- `vnd.mobius.txf`,
- `vnd.mophun.application`,
- `vnd.mophun.certificate`,
- `vnd.motorola.flexsuite`,
- `vnd.motorola.flexsuite.adsi`,
- `vnd.motorola.flexsuite.fis`,
- `vnd.motorola.flexsuite.gotap`,
- `vnd.motorola.flexsuite.kmr`,
- `vnd.motorola.flexsuite.ttc`,
- `vnd.motorola.flexsuite.wem`,
- `vnd.motorola.iprm`,
- `vnd.mozilla.xul+xml`,
- `vnd.ms-3mfdocument`,
- `vnd.ms-artgalry`,
- `vnd.ms-asf`,
- `vnd.ms-cab-compressed`,
- `vnd.ms-color.iccprofile`,
- `vnd.ms-excel`,
- `vnd.ms-excel.addin.macroenabled.12`,
- `vnd.ms-excel.sheet.binary.macroenabled.12`,
- `vnd.ms-excel.sheet.macroenabled.12`,
- `vnd.ms-excel.template.macroenabled.12`,
- `vnd.ms-fontobject`,
- `vnd.ms-htmlhelp`,
- `vnd.ms-ims`,
- `vnd.ms-lrm`,
- `vnd.ms-office.activex+xml`,
- `vnd.ms-officetheme`,
- `vnd.ms-opentype`,
- `vnd.ms-outlook`,
- `vnd.ms-package.obfuscated-opentype`,
- `vnd.ms-pki.seccat`,
- `vnd.ms-pki.stl`,
- `vnd.ms-playready.initiator+xml`,
- `vnd.ms-powerpoint`,
- `vnd.ms-powerpoint.addin.macroenabled.12`,
- `vnd.ms-powerpoint.presentation.macroenabled.12`,
- `vnd.ms-powerpoint.slide.macroenabled.12`,
- `vnd.ms-powerpoint.slideshow.macroenabled.12`,
- `vnd.ms-powerpoint.template.macroenabled.12`,
- `vnd.ms-printdevicecapabilities+xml`,
- `vnd.ms-printing.printticket+xml`,
- `vnd.ms-printschematicket+xml`,
- `vnd.ms-project`,
- `vnd.ms-tnef`,
- `vnd.ms-windows.devicepairing`,
- `vnd.ms-windows.nwprinting.oob`,
- `vnd.ms-windows.printerpairing`,
- `vnd.ms-windows.wsd.oob`,
- `vnd.ms-wmdrm.lic-chlg-req`,
+ "vnd.openxmlformats-package.digital-signature-xmlsignature+xml",
+ compressible = true,
+ binary = true,
)
- }
- trait application_2 {
- lazy val `vnd.ms-wmdrm.lic-resp`: MediaType =
- new MediaType("application", "vnd.ms-wmdrm.lic-resp", Compressible, NotBinary)
- lazy val `vnd.ms-wmdrm.meter-chlg-req`: MediaType =
- new MediaType("application", "vnd.ms-wmdrm.meter-chlg-req", Compressible, NotBinary)
- lazy val `vnd.ms-wmdrm.meter-resp`: MediaType =
- new MediaType("application", "vnd.ms-wmdrm.meter-resp", Compressible, NotBinary)
- lazy val `vnd.ms-word.document.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.sss-ntf`: MediaType =
+ new MediaType("application", "vnd.sss-ntf", compressible = false, binary = true)
+
+ lazy val `vnd.oma.cab-user-prefs+xml`: MediaType =
+ new MediaType("application", "vnd.oma.cab-user-prefs+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ecowin.filerequest`: MediaType =
+ new MediaType("application", "vnd.ecowin.filerequest", compressible = false, binary = true)
+
+ lazy val `vnd.ms-artgalry`: MediaType =
+ new MediaType("application", "vnd.ms-artgalry", compressible = false, binary = true, List("cil"))
+
+ lazy val `dialog-info+xml`: MediaType =
+ new MediaType("application", "dialog-info+xml", compressible = true, binary = true)
+
+ lazy val `x-font-pcf`: MediaType =
+ new MediaType("application", "x-font-pcf", compressible = false, binary = true, List("pcf"))
+
+ lazy val `vnd.openblox.game-binary`: MediaType =
+ new MediaType("application", "vnd.openblox.game-binary", compressible = false, binary = true)
+
+ lazy val `x-x509-ca-cert`: MediaType =
+ new MediaType("application", "x-x509-ca-cert", compressible = false, binary = true, List("der", "crt", "pem"))
+
+ lazy val `vnd.ipld.raw`: MediaType =
+ new MediaType("application", "vnd.ipld.raw", compressible = false, binary = true)
+
+ lazy val `xcap-ns+xml`: MediaType =
+ new MediaType("application", "xcap-ns+xml", compressible = true, binary = true, List("xns"))
+
+ lazy val `vnd.cosmocaller`: MediaType =
+ new MediaType("application", "vnd.cosmocaller", compressible = false, binary = true, List("cmc"))
+
+ lazy val `x-sh`: MediaType =
+ new MediaType("application", "x-sh", compressible = true, binary = true, List("sh"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-word.document.macroenabled.12",
- Compressible,
- NotBinary,
- List("docm"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.ms-word.template.macroenabled.12`: MediaType = new MediaType(
+
+ lazy val `vnd.sealed.tiff`: MediaType =
+ new MediaType("application", "vnd.sealed.tiff", compressible = false, binary = true)
+
+ lazy val `fits`: MediaType =
+ new MediaType("application", "fits", compressible = false, binary = true)
+
+ lazy val `vnd.wfa.wsc`: MediaType =
+ new MediaType("application", "vnd.wfa.wsc", compressible = false, binary = true)
+
+ lazy val `x400-bp`: MediaType =
+ new MediaType("application", "x400-bp", compressible = false, binary = true)
+
+ lazy val `vnd.lotus-freelance`: MediaType =
+ new MediaType("application", "vnd.lotus-freelance", compressible = false, binary = true, List("pre"))
+
+ lazy val `vnd.medicalholodeck.recordxr`: MediaType =
+ new MediaType("application", "vnd.medicalholodeck.recordxr", compressible = false, binary = true)
+
+ lazy val `vnd.powerbuilder6`: MediaType =
+ new MediaType("application", "vnd.powerbuilder6", compressible = false, binary = true, List("pbd"))
+
+ lazy val `x-virtualbox-vbox`: MediaType =
+ new MediaType("application", "x-virtualbox-vbox", compressible = true, binary = true, List("vbox"))
+
+ lazy val `vnd.kde.karbon`: MediaType =
+ new MediaType("application", "vnd.kde.karbon", compressible = false, binary = true, List("karbon"))
+
+ lazy val `sensml+cbor`: MediaType =
+ new MediaType("application", "sensml+cbor", compressible = false, binary = true)
+
+ lazy val `msc-ivr+xml`: MediaType =
+ new MediaType("application", "msc-ivr+xml", compressible = true, binary = true)
+
+ lazy val `msix`: MediaType =
+ new MediaType("application", "msix", compressible = false, binary = true, List("msix"))
+
+ lazy val `vnd.oci.image.manifest.v1+json`: MediaType =
+ new MediaType("application", "vnd.oci.image.manifest.v1+json", compressible = true, binary = false)
+
+ lazy val `fido.trusted-apps+json`: MediaType =
+ new MediaType("application", "fido.trusted-apps+json", compressible = true, binary = false)
+
+ lazy val `vnd.ieee.1905`: MediaType =
+ new MediaType("application", "vnd.ieee.1905", compressible = false, binary = true)
+
+ lazy val `x-font-type1`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-word.template.macroenabled.12",
- Compressible,
- NotBinary,
- List("dotm"),
+ "x-font-type1",
+ compressible = false,
+ binary = true,
+ List("pfa", "pfb", "pfm", "afm"),
)
- lazy val `vnd.ms-works`: MediaType = new MediaType(
+
+ lazy val `vnd.yaoweme`: MediaType =
+ new MediaType("application", "vnd.yaoweme", compressible = false, binary = true)
+
+ lazy val `rss+xml`: MediaType =
+ new MediaType("application", "rss+xml", compressible = true, binary = true, List("rss"))
+
+ lazy val `emergencycalldata.control+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.control+xml", compressible = true, binary = true)
+
+ lazy val `x-gtar`: MediaType =
+ new MediaType("application", "x-gtar", compressible = false, binary = true, List("gtar"))
+
+ lazy val `octet-stream`: MediaType =
+ new MediaType(
"application",
- "vnd.ms-works",
- Compressible,
- NotBinary,
- List("wps", "wks", "wcm", "wdb"),
+ "octet-stream",
+ compressible = false,
+ binary = true,
+ List(
+ "bin",
+ "dms",
+ "lrf",
+ "mar",
+ "so",
+ "dist",
+ "distz",
+ "pkg",
+ "bpk",
+ "dump",
+ "elc",
+ "deploy",
+ "exe",
+ "dll",
+ "deb",
+ "dmg",
+ "iso",
+ "img",
+ "msi",
+ "msp",
+ "msm",
+ "buffer",
+ ),
)
- lazy val `vnd.ms-wpl`: MediaType =
- new MediaType("application", "vnd.ms-wpl", Compressible, NotBinary, List("wpl"))
- lazy val `vnd.ms-xpsdocument`: MediaType =
- new MediaType("application", "vnd.ms-xpsdocument", Uncompressible, NotBinary, List("xps"))
- lazy val `vnd.msa-disk-image`: MediaType =
- new MediaType("application", "vnd.msa-disk-image", Compressible, NotBinary)
- lazy val `vnd.mseq`: MediaType =
- new MediaType("application", "vnd.mseq", Compressible, NotBinary, List("mseq"))
- lazy val `vnd.msign`: MediaType =
- new MediaType("application", "vnd.msign", Compressible, NotBinary)
- lazy val `vnd.multiad.creator`: MediaType =
- new MediaType("application", "vnd.multiad.creator", Compressible, NotBinary)
- lazy val `vnd.multiad.creator.cif`: MediaType =
- new MediaType("application", "vnd.multiad.creator.cif", Compressible, NotBinary)
- lazy val `vnd.music-niff`: MediaType =
- new MediaType("application", "vnd.music-niff", Compressible, NotBinary)
- lazy val `vnd.musician`: MediaType =
- new MediaType("application", "vnd.musician", Compressible, NotBinary, List("mus"))
- lazy val `vnd.muvee.style`: MediaType =
- new MediaType("application", "vnd.muvee.style", Compressible, NotBinary, List("msty"))
- lazy val `vnd.mynfc`: MediaType =
- new MediaType("application", "vnd.mynfc", Compressible, NotBinary, List("taglet"))
- lazy val `vnd.ncd.control`: MediaType =
- new MediaType("application", "vnd.ncd.control", Compressible, NotBinary)
- lazy val `vnd.ncd.reference`: MediaType =
- new MediaType("application", "vnd.ncd.reference", Compressible, NotBinary)
- lazy val `vnd.nearst.inv+json`: MediaType =
- new MediaType("application", "vnd.nearst.inv+json", Compressible, NotBinary)
- lazy val `vnd.nebumind.line`: MediaType =
- new MediaType("application", "vnd.nebumind.line", Compressible, NotBinary)
- lazy val `vnd.nervana`: MediaType =
- new MediaType("application", "vnd.nervana", Compressible, NotBinary)
- lazy val `vnd.netfpx`: MediaType =
- new MediaType("application", "vnd.netfpx", Compressible, NotBinary)
- lazy val `vnd.neurolanguage.nlu`: MediaType =
- new MediaType("application", "vnd.neurolanguage.nlu", Compressible, NotBinary, List("nlu"))
- lazy val `vnd.nimn`: MediaType =
- new MediaType("application", "vnd.nimn", Compressible, NotBinary)
- lazy val `vnd.nintendo.nitro.rom`: MediaType =
- new MediaType("application", "vnd.nintendo.nitro.rom", Compressible, NotBinary)
- lazy val `vnd.nintendo.snes.rom`: MediaType =
- new MediaType("application", "vnd.nintendo.snes.rom", Compressible, NotBinary)
- lazy val `vnd.nitf`: MediaType =
- new MediaType("application", "vnd.nitf", Compressible, NotBinary, List("ntf", "nitf"))
- lazy val `vnd.noblenet-directory`: MediaType =
- new MediaType("application", "vnd.noblenet-directory", Compressible, NotBinary, List("nnd"))
- lazy val `vnd.noblenet-sealer`: MediaType =
- new MediaType("application", "vnd.noblenet-sealer", Compressible, NotBinary, List("nns"))
- lazy val `vnd.noblenet-web`: MediaType =
- new MediaType("application", "vnd.noblenet-web", Compressible, NotBinary, List("nnw"))
- lazy val `vnd.nokia.catalogs`: MediaType =
- new MediaType("application", "vnd.nokia.catalogs", Compressible, NotBinary)
- lazy val `vnd.nokia.conml+wbxml`: MediaType =
- new MediaType("application", "vnd.nokia.conml+wbxml", Compressible, NotBinary)
- lazy val `vnd.nokia.conml+xml`: MediaType =
- new MediaType("application", "vnd.nokia.conml+xml", Compressible, NotBinary)
- lazy val `vnd.nokia.iptv.config+xml`: MediaType =
- new MediaType("application", "vnd.nokia.iptv.config+xml", Compressible, NotBinary)
- lazy val `vnd.nokia.isds-radio-presets`: MediaType =
- new MediaType("application", "vnd.nokia.isds-radio-presets", Compressible, NotBinary)
- lazy val `vnd.nokia.landmark+wbxml`: MediaType =
- new MediaType("application", "vnd.nokia.landmark+wbxml", Compressible, NotBinary)
- lazy val `vnd.nokia.landmark+xml`: MediaType =
- new MediaType("application", "vnd.nokia.landmark+xml", Compressible, NotBinary)
- lazy val `vnd.nokia.landmarkcollection+xml`: MediaType =
- new MediaType("application", "vnd.nokia.landmarkcollection+xml", Compressible, NotBinary)
- lazy val `vnd.nokia.n-gage.ac+xml`: MediaType =
- new MediaType("application", "vnd.nokia.n-gage.ac+xml", Compressible, NotBinary, List("ac"))
- lazy val `vnd.nokia.n-gage.data`: MediaType = new MediaType(
+
+ lazy val `vnd.ms-excel.addin.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.nokia.n-gage.data",
- Compressible,
- NotBinary,
- List("ngdat"),
+ "vnd.ms-excel.addin.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("xlam"),
)
- lazy val `vnd.nokia.n-gage.symbian.install`: MediaType = new MediaType(
+
+ lazy val `vnd.openxmlformats-package.core-properties+xml`: MediaType =
+ new MediaType("application", "vnd.openxmlformats-package.core-properties+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-color.iccprofile`: MediaType =
+ new MediaType("application", "vnd.ms-color.iccprofile", compressible = false, binary = true)
+
+ lazy val `vnd.etsi.iptvueprofile+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvueprofile+xml", compressible = true, binary = true)
+
+ lazy val `vnd.apache.thrift.json`: MediaType =
+ new MediaType("application", "vnd.apache.thrift.json", compressible = false, binary = false)
+
+ lazy val `vnd.powerbuilder75-s`: MediaType =
+ new MediaType("application", "vnd.powerbuilder75-s", compressible = false, binary = true)
+
+ lazy val `x-msterminal`: MediaType =
+ new MediaType("application", "x-msterminal", compressible = false, binary = true, List("trm"))
+
+ lazy val `calendar+json`: MediaType =
+ new MediaType("application", "calendar+json", compressible = true, binary = false)
+
+ lazy val `xcon-conference-info+xml`: MediaType =
+ new MediaType("application", "xcon-conference-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.collection.doc+json`: MediaType =
+ new MediaType("application", "vnd.collection.doc+json", compressible = true, binary = false)
+
+ lazy val `vnd.d3m-dataset`: MediaType =
+ new MediaType("application", "vnd.d3m-dataset", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.formula`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.formula", compressible = false, binary = true, List("odf"))
+
+ lazy val `vnd.simtech-mindmapper`: MediaType =
+ new MediaType("application", "vnd.simtech-mindmapper", compressible = false, binary = true, List("twd", "twds"))
+
+ lazy val `reginfo+xml`: MediaType =
+ new MediaType("application", "reginfo+xml", compressible = true, binary = true, List("rif"))
+
+ lazy val `vnd.wordlift`: MediaType =
+ new MediaType("application", "vnd.wordlift", compressible = false, binary = true)
+
+ lazy val `lost+xml`: MediaType =
+ new MediaType("application", "lost+xml", compressible = true, binary = true, List("lostxml"))
+
+ lazy val `vnd.preminet`: MediaType =
+ new MediaType("application", "vnd.preminet", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.nokia.n-gage.symbian.install",
- Compressible,
- NotBinary,
- List("n-gage"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.nokia.ncd`: MediaType =
- new MediaType("application", "vnd.nokia.ncd", Compressible, NotBinary)
- lazy val `vnd.nokia.pcd+wbxml`: MediaType =
- new MediaType("application", "vnd.nokia.pcd+wbxml", Compressible, NotBinary)
- lazy val `vnd.nokia.pcd+xml`: MediaType =
- new MediaType("application", "vnd.nokia.pcd+xml", Compressible, NotBinary)
- lazy val `vnd.nokia.radio-preset`: MediaType = new MediaType(
+
+ lazy val `vnd.comicbook+zip`: MediaType =
+ new MediaType("application", "vnd.comicbook+zip", compressible = false, binary = true)
+
+ lazy val `vnd.ezpix-package`: MediaType =
+ new MediaType("application", "vnd.ezpix-package", compressible = false, binary = true, List("ez3"))
+
+ lazy val `emergencycalldata.veds+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.veds+xml", compressible = true, binary = true)
+
+ lazy val `pkcs10`: MediaType =
+ new MediaType("application", "pkcs10", compressible = false, binary = true, List("p10"))
+
+ lazy val `vnd.dtg.local.flash`: MediaType =
+ new MediaType("application", "vnd.dtg.local.flash", compressible = false, binary = true)
+
+ lazy val `sep-exi`: MediaType =
+ new MediaType("application", "sep-exi", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.radio-preset`: MediaType =
+ new MediaType("application", "vnd.nokia.radio-preset", compressible = false, binary = true, List("rpst"))
+
+ lazy val `vnd.dece.zip`: MediaType =
+ new MediaType("application", "vnd.dece.zip", compressible = false, binary = true, List("uvz", "uvvz"))
+
+ lazy val `smil+xml`: MediaType =
+ new MediaType("application", "smil+xml", compressible = true, binary = true, List("smi", "smil"))
+
+ lazy val `vnd.shopkick+json`: MediaType =
+ new MediaType("application", "vnd.shopkick+json", compressible = true, binary = false)
+
+ lazy val `webpush-options+json`: MediaType =
+ new MediaType("application", "webpush-options+json", compressible = true, binary = false)
+
+ lazy val `vnd.anki`: MediaType =
+ new MediaType("application", "vnd.anki", compressible = false, binary = true)
+
+ lazy val `cdmi-object`: MediaType =
+ new MediaType("application", "cdmi-object", compressible = false, binary = true, List("cdmio"))
+
+ lazy val `vnd.onepagertatp`: MediaType =
+ new MediaType("application", "vnd.onepagertatp", compressible = false, binary = true)
+
+ lazy val `vnd.fujixerox.docuworks.binder`: MediaType =
+ new MediaType("application", "vnd.fujixerox.docuworks.binder", compressible = false, binary = true, List("xbd"))
+
+ lazy val `rtf`: MediaType =
+ new MediaType("application", "rtf", compressible = true, binary = true, List("rtf"))
+
+ lazy val `vnd.nintendo.snes.rom`: MediaType =
+ new MediaType("application", "vnd.nintendo.snes.rom", compressible = false, binary = true)
+
+ lazy val `vnd.visionary`: MediaType =
+ new MediaType("application", "vnd.visionary", compressible = false, binary = true, List("vis"))
+
+ lazy val `vnd.iptc.g2.newsmessage+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.newsmessage+xml", compressible = true, binary = true)
+
+ lazy val `tamp-update`: MediaType =
+ new MediaType("application", "tamp-update", compressible = false, binary = true)
+
+ lazy val `calendar+xml`: MediaType =
+ new MediaType("application", "calendar+xml", compressible = true, binary = true, List("xcs"))
+
+ lazy val `vnd.canon-lips`: MediaType =
+ new MediaType("application", "vnd.canon-lips", compressible = false, binary = true)
+
+ lazy val `vnd.bpf`: MediaType =
+ new MediaType("application", "vnd.bpf", compressible = false, binary = true)
+
+ lazy val `prs.cyn`: MediaType =
+ new MediaType("application", "prs.cyn", compressible = false, binary = true)
+
+ lazy val `vnd.wap.sic`: MediaType =
+ new MediaType("application", "vnd.wap.sic", compressible = false, binary = true)
+
+ lazy val `alto-cdni+json`: MediaType =
+ new MediaType("application", "alto-cdni+json", compressible = true, binary = false)
+
+ lazy val `vnd.handheld-entertainment+xml`: MediaType =
+ new MediaType("application", "vnd.handheld-entertainment+xml", compressible = true, binary = true, List("zmm"))
+
+ lazy val `vnd.shootproof+json`: MediaType =
+ new MediaType("application", "vnd.shootproof+json", compressible = true, binary = false)
+
+ lazy val `prs.cww`: MediaType =
+ new MediaType("application", "prs.cww", compressible = false, binary = true, List("cww"))
+
+ lazy val `vnd.gentoo.eclass`: MediaType =
+ new MediaType("application", "vnd.gentoo.eclass", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.nokia.radio-preset",
- Compressible,
- NotBinary,
- List("rpst"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.nokia.radio-presets`: MediaType = new MediaType(
+
+ lazy val `vnd.ms-officetheme`: MediaType =
+ new MediaType("application", "vnd.ms-officetheme", compressible = false, binary = true, List("thmx"))
+
+ lazy val `pkix-pkipath`: MediaType =
+ new MediaType("application", "pkix-pkipath", compressible = false, binary = true, List("pkipath"))
+
+ lazy val `vnd.openxmlformats-officedocument.extended-properties+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.nokia.radio-presets",
- Compressible,
- NotBinary,
- List("rpss"),
+ "vnd.openxmlformats-officedocument.extended-properties+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.novadigm.edm`: MediaType =
- new MediaType("application", "vnd.novadigm.edm", Compressible, NotBinary, List("edm"))
- lazy val `vnd.novadigm.edx`: MediaType =
- new MediaType("application", "vnd.novadigm.edx", Compressible, NotBinary, List("edx"))
- lazy val `vnd.novadigm.ext`: MediaType =
- new MediaType("application", "vnd.novadigm.ext", Compressible, NotBinary, List("ext"))
- lazy val `vnd.ntt-local.content-share`: MediaType =
- new MediaType("application", "vnd.ntt-local.content-share", Compressible, NotBinary)
- lazy val `vnd.ntt-local.file-transfer`: MediaType =
- new MediaType("application", "vnd.ntt-local.file-transfer", Compressible, NotBinary)
- lazy val `vnd.ntt-local.ogw_remote-access`: MediaType =
- new MediaType("application", "vnd.ntt-local.ogw_remote-access", Compressible, NotBinary)
- lazy val `vnd.ntt-local.sip-ta_remote`: MediaType =
- new MediaType("application", "vnd.ntt-local.sip-ta_remote", Compressible, NotBinary)
- lazy val `vnd.ntt-local.sip-ta_tcp_stream`: MediaType =
- new MediaType("application", "vnd.ntt-local.sip-ta_tcp_stream", Compressible, NotBinary)
- lazy val `vnd.oasis.opendocument.chart`: MediaType = new MediaType(
+
+ lazy val `vnd.belightsoft.lhzl+zip`: MediaType =
+ new MediaType("application", "vnd.belightsoft.lhzl+zip", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.pic-bw-small`: MediaType =
+ new MediaType("application", "vnd.3gpp.pic-bw-small", compressible = false, binary = true, List("psb"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.chart",
- Compressible,
- Binary,
- List("odc"),
+ "vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.chart-template`: MediaType = new MediaType(
+
+ lazy val `vnd.oma.bcast.smartcard-trigger+xml`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.smartcard-trigger+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ncd.reference`: MediaType =
+ new MediaType("application", "vnd.ncd.reference", compressible = false, binary = true)
+
+ lazy val `vnd.ipunplugged.rcprofile`: MediaType =
+ new MediaType("application", "vnd.ipunplugged.rcprofile", compressible = false, binary = true, List("rcprofile"))
+
+ lazy val `cnrp+xml`: MediaType =
+ new MediaType("application", "cnrp+xml", compressible = true, binary = true)
+
+ lazy val `vnd.amiga.ami`: MediaType =
+ new MediaType("application", "vnd.amiga.ami", compressible = false, binary = true, List("ami"))
+
+ lazy val `yang-patch+xml`: MediaType =
+ new MediaType("application", "yang-patch+xml", compressible = true, binary = true)
+
+ lazy val `vnd.etsi.iptvsad-cod+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.iptvsad-cod+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.chart-template",
- Compressible,
- NotBinary,
- List("otc"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.database`: MediaType = new MediaType(
+
+ lazy val `vnd.wt.stf`: MediaType =
+ new MediaType("application", "vnd.wt.stf", compressible = false, binary = true, List("stf"))
+
+ lazy val `vnd.3gpp2.bcmcsinfo+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp2.bcmcsinfo+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp-prose+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp-prose+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sun.xml.writer`: MediaType =
+ new MediaType("application", "vnd.sun.xml.writer", compressible = false, binary = true, List("sxw"))
+
+ lazy val `vnd.rim.cod`: MediaType =
+ new MediaType("application", "vnd.rim.cod", compressible = false, binary = true, List("cod"))
+
+ lazy val `poc-settings+xml`: MediaType =
+ new MediaType("application", "poc-settings+xml", compressible = true, binary = true)
+
+ lazy val `jose`: MediaType =
+ new MediaType("application", "jose", compressible = false, binary = true)
+
+ lazy val `pkixcmp`: MediaType =
+ new MediaType("application", "pkixcmp", compressible = false, binary = true, List("pki"))
+
+ lazy val `vnd.infotech.project+xml`: MediaType =
+ new MediaType("application", "vnd.infotech.project+xml", compressible = true, binary = true)
+
+ lazy val `vnd.uplanet.bearer-choice-wbxml`: MediaType =
+ new MediaType("application", "vnd.uplanet.bearer-choice-wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.notesslide+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.database",
- Compressible,
- Binary,
- List("odb"),
+ "vnd.openxmlformats-officedocument.presentationml.notesslide+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.formula`: MediaType = new MediaType(
+
+ lazy val `vnd.f-secure.mobile`: MediaType =
+ new MediaType("application", "vnd.f-secure.mobile", compressible = false, binary = true)
+
+ lazy val `scaip+xml`: MediaType =
+ new MediaType("application", "scaip+xml", compressible = true, binary = true)
+
+ lazy val `vnd.gentoo.xpak`: MediaType =
+ new MediaType("application", "vnd.gentoo.xpak", compressible = false, binary = true)
+
+ lazy val `vnd.poc.group-advertisement+xml`: MediaType =
+ new MediaType("application", "vnd.poc.group-advertisement+xml", compressible = true, binary = true)
+
+ lazy val `xcap-error+xml`: MediaType =
+ new MediaType("application", "xcap-error+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.custom-properties+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.formula",
- Compressible,
- Binary,
- List("odf"),
+ "vnd.openxmlformats-officedocument.custom-properties+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.formula-template`: MediaType = new MediaType(
+
+ lazy val `h224`: MediaType =
+ new MediaType("application", "h224", compressible = false, binary = true)
+
+ lazy val `vnd.kde.kivio`: MediaType =
+ new MediaType("application", "vnd.kde.kivio", compressible = false, binary = true, List("flw"))
+
+ lazy val `mmt-usd+xml`: MediaType =
+ new MediaType("application", "mmt-usd+xml", compressible = true, binary = true, List("musd"))
+
+ lazy val `csta+xml`: MediaType =
+ new MediaType("application", "csta+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.mcptt-ue-init-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-ue-init-config+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-htmlhelp`: MediaType =
+ new MediaType("application", "vnd.ms-htmlhelp", compressible = false, binary = true, List("chm"))
+
+ lazy val `xenc+xml`: MediaType =
+ new MediaType("application", "xenc+xml", compressible = true, binary = true, List("xenc"))
+
+ lazy val `tamp-sequence-adjust`: MediaType =
+ new MediaType("application", "tamp-sequence-adjust", compressible = false, binary = true)
+
+ lazy val `cfw`: MediaType =
+ new MediaType("application", "cfw", compressible = false, binary = true)
+
+ lazy val `vnd.oipf.spdiscovery+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.spdiscovery+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sycle+xml`: MediaType =
+ new MediaType("application", "vnd.sycle+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sun.wadl+xml`: MediaType =
+ new MediaType("application", "vnd.sun.wadl+xml", compressible = true, binary = true, List("wadl"))
+
+ lazy val `vnd.lotus-notes`: MediaType =
+ new MediaType("application", "vnd.lotus-notes", compressible = false, binary = true, List("nsf"))
+
+ lazy val `vnd.epson.msf`: MediaType =
+ new MediaType("application", "vnd.epson.msf", compressible = false, binary = true, List("msf"))
+
+ lazy val `vnd.oma.bcast.sprov+xml`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.sprov+xml", compressible = true, binary = true)
+
+ lazy val `vnd.unity`: MediaType =
+ new MediaType("application", "vnd.unity", compressible = false, binary = true, List("unityweb"))
+
+ lazy val `vnd.oipf.cspg-hexbinary`: MediaType =
+ new MediaType("application", "vnd.oipf.cspg-hexbinary", compressible = false, binary = true)
+
+ lazy val `vnd.uplanet.list-wbxml`: MediaType =
+ new MediaType("application", "vnd.uplanet.list-wbxml", compressible = false, binary = true)
+
+ lazy val `rpki-publication`: MediaType =
+ new MediaType("application", "rpki-publication", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp-prose-pc3ach+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp-prose-pc3ach+xml", compressible = true, binary = true)
+
+ lazy val `vnd.xacml+json`: MediaType =
+ new MediaType("application", "vnd.xacml+json", compressible = true, binary = false)
+
+ lazy val `vnd.dvb.notif-ia-registration-request+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-ia-registration-request+xml", compressible = true, binary = true)
+
+ lazy val `vnd.japannet-registration-wakeup`: MediaType =
+ new MediaType("application", "vnd.japannet-registration-wakeup", compressible = false, binary = true)
+
+ lazy val `vnd.kinar`: MediaType =
+ new MediaType("application", "vnd.kinar", compressible = false, binary = true, List("kne", "knp"))
+
+ lazy val `vnd.3gpp.mcvideo-mbms-usage-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-mbms-usage-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.formula-template",
- Compressible,
- NotBinary,
- List("odft"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.graphics`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.graphics",
- Uncompressible,
- Binary,
- List("odg"),
- )
- lazy val `vnd.oasis.opendocument.graphics-template`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.graphics-template",
- Compressible,
- NotBinary,
- List("otg"),
- )
- lazy val `vnd.oasis.opendocument.image`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.image",
- Compressible,
- Binary,
- List("odi"),
- )
- lazy val `vnd.oasis.opendocument.image-template`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.image-template",
- Compressible,
- NotBinary,
- List("oti"),
- )
- lazy val `vnd.oasis.opendocument.presentation`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.presentation",
- Uncompressible,
- Binary,
- List("odp"),
- )
- lazy val `vnd.oasis.opendocument.presentation-template`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.presentation-template",
- Compressible,
- NotBinary,
- List("otp"),
- )
- lazy val `vnd.oasis.opendocument.spreadsheet`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.spreadsheet",
- Uncompressible,
- Binary,
- List("ods"),
- )
- lazy val `vnd.oasis.opendocument.spreadsheet-template`: MediaType = new MediaType(
- "application",
- "vnd.oasis.opendocument.spreadsheet-template",
- Compressible,
- NotBinary,
- List("ots"),
- )
- lazy val `vnd.oasis.opendocument.text`: MediaType = new MediaType(
+
+ lazy val `vnd.3gpp2.tcap`: MediaType =
+ new MediaType("application", "vnd.3gpp2.tcap", compressible = false, binary = true, List("tcap"))
+
+ lazy val `mac-compactpro`: MediaType =
+ new MediaType("application", "mac-compactpro", compressible = false, binary = true, List("cpt"))
+
+ lazy val `widget`: MediaType =
+ new MediaType("application", "widget", compressible = false, binary = true, List("wgt"))
+
+ lazy val `raptorfec`: MediaType =
+ new MediaType("application", "raptorfec", compressible = false, binary = true)
+
+ lazy val `tlsrpt+json`: MediaType =
+ new MediaType("application", "tlsrpt+json", compressible = true, binary = false)
+
+ lazy val `vnd.bluetooth.le.oob`: MediaType =
+ new MediaType("application", "vnd.bluetooth.le.oob", compressible = false, binary = true)
+
+ lazy val `x-ms-shortcut`: MediaType =
+ new MediaType("application", "x-ms-shortcut", compressible = false, binary = true, List("lnk"))
+
+ lazy val `oxps`: MediaType =
+ new MediaType("application", "oxps", compressible = false, binary = true, List("oxps"))
+
+ lazy val `metalink+xml`: MediaType =
+ new MediaType("application", "metalink+xml", compressible = true, binary = true, List("metalink"))
+
+ lazy val `mpeg4-iod`: MediaType =
+ new MediaType("application", "mpeg4-iod", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.n-gage.ac+xml`: MediaType =
+ new MediaType("application", "vnd.nokia.n-gage.ac+xml", compressible = true, binary = true, List("ac"))
+
+ lazy val `javascript`: MediaType =
+ new MediaType("application", "javascript", compressible = true, binary = false, List("js"))
+
+ lazy val `vnd.seis+json`: MediaType =
+ new MediaType("application", "vnd.seis+json", compressible = true, binary = false)
+
+ lazy val `vnd.xfdl.webform`: MediaType =
+ new MediaType("application", "vnd.xfdl.webform", compressible = false, binary = true)
+
+ lazy val `vnd.datalog`: MediaType =
+ new MediaType("application", "vnd.datalog", compressible = false, binary = true)
+
+ lazy val `alto-endpointprop+json`: MediaType =
+ new MediaType("application", "alto-endpointprop+json", compressible = true, binary = false)
+
+ lazy val `vnd.omaloc-supl-init`: MediaType =
+ new MediaType("application", "vnd.omaloc-supl-init", compressible = false, binary = true)
+
+ lazy val `vnd.eclipse.ditto+json`: MediaType =
+ new MediaType("application", "vnd.eclipse.ditto+json", compressible = true, binary = false)
+
+ lazy val `vnd.vividence.scriptfile`: MediaType =
+ new MediaType("application", "vnd.vividence.scriptfile", compressible = false, binary = true)
+
+ lazy val `xml`: MediaType =
+ new MediaType("application", "xml", compressible = true, binary = false, List("xml", "xsl", "xsd", "rng"))
+
+ lazy val `vnd.wmf.bootstrap`: MediaType =
+ new MediaType("application", "vnd.wmf.bootstrap", compressible = false, binary = true)
+
+ lazy val `vnd.afpc.modca-cmtable`: MediaType =
+ new MediaType("application", "vnd.afpc.modca-cmtable", compressible = false, binary = true)
+
+ lazy val `vnd.syncml.dmtnds+wbxml`: MediaType =
+ new MediaType("application", "vnd.syncml.dmtnds+wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.uplanet.alert-wbxml`: MediaType =
+ new MediaType("application", "vnd.uplanet.alert-wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.shana.informed.package`: MediaType =
+ new MediaType("application", "vnd.shana.informed.package", compressible = false, binary = true, List("ipk"))
+
+ lazy val `vnd.onepagertamx`: MediaType =
+ new MediaType("application", "vnd.onepagertamx", compressible = false, binary = true)
+
+ lazy val `vnd.apple.numbers`: MediaType =
+ new MediaType("application", "vnd.apple.numbers", compressible = false, binary = true, List("numbers"))
+
+ lazy val `vnd.ncd.control`: MediaType =
+ new MediaType("application", "vnd.ncd.control", compressible = false, binary = true)
+
+ lazy val `vnd.xmpie.plan`: MediaType =
+ new MediaType("application", "vnd.xmpie.plan", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcvideo-ue-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-ue-config+xml", compressible = true, binary = true)
+
+ lazy val `x-pkcs12`: MediaType =
+ new MediaType("application", "x-pkcs12", compressible = false, binary = true, List("p12", "pfx"))
+
+ lazy val `vnd.efi.iso`: MediaType =
+ new MediaType("application", "vnd.efi.iso", compressible = false, binary = true)
+
+ lazy val `emergencycalldata.cap+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.cap+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sun.xml.math`: MediaType =
+ new MediaType("application", "vnd.sun.xml.math", compressible = false, binary = true, List("sxm"))
+
+ lazy val `vnd.imagemeter.folder+zip`: MediaType =
+ new MediaType("application", "vnd.imagemeter.folder+zip", compressible = false, binary = true)
+
+ lazy val `vnd.ms-printing.printticket+xml`: MediaType =
+ new MediaType("application", "vnd.ms-printing.printticket+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-tnef`: MediaType =
+ new MediaType("application", "vnd.ms-tnef", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.text",
- Uncompressible,
- Binary,
- List("odt"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.text-master`: MediaType = new MediaType(
+
+ lazy val `x-font-linux-psf`: MediaType =
+ new MediaType("application", "x-font-linux-psf", compressible = false, binary = true, List("psf"))
+
+ lazy val `vnd.radisys.msml-dialog-fax-detect+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog-fax-detect+xml", compressible = true, binary = true)
+
+ lazy val `provenance+xml`: MediaType =
+ new MediaType("application", "provenance+xml", compressible = true, binary = true, List("provx"))
+
+ lazy val `xml-dtd`: MediaType =
+ new MediaType("application", "xml-dtd", compressible = true, binary = false, List("dtd"))
+
+ lazy val `vnd.cybank`: MediaType =
+ new MediaType("application", "vnd.cybank", compressible = false, binary = true)
+
+ lazy val `vnd.yellowriver-custom-menu`: MediaType =
+ new MediaType("application", "vnd.yellowriver-custom-menu", compressible = false, binary = true, List("cmp"))
+
+ lazy val `vnd.ims.lti.v2.toolsettings.simple+json`: MediaType =
+ new MediaType("application", "vnd.ims.lti.v2.toolsettings.simple+json", compressible = true, binary = false)
+
+ lazy val `vnd.tri.onesource`: MediaType =
+ new MediaType("application", "vnd.tri.onesource", compressible = false, binary = true)
+
+ lazy val `vnd.belightsoft.lhzd+zip`: MediaType =
+ new MediaType("application", "vnd.belightsoft.lhzd+zip", compressible = false, binary = true)
+
+ lazy val `vnd.bpf3`: MediaType =
+ new MediaType("application", "vnd.bpf3", compressible = false, binary = true)
+
+ lazy val `vnd.apache.thrift.compact`: MediaType =
+ new MediaType("application", "vnd.apache.thrift.compact", compressible = false, binary = true)
+
+ lazy val `vnd.radisys.msml-audit-dialog+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-audit-dialog+xml", compressible = true, binary = true)
+
+ lazy val `x-subrip`: MediaType =
+ new MediaType("application", "x-subrip", compressible = false, binary = true, List("srt"))
+
+ lazy val `vnd.oma.poc.detailed-progress-report+xml`: MediaType =
+ new MediaType("application", "vnd.oma.poc.detailed-progress-report+xml", compressible = true, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.drawingml.chart+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.text-master",
- Compressible,
- Binary,
- List("odm"),
+ "vnd.openxmlformats-officedocument.drawingml.chart+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.text-template`: MediaType = new MediaType(
+
+ lazy val `bacnet-xdd+zip`: MediaType =
+ new MediaType("application", "bacnet-xdd+zip", compressible = false, binary = true)
+
+ lazy val `vnd.swiftview-ics`: MediaType =
+ new MediaType("application", "vnd.swiftview-ics", compressible = false, binary = true)
+
+ lazy val `vnd.ds-keypoint`: MediaType =
+ new MediaType("application", "vnd.ds-keypoint", compressible = false, binary = true, List("kpxx"))
+
+ lazy val `kpml-request+xml`: MediaType =
+ new MediaType("application", "kpml-request+xml", compressible = true, binary = true)
+
+ lazy val `vnd.resilient.logic`: MediaType =
+ new MediaType("application", "vnd.resilient.logic", compressible = false, binary = true)
+
+ lazy val `session-info`: MediaType =
+ new MediaType("application", "session-info", compressible = false, binary = true)
+
+ lazy val `vnd.cyclonedx+xml`: MediaType =
+ new MediaType("application", "vnd.cyclonedx+xml", compressible = true, binary = true)
+
+ lazy val `vnd.sealed.ppt`: MediaType =
+ new MediaType("application", "vnd.sealed.ppt", compressible = false, binary = true)
+
+ lazy val `sru+xml`: MediaType =
+ new MediaType("application", "sru+xml", compressible = true, binary = true, List("sru"))
+
+ lazy val `route-apd+xml`: MediaType =
+ new MediaType("application", "route-apd+xml", compressible = true, binary = true, List("rapd"))
+
+ lazy val `hyperstudio`: MediaType =
+ new MediaType("application", "hyperstudio", compressible = false, binary = true, List("stk"))
+
+ lazy val `cdmi-queue`: MediaType =
+ new MediaType("application", "cdmi-queue", compressible = false, binary = true, List("cdmiq"))
+
+ lazy val `mbms-register-response+xml`: MediaType =
+ new MediaType("application", "mbms-register-response+xml", compressible = true, binary = true)
+
+ lazy val `dca-rft`: MediaType =
+ new MediaType("application", "dca-rft", compressible = false, binary = true)
+
+ lazy val `vnd.syncml+xml`: MediaType =
+ new MediaType("application", "vnd.syncml+xml", compressible = true, binary = true, List("xsm"))
+
+ lazy val `vnd.ecowin.fileupdate`: MediaType =
+ new MediaType("application", "vnd.ecowin.fileupdate", compressible = false, binary = true)
+
+ lazy val `x-java-archive-diff`: MediaType =
+ new MediaType("application", "x-java-archive-diff", compressible = false, binary = true, List("jardiff"))
+
+ lazy val `x-wais-source`: MediaType =
+ new MediaType("application", "x-wais-source", compressible = false, binary = true, List("src"))
+
+ lazy val `x-futuresplash`: MediaType =
+ new MediaType("application", "x-futuresplash", compressible = false, binary = true, List("spl"))
+
+ lazy val `rlmi+xml`: MediaType =
+ new MediaType("application", "rlmi+xml", compressible = true, binary = true)
+
+ lazy val `vnd.mobius.plc`: MediaType =
+ new MediaType("application", "vnd.mobius.plc", compressible = false, binary = true, List("plc"))
+
+ lazy val `vnd.oma.lwm2m+cbor`: MediaType =
+ new MediaType("application", "vnd.oma.lwm2m+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.radisys.msml-dialog-fax-sendrecv+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog-fax-sendrecv+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.mid-call+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mid-call+xml", compressible = true, binary = true)
+
+ lazy val `pkcs7-signature`: MediaType =
+ new MediaType("application", "pkcs7-signature", compressible = false, binary = true, List("p7s"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.slidelayout+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.text-template",
- Compressible,
- NotBinary,
- List("ott"),
+ "vnd.openxmlformats-officedocument.presentationml.slidelayout+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oasis.opendocument.text-web`: MediaType = new MediaType(
+
+ lazy val `vnd.imagemeter.image+zip`: MediaType =
+ new MediaType("application", "vnd.imagemeter.image+zip", compressible = false, binary = true)
+
+ lazy val `vnd.hp-hpgl`: MediaType =
+ new MediaType("application", "vnd.hp-hpgl", compressible = false, binary = true, List("hpgl"))
+
+ lazy val `vnd.gerber`: MediaType =
+ new MediaType("application", "vnd.gerber", compressible = false, binary = true)
+
+ lazy val `vnd.ah-barcode`: MediaType =
+ new MediaType("application", "vnd.ah-barcode", compressible = false, binary = true)
+
+ lazy val `vnd.sealed.3df`: MediaType =
+ new MediaType("application", "vnd.sealed.3df", compressible = false, binary = true)
+
+ lazy val `jose+json`: MediaType =
+ new MediaType("application", "jose+json", compressible = true, binary = false)
+
+ lazy val `pics-rules`: MediaType =
+ new MediaType("application", "pics-rules", compressible = false, binary = true, List("prf"))
+
+ lazy val `vnd.cab-jscript`: MediaType =
+ new MediaType("application", "vnd.cab-jscript", compressible = false, binary = true)
+
+ lazy val `xcap-caps+xml`: MediaType =
+ new MediaType("application", "xcap-caps+xml", compressible = true, binary = true, List("xca"))
+
+ lazy val `vnd.afpc.modca-mediummap`: MediaType =
+ new MediaType("application", "vnd.afpc.modca-mediummap", compressible = false, binary = true)
+
+ lazy val `vnd.xmpie.dpkg`: MediaType =
+ new MediaType("application", "vnd.xmpie.dpkg", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.srvcc-ext+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.srvcc-ext+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ipld.car`: MediaType =
+ new MediaType("application", "vnd.ipld.car", compressible = false, binary = true)
+
+ lazy val `vnd.radisys.msml-audit-stream+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-audit-stream+xml", compressible = true, binary = true)
+
+ lazy val `vnd.iptc.g2.catalogitem+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.catalogitem+xml", compressible = true, binary = true)
+
+ lazy val `inkml+xml`: MediaType =
+ new MediaType("application", "inkml+xml", compressible = true, binary = true, List("ink", "inkml"))
+
+ lazy val `vnd.epson.quickanime`: MediaType =
+ new MediaType("application", "vnd.epson.quickanime", compressible = false, binary = true, List("qam"))
+
+ lazy val `vnd.bbf.usp.error`: MediaType =
+ new MediaType("application", "vnd.bbf.usp.error", compressible = false, binary = true)
+
+ lazy val `xliff+xml`: MediaType =
+ new MediaType("application", "xliff+xml", compressible = true, binary = true, List("xlf"))
+
+ lazy val `remote-printing`: MediaType =
+ new MediaType("application", "remote-printing", compressible = false, binary = true)
+
+ lazy val `vnd.fints`: MediaType =
+ new MediaType("application", "vnd.fints", compressible = false, binary = true)
+
+ lazy val `vnd.oipf.mippvcontrolmessage+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.mippvcontrolmessage+xml", compressible = true, binary = true)
+
+ lazy val `vnd.nokia.ncd`: MediaType =
+ new MediaType("application", "vnd.nokia.ncd", compressible = false, binary = true)
+
+ lazy val `vnd.aplextor.warrp+json`: MediaType =
+ new MediaType("application", "vnd.aplextor.warrp+json", compressible = true, binary = false)
+
+ lazy val `mud+json`: MediaType =
+ new MediaType("application", "mud+json", compressible = true, binary = false)
+
+ lazy val `vnd.3gpp.bsf+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.bsf+xml", compressible = true, binary = true)
+
+ lazy val `rdf+xml`: MediaType =
+ new MediaType("application", "rdf+xml", compressible = true, binary = true, List("rdf", "owl"))
+
+ lazy val `im-iscomposing+xml`: MediaType =
+ new MediaType("application", "im-iscomposing+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.s1ap`: MediaType =
+ new MediaType("application", "vnd.3gpp.s1ap", compressible = false, binary = true)
+
+ lazy val `riscos`: MediaType =
+ new MediaType("application", "riscos", compressible = false, binary = true)
+
+ lazy val `vnd.enphase.envoy`: MediaType =
+ new MediaType("application", "vnd.enphase.envoy", compressible = false, binary = true)
+
+ lazy val `scvp-vp-response`: MediaType =
+ new MediaType("application", "scvp-vp-response", compressible = false, binary = true, List("spp"))
+
+ lazy val `vnd.umajin`: MediaType =
+ new MediaType("application", "vnd.umajin", compressible = false, binary = true, List("umj"))
+
+ lazy val `x-font-vfont`: MediaType =
+ new MediaType("application", "x-font-vfont", compressible = false, binary = true)
+
+ lazy val `vnd.gov.sk.e-form+zip`: MediaType =
+ new MediaType("application", "vnd.gov.sk.e-form+zip", compressible = false, binary = true)
+
+ lazy val `vnd.openblox.game+xml`: MediaType =
+ new MediaType("application", "vnd.openblox.game+xml", compressible = true, binary = true, List("obgx"))
+
+ lazy val `alto-costmap+json`: MediaType =
+ new MediaType("application", "alto-costmap+json", compressible = true, binary = false)
+
+ lazy val `font-sfnt`: MediaType =
+ new MediaType("application", "font-sfnt", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oasis.opendocument.text-web",
- Compressible,
- Binary,
- List("oth"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.obn`: MediaType =
- new MediaType("application", "vnd.obn", Compressible, NotBinary)
- lazy val `vnd.ocf+cbor`: MediaType =
- new MediaType("application", "vnd.ocf+cbor", Compressible, NotBinary)
- lazy val `vnd.oci.image.manifest.v1+json`: MediaType =
- new MediaType("application", "vnd.oci.image.manifest.v1+json", Compressible, NotBinary)
- lazy val `vnd.oftn.l10n+json`: MediaType =
- new MediaType("application", "vnd.oftn.l10n+json", Compressible, NotBinary)
- lazy val `vnd.oipf.contentaccessdownload+xml`: MediaType =
- new MediaType("application", "vnd.oipf.contentaccessdownload+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.contentaccessstreaming+xml`: MediaType =
- new MediaType("application", "vnd.oipf.contentaccessstreaming+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.cspg-hexbinary`: MediaType =
- new MediaType("application", "vnd.oipf.cspg-hexbinary", Compressible, NotBinary)
- lazy val `vnd.oipf.dae.svg+xml`: MediaType =
- new MediaType("application", "vnd.oipf.dae.svg+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.dae.xhtml+xml`: MediaType =
- new MediaType("application", "vnd.oipf.dae.xhtml+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.mippvcontrolmessage+xml`: MediaType =
- new MediaType("application", "vnd.oipf.mippvcontrolmessage+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.pae.gem`: MediaType =
- new MediaType("application", "vnd.oipf.pae.gem", Compressible, NotBinary)
- lazy val `vnd.oipf.spdiscovery+xml`: MediaType =
- new MediaType("application", "vnd.oipf.spdiscovery+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.spdlist+xml`: MediaType =
- new MediaType("application", "vnd.oipf.spdlist+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.ueprofile+xml`: MediaType =
- new MediaType("application", "vnd.oipf.ueprofile+xml", Compressible, NotBinary)
- lazy val `vnd.oipf.userprofile+xml`: MediaType =
- new MediaType("application", "vnd.oipf.userprofile+xml", Compressible, NotBinary)
- lazy val `vnd.olpc-sugar`: MediaType =
- new MediaType("application", "vnd.olpc-sugar", Compressible, NotBinary, List("xo"))
- lazy val `vnd.oma-scws-config`: MediaType =
- new MediaType("application", "vnd.oma-scws-config", Compressible, NotBinary)
- lazy val `vnd.oma-scws-http-request`: MediaType =
- new MediaType("application", "vnd.oma-scws-http-request", Compressible, NotBinary)
- lazy val `vnd.oma-scws-http-response`: MediaType =
- new MediaType("application", "vnd.oma-scws-http-response", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.associated-procedure-parameter+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.motorola.iprm`: MediaType =
+ new MediaType("application", "vnd.motorola.iprm", compressible = false, binary = true)
+
+ lazy val `pkix-attr-cert`: MediaType =
+ new MediaType("application", "pkix-attr-cert", compressible = false, binary = true, List("ac"))
+
+ lazy val `vnd.nokia.n-gage.data`: MediaType =
+ new MediaType("application", "vnd.nokia.n-gage.data", compressible = false, binary = true, List("ngdat"))
+
+ lazy val `index.vnd`: MediaType =
+ new MediaType("application", "index.vnd", compressible = false, binary = true)
+
+ lazy val `trig`: MediaType =
+ new MediaType("application", "trig", compressible = false, binary = true, List("trig"))
+
+ lazy val `vnd.oma.push`: MediaType =
+ new MediaType("application", "vnd.oma.push", compressible = false, binary = true)
+
+ lazy val `tzif-leap`: MediaType =
+ new MediaType("application", "tzif-leap", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp-prose-pc3a+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp-prose-pc3a+xml", compressible = true, binary = true)
+
+ lazy val `dskpp+xml`: MediaType =
+ new MediaType("application", "dskpp+xml", compressible = true, binary = true)
+
+ lazy val `prs.nprend`: MediaType =
+ new MediaType("application", "prs.nprend", compressible = false, binary = true)
+
+ lazy val `vnd.oma.dcd`: MediaType =
+ new MediaType("application", "vnd.oma.dcd", compressible = false, binary = true)
+
+ lazy val `vnd.intercon.formnet`: MediaType =
+ new MediaType("application", "vnd.intercon.formnet", compressible = false, binary = true, List("xpw", "xpx"))
+
+ lazy val `vnd.ms-powerpoint.template.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.oma.bcast.associated-procedure-parameter+xml",
- Compressible,
- NotBinary,
+ "vnd.ms-powerpoint.template.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("potm"),
)
- lazy val `vnd.oma.bcast.drm-trigger+xml`: MediaType =
- new MediaType("application", "vnd.oma.bcast.drm-trigger+xml", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.imd+xml`: MediaType =
- new MediaType("application", "vnd.oma.bcast.imd+xml", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.ltkm`: MediaType =
- new MediaType("application", "vnd.oma.bcast.ltkm", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.notification+xml`: MediaType =
- new MediaType("application", "vnd.oma.bcast.notification+xml", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.provisioningtrigger`: MediaType =
- new MediaType("application", "vnd.oma.bcast.provisioningtrigger", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.sgboot`: MediaType =
- new MediaType("application", "vnd.oma.bcast.sgboot", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.sgdd+xml`: MediaType =
- new MediaType("application", "vnd.oma.bcast.sgdd+xml", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.sgdu`: MediaType =
- new MediaType("application", "vnd.oma.bcast.sgdu", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.simple-symbol-container`: MediaType = new MediaType(
+
+ lazy val `vnd.businessobjects`: MediaType =
+ new MediaType("application", "vnd.businessobjects", compressible = false, binary = true, List("rep"))
+
+ lazy val `vnd.openxmlformats-officedocument.customxmlproperties+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oma.bcast.simple-symbol-container",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.customxmlproperties+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oma.bcast.smartcard-trigger+xml`: MediaType =
- new MediaType("application", "vnd.oma.bcast.smartcard-trigger+xml", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.sprov+xml`: MediaType =
- new MediaType("application", "vnd.oma.bcast.sprov+xml", Compressible, NotBinary)
- lazy val `vnd.oma.bcast.stkm`: MediaType =
- new MediaType("application", "vnd.oma.bcast.stkm", Compressible, NotBinary)
- lazy val `vnd.oma.cab-address-book+xml`: MediaType =
- new MediaType("application", "vnd.oma.cab-address-book+xml", Compressible, NotBinary)
- lazy val `vnd.oma.cab-feature-handler+xml`: MediaType =
- new MediaType("application", "vnd.oma.cab-feature-handler+xml", Compressible, NotBinary)
- lazy val `vnd.oma.cab-pcc+xml`: MediaType =
- new MediaType("application", "vnd.oma.cab-pcc+xml", Compressible, NotBinary)
- lazy val `vnd.oma.cab-subs-invite+xml`: MediaType =
- new MediaType("application", "vnd.oma.cab-subs-invite+xml", Compressible, NotBinary)
- lazy val `vnd.oma.cab-user-prefs+xml`: MediaType =
- new MediaType("application", "vnd.oma.cab-user-prefs+xml", Compressible, NotBinary)
- lazy val `vnd.oma.dcd`: MediaType =
- new MediaType("application", "vnd.oma.dcd", Compressible, NotBinary)
- lazy val `vnd.oma.dcdc`: MediaType =
- new MediaType("application", "vnd.oma.dcdc", Compressible, NotBinary)
- lazy val `vnd.oma.dd2+xml`: MediaType =
- new MediaType("application", "vnd.oma.dd2+xml", Compressible, NotBinary, List("dd2"))
- lazy val `vnd.oma.drm.risd+xml`: MediaType =
- new MediaType("application", "vnd.oma.drm.risd+xml", Compressible, NotBinary)
- lazy val `vnd.oma.group-usage-list+xml`: MediaType =
- new MediaType("application", "vnd.oma.group-usage-list+xml", Compressible, NotBinary)
- lazy val `vnd.oma.lwm2m+cbor`: MediaType =
- new MediaType("application", "vnd.oma.lwm2m+cbor", Compressible, NotBinary)
- lazy val `vnd.oma.lwm2m+json`: MediaType =
- new MediaType("application", "vnd.oma.lwm2m+json", Compressible, NotBinary)
- lazy val `vnd.oma.lwm2m+tlv`: MediaType =
- new MediaType("application", "vnd.oma.lwm2m+tlv", Compressible, NotBinary)
- lazy val `vnd.oma.pal+xml`: MediaType =
- new MediaType("application", "vnd.oma.pal+xml", Compressible, NotBinary)
- lazy val `vnd.oma.poc.detailed-progress-report+xml`: MediaType = new MediaType(
+
+ lazy val `x-sql`: MediaType =
+ new MediaType("application", "x-sql", compressible = false, binary = true, List("sql"))
+
+ lazy val `java-vm`: MediaType =
+ new MediaType("application", "java-vm", compressible = false, binary = true, List("class"))
+
+ lazy val `csrattrs`: MediaType =
+ new MediaType("application", "csrattrs", compressible = false, binary = true)
+
+ lazy val `vnd.groove-injector`: MediaType =
+ new MediaType("application", "vnd.groove-injector", compressible = false, binary = true, List("grv"))
+
+ lazy val `vnd.oma.cab-pcc+xml`: MediaType =
+ new MediaType("application", "vnd.oma.cab-pcc+xml", compressible = true, binary = true)
+
+ lazy val `yang`: MediaType =
+ new MediaType("application", "yang", compressible = false, binary = true, List("yang"))
+
+ lazy val `cstadata+xml`: MediaType =
+ new MediaType("application", "cstadata+xml", compressible = true, binary = true)
+
+ lazy val `vnd.stardivision.math`: MediaType =
+ new MediaType("application", "vnd.stardivision.math", compressible = false, binary = true, List("smf"))
+
+ lazy val `sgml`: MediaType =
+ new MediaType("application", "sgml", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.presprops+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oma.poc.detailed-progress-report+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.presentationml.presprops+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oma.poc.final-report+xml`: MediaType =
- new MediaType("application", "vnd.oma.poc.final-report+xml", Compressible, NotBinary)
- lazy val `vnd.oma.poc.groups+xml`: MediaType =
- new MediaType("application", "vnd.oma.poc.groups+xml", Compressible, NotBinary)
- lazy val `vnd.oma.poc.invocation-descriptor+xml`: MediaType = new MediaType(
+
+ lazy val `a2l`: MediaType =
+ new MediaType("application", "a2l", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.oma.poc.invocation-descriptor+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.oma.poc.optimized-progress-report+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.pmi.widget`: MediaType =
+ new MediaType("application", "vnd.pmi.widget", compressible = false, binary = true, List("wg"))
+
+ lazy val `mac-binhex40`: MediaType =
+ new MediaType("application", "mac-binhex40", compressible = false, binary = true, List("hqx"))
+
+ lazy val `vnd.sealed.net`: MediaType =
+ new MediaType("application", "vnd.sealed.net", compressible = false, binary = true)
+
+ lazy val `vnd.ms-pki.seccat`: MediaType =
+ new MediaType("application", "vnd.ms-pki.seccat", compressible = false, binary = true, List("cat"))
+
+ lazy val `vnd.hal+json`: MediaType =
+ new MediaType("application", "vnd.hal+json", compressible = true, binary = false)
+
+ lazy val `vnd.hdt`: MediaType =
+ new MediaType("application", "vnd.hdt", compressible = false, binary = true)
+
+ lazy val `senml+xml`: MediaType =
+ new MediaType("application", "senml+xml", compressible = true, binary = true, List("senmlx"))
+
+ lazy val `vnd.fujixerox.art-ex`: MediaType =
+ new MediaType("application", "vnd.fujixerox.art-ex", compressible = false, binary = true)
+
+ lazy val `pkix-cert`: MediaType =
+ new MediaType("application", "pkix-cert", compressible = false, binary = true, List("cer"))
+
+ lazy val `vnd.syncml.ds.notification`: MediaType =
+ new MediaType("application", "vnd.syncml.ds.notification", compressible = false, binary = true)
+
+ lazy val `vnd.previewsystems.box`: MediaType =
+ new MediaType("application", "vnd.previewsystems.box", compressible = false, binary = true, List("box"))
+
+ lazy val `vnd.oma.pal+xml`: MediaType =
+ new MediaType("application", "vnd.oma.pal+xml", compressible = true, binary = true)
+
+ lazy val `vnd.irepository.package+xml`: MediaType =
+ new MediaType("application", "vnd.irepository.package+xml", compressible = true, binary = true, List("irp"))
+
+ lazy val `ibe-pkg-reply+xml`: MediaType =
+ new MediaType("application", "ibe-pkg-reply+xml", compressible = true, binary = true)
+
+ lazy val `wita`: MediaType =
+ new MediaType("application", "wita", compressible = false, binary = true)
+
+ lazy val `samlassertion+xml`: MediaType =
+ new MediaType("application", "samlassertion+xml", compressible = true, binary = true)
+
+ lazy val `x-msmetafile`: MediaType =
+ new MediaType(
"application",
- "vnd.oma.poc.optimized-progress-report+xml",
- Compressible,
- NotBinary,
+ "x-msmetafile",
+ compressible = false,
+ binary = true,
+ List("wmf", "wmz", "emf", "emz"),
)
- lazy val `vnd.oma.push`: MediaType =
- new MediaType("application", "vnd.oma.push", Compressible, NotBinary)
- lazy val `vnd.oma.scidm.messages+xml`: MediaType =
- new MediaType("application", "vnd.oma.scidm.messages+xml", Compressible, NotBinary)
- lazy val `vnd.oma.xcap-directory+xml`: MediaType =
- new MediaType("application", "vnd.oma.xcap-directory+xml", Compressible, NotBinary)
- lazy val `vnd.omads-email+xml`: MediaType =
- new MediaType("application", "vnd.omads-email+xml", Compressible, NotBinary)
- lazy val `vnd.omads-file+xml`: MediaType =
- new MediaType("application", "vnd.omads-file+xml", Compressible, NotBinary)
- lazy val `vnd.omads-folder+xml`: MediaType =
- new MediaType("application", "vnd.omads-folder+xml", Compressible, NotBinary)
- lazy val `vnd.omaloc-supl-init`: MediaType =
- new MediaType("application", "vnd.omaloc-supl-init", Compressible, NotBinary)
- lazy val `vnd.onepager`: MediaType =
- new MediaType("application", "vnd.onepager", Compressible, NotBinary)
- lazy val `vnd.onepagertamp`: MediaType =
- new MediaType("application", "vnd.onepagertamp", Compressible, NotBinary)
- lazy val `vnd.onepagertamx`: MediaType =
- new MediaType("application", "vnd.onepagertamx", Compressible, NotBinary)
- lazy val `vnd.onepagertat`: MediaType =
- new MediaType("application", "vnd.onepagertat", Compressible, NotBinary)
- lazy val `vnd.onepagertatp`: MediaType =
- new MediaType("application", "vnd.onepagertatp", Compressible, NotBinary)
- lazy val `vnd.onepagertatx`: MediaType =
- new MediaType("application", "vnd.onepagertatx", Compressible, NotBinary)
- lazy val `vnd.openblox.game+xml`: MediaType =
- new MediaType("application", "vnd.openblox.game+xml", Compressible, NotBinary, List("obgx"))
- lazy val `vnd.openblox.game-binary`: MediaType =
- new MediaType("application", "vnd.openblox.game-binary", Compressible, NotBinary)
- lazy val `vnd.openeye.oeb`: MediaType =
- new MediaType("application", "vnd.openeye.oeb", Compressible, NotBinary)
- lazy val `vnd.openofficeorg.extension`: MediaType = new MediaType(
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.template.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.openofficeorg.extension",
- Compressible,
- NotBinary,
- List("oxt"),
+ "vnd.openxmlformats-officedocument.presentationml.template.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.openstreetmap.data+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.sar`: MediaType =
+ new MediaType("application", "vnd.sar", compressible = false, binary = true)
+
+ lazy val `xml-patch+xml`: MediaType =
+ new MediaType("application", "xml-patch+xml", compressible = true, binary = false)
+
+ lazy val `vnd.ms-project`: MediaType =
+ new MediaType("application", "vnd.ms-project", compressible = false, binary = true, List("mpp", "mpt"))
+
+ lazy val `vnd.picsel`: MediaType =
+ new MediaType("application", "vnd.picsel", compressible = false, binary = true, List("efif"))
+
+ lazy val `vnd.mseq`: MediaType =
+ new MediaType("application", "vnd.mseq", compressible = false, binary = true, List("mseq"))
+
+ lazy val `vnd.balsamiq.bmpr`: MediaType =
+ new MediaType("application", "vnd.balsamiq.bmpr", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcdata-affiliation-command+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-affiliation-command+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oasis.opendocument.image`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.image", compressible = false, binary = true, List("odi"))
+
+ lazy val `vnd.blink-idb-value-wrapper`: MediaType =
+ new MediaType("application", "vnd.blink-idb-value-wrapper", compressible = false, binary = true)
+
+ lazy val `x-x509-ca-ra-cert`: MediaType =
+ new MediaType("application", "x-x509-ca-ra-cert", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.ipdcesgaccess`: MediaType =
+ new MediaType("application", "vnd.dvb.ipdcesgaccess", compressible = false, binary = true)
+
+ lazy val `vnd.jisp`: MediaType =
+ new MediaType("application", "vnd.jisp", compressible = false, binary = true, List("jisp"))
+
+ lazy val `vnd.groove-vcard`: MediaType =
+ new MediaType("application", "vnd.groove-vcard", compressible = false, binary = true, List("vcg"))
+
+ lazy val `vnd.rn-realmedia-vbr`: MediaType =
+ new MediaType("application", "vnd.rn-realmedia-vbr", compressible = false, binary = true, List("rmvb"))
+
+ lazy val `vnd.globalplatform.card-content-mgt-response`: MediaType =
+ new MediaType("application", "vnd.globalplatform.card-content-mgt-response", compressible = false, binary = true)
+
+ lazy val `cea`: MediaType =
+ new MediaType("application", "cea", compressible = false, binary = true)
+
+ lazy val `vnd.oma.scidm.messages+xml`: MediaType =
+ new MediaType("application", "vnd.oma.scidm.messages+xml", compressible = true, binary = true)
+
+ lazy val `timestamped-data`: MediaType =
+ new MediaType("application", "timestamped-data", compressible = false, binary = true, List("tsd"))
+
+ lazy val `vnd.novadigm.edm`: MediaType =
+ new MediaType("application", "vnd.novadigm.edm", compressible = false, binary = true, List("edm"))
+
+ lazy val `vnd.ms-windows.printerpairing`: MediaType =
+ new MediaType("application", "vnd.ms-windows.printerpairing", compressible = false, binary = true)
+
+ lazy val `x-iso9660-image`: MediaType =
+ new MediaType("application", "x-iso9660-image", compressible = false, binary = true, List("iso"))
+
+ lazy val `vnd.informedcontrol.rms+xml`: MediaType =
+ new MediaType("application", "vnd.informedcontrol.rms+xml", compressible = true, binary = true)
+
+ lazy val `dns-message`: MediaType =
+ new MediaType("application", "dns-message", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.openstreetmap.data+xml",
- Compressible,
- NotBinary,
- List("osm"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.openxmlformats-officedocument.custom-properties+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.nitf`: MediaType =
+ new MediaType("application", "vnd.nitf", compressible = false, binary = true, List("ntf", "nitf"))
+
+ lazy val `vnd.wap.slc`: MediaType =
+ new MediaType("application", "vnd.wap.slc", compressible = false, binary = true)
+
+ lazy val `vnd.collabio.xodocuments.presentation`: MediaType =
+ new MediaType("application", "vnd.collabio.xodocuments.presentation", compressible = false, binary = true)
+
+ lazy val `vnd.route66.link66+xml`: MediaType =
+ new MediaType("application", "vnd.route66.link66+xml", compressible = true, binary = true, List("link66"))
+
+ lazy val `vnd.fluxtime.clip`: MediaType =
+ new MediaType("application", "vnd.fluxtime.clip", compressible = false, binary = true, List("ftc"))
+
+ lazy val `vnd.bbf.usp.msg`: MediaType =
+ new MediaType("application", "vnd.bbf.usp.msg", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.notif-ia-msglist+xml`: MediaType =
+ new MediaType("application", "vnd.dvb.notif-ia-msglist+xml", compressible = true, binary = true)
+
+ lazy val `vnd.marlin.drm.mdcf`: MediaType =
+ new MediaType("application", "vnd.marlin.drm.mdcf", compressible = false, binary = true)
+
+ lazy val `vnd.wv.csp+wbxml`: MediaType =
+ new MediaType("application", "vnd.wv.csp+wbxml", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.openxmlformats-officedocument.custom-properties+xml",
- Compressible,
- NotBinary,
+ "vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.openxmlformats-officedocument.customxmlproperties+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.customxmlproperties+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.drawing+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.dreamfactory`: MediaType =
+ new MediaType("application", "vnd.dreamfactory", compressible = false, binary = true, List("dfac"))
+
+ lazy val `vnd.contact.cmsg`: MediaType =
+ new MediaType("application", "vnd.contact.cmsg", compressible = false, binary = true, List("cdbcmsg"))
+
+ lazy val `prs.alvestrand.titrax-sheet`: MediaType =
+ new MediaType("application", "prs.alvestrand.titrax-sheet", compressible = false, binary = true)
+
+ lazy val `vnd.3m.post-it-notes`: MediaType =
+ new MediaType("application", "vnd.3m.post-it-notes", compressible = false, binary = true, List("pwn"))
+
+ lazy val `vnd.collabio.xodocuments.document-template`: MediaType =
+ new MediaType("application", "vnd.collabio.xodocuments.document-template", compressible = false, binary = true)
+
+ lazy val `pem-certificate-chain`: MediaType =
+ new MediaType("application", "pem-certificate-chain", compressible = false, binary = true)
+
+ lazy val `x-bcpio`: MediaType =
+ new MediaType("application", "x-bcpio", compressible = false, binary = true, List("bcpio"))
+
+ lazy val `vnd.ibm.secure-container`: MediaType =
+ new MediaType("application", "vnd.ibm.secure-container", compressible = false, binary = true, List("sc"))
+
+ lazy val `vnd.microsoft.windows.thumbnail-cache`: MediaType =
+ new MediaType("application", "vnd.microsoft.windows.thumbnail-cache", compressible = false, binary = true)
+
+ lazy val `x-gzip`: MediaType =
+ new MediaType("application", "x-gzip", compressible = false, binary = true)
+
+ lazy val `jf2feed+json`: MediaType =
+ new MediaType("application", "jf2feed+json", compressible = true, binary = false)
+
+ lazy val `vnd.3gpp.mcptt-service-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcptt-service-config+xml", compressible = true, binary = true)
+
+ lazy val `vnd.iptc.g2.planningitem+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.planningitem+xml", compressible = true, binary = true)
+
+ lazy val `conference-info+xml`: MediaType =
+ new MediaType("application", "conference-info+xml", compressible = true, binary = true)
+
+ lazy val `x-dtbncx+xml`: MediaType =
+ new MediaType("application", "x-dtbncx+xml", compressible = true, binary = true, List("ncx"))
+
+ lazy val `x-web-app-manifest+json`: MediaType =
+ new MediaType("application", "x-web-app-manifest+json", compressible = true, binary = false, List("webapp"))
+
+ lazy val `p21+zip`: MediaType =
+ new MediaType("application", "p21+zip", compressible = false, binary = true)
+
+ lazy val `vnd.ntt-local.file-transfer`: MediaType =
+ new MediaType("application", "vnd.ntt-local.file-transfer", compressible = false, binary = true)
+
+ lazy val `vnd.ms-excel`: MediaType =
+ new MediaType(
"application",
- "vnd.openxmlformats-officedocument.drawing+xml",
- Compressible,
- NotBinary,
+ "vnd.ms-excel",
+ compressible = false,
+ binary = true,
+ List("xls", "xlm", "xla", "xlc", "xlt", "xlw"),
)
- lazy val `vnd.openxmlformats-officedocument.drawingml.chart+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.drawingml.chart+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.drawingml.chartshapes+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.drawingml.chartshapes+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.drawingml.diagramdata+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.drawingml.diagramdata+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.extended-properties+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.extended-properties+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.commentauthors+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.commentauthors+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.comments+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.comments+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.notesmaster+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.notesmaster+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.notesslide+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.notesslide+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.presentation`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.presentation",
- Uncompressible,
- Binary,
- List("pptx"),
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.presentation.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.presentation.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.presprops+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.presprops+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slide`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slide",
- Compressible,
- Binary,
- List("sldx"),
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slide+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slide+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slidelayout+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slidelayout+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slidemaster+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slidemaster+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slideshow`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slideshow",
- Compressible,
- Binary,
- List("ppsx"),
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.tablestyles+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.tablestyles+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.tags+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.tags+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.template`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.template",
- Compressible,
- Binary,
- List("potx"),
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.template.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.template.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.presentationml.viewprops+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.presentationml.viewprops+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.comments+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.connections+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.connections+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sheet`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.sheet",
- Uncompressible,
- Binary,
- List("xlsx"),
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.styles+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.table+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.table+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.template`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.template",
- Compressible,
- Binary,
- List("xltx"),
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.theme+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.theme+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.themeoverride+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.themeoverride+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.vmldrawing`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.vmldrawing",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.comments+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.comments+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.document`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.document",
- Uncompressible,
- Binary,
- List("docx"),
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.footer+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.footer+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.settings+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.settings+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.styles+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.styles+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.template`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.template",
- Compressible,
- Binary,
- List("dotx"),
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-package.core-properties+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-package.core-properties+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-package.digital-signature-xmlsignature+xml`: MediaType =
- new MediaType(
- "application",
- "vnd.openxmlformats-package.digital-signature-xmlsignature+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.openxmlformats-package.relationships+xml`: MediaType = new MediaType(
- "application",
- "vnd.openxmlformats-package.relationships+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.oracle.resource+json`: MediaType =
- new MediaType("application", "vnd.oracle.resource+json", Compressible, NotBinary)
- lazy val `vnd.orange.indata`: MediaType =
- new MediaType("application", "vnd.orange.indata", Compressible, NotBinary)
- lazy val `vnd.osa.netdeploy`: MediaType =
- new MediaType("application", "vnd.osa.netdeploy", Compressible, NotBinary)
- lazy val `vnd.osgeo.mapguide.package`: MediaType = new MediaType(
- "application",
- "vnd.osgeo.mapguide.package",
- Compressible,
- NotBinary,
- List("mgp"),
- )
- lazy val `vnd.osgi.bundle`: MediaType =
- new MediaType("application", "vnd.osgi.bundle", Compressible, NotBinary)
- lazy val `vnd.osgi.dp`: MediaType =
- new MediaType("application", "vnd.osgi.dp", Compressible, NotBinary, List("dp"))
- lazy val `vnd.osgi.subsystem`: MediaType =
- new MediaType("application", "vnd.osgi.subsystem", Compressible, NotBinary, List("esa"))
- lazy val `vnd.otps.ct-kip+xml`: MediaType =
- new MediaType("application", "vnd.otps.ct-kip+xml", Compressible, NotBinary)
- lazy val `vnd.oxli.countgraph`: MediaType =
- new MediaType("application", "vnd.oxli.countgraph", Compressible, NotBinary)
- lazy val `vnd.pagerduty+json`: MediaType =
- new MediaType("application", "vnd.pagerduty+json", Compressible, NotBinary)
- lazy val `vnd.palm`: MediaType = new MediaType(
- "application",
- "vnd.palm",
- Compressible,
- NotBinary,
- List("pdb", "pqa", "oprc"),
- )
- lazy val `vnd.panoply`: MediaType =
- new MediaType("application", "vnd.panoply", Compressible, NotBinary)
- lazy val `vnd.paos.xml`: MediaType =
- new MediaType("application", "vnd.paos.xml", Compressible, NotBinary)
- lazy val `vnd.patentdive`: MediaType =
- new MediaType("application", "vnd.patentdive", Compressible, NotBinary)
- lazy val `vnd.patientecommsdoc`: MediaType =
- new MediaType("application", "vnd.patientecommsdoc", Compressible, NotBinary)
- lazy val `vnd.pawaafile`: MediaType =
- new MediaType("application", "vnd.pawaafile", Compressible, NotBinary, List("paw"))
- lazy val `vnd.pcos`: MediaType =
- new MediaType("application", "vnd.pcos", Compressible, NotBinary)
- lazy val `vnd.pg.format`: MediaType =
- new MediaType("application", "vnd.pg.format", Compressible, NotBinary, List("str"))
- lazy val `vnd.pg.osasli`: MediaType =
- new MediaType("application", "vnd.pg.osasli", Compressible, NotBinary, List("ei6"))
- lazy val `vnd.piaccess.application-licence`: MediaType =
- new MediaType("application", "vnd.piaccess.application-licence", Compressible, NotBinary)
- lazy val `vnd.picsel`: MediaType =
- new MediaType("application", "vnd.picsel", Compressible, NotBinary, List("efif"))
- lazy val `vnd.pmi.widget`: MediaType =
- new MediaType("application", "vnd.pmi.widget", Compressible, NotBinary, List("wg"))
- lazy val `vnd.poc.group-advertisement+xml`: MediaType =
- new MediaType("application", "vnd.poc.group-advertisement+xml", Compressible, NotBinary)
- lazy val `vnd.pocketlearn`: MediaType =
- new MediaType("application", "vnd.pocketlearn", Compressible, NotBinary, List("plf"))
- lazy val `vnd.powerbuilder6`: MediaType =
- new MediaType("application", "vnd.powerbuilder6", Compressible, NotBinary, List("pbd"))
- lazy val `vnd.powerbuilder6-s`: MediaType =
- new MediaType("application", "vnd.powerbuilder6-s", Compressible, NotBinary)
- lazy val `vnd.powerbuilder7`: MediaType =
- new MediaType("application", "vnd.powerbuilder7", Compressible, NotBinary)
- lazy val `vnd.powerbuilder7-s`: MediaType =
- new MediaType("application", "vnd.powerbuilder7-s", Compressible, NotBinary)
- lazy val `vnd.powerbuilder75`: MediaType =
- new MediaType("application", "vnd.powerbuilder75", Compressible, NotBinary)
- lazy val `vnd.powerbuilder75-s`: MediaType =
- new MediaType("application", "vnd.powerbuilder75-s", Compressible, NotBinary)
- lazy val `vnd.preminet`: MediaType =
- new MediaType("application", "vnd.preminet", Compressible, NotBinary)
- lazy val `vnd.previewsystems.box`: MediaType =
- new MediaType("application", "vnd.previewsystems.box", Compressible, NotBinary, List("box"))
- lazy val `vnd.proteus.magazine`: MediaType =
- new MediaType("application", "vnd.proteus.magazine", Compressible, NotBinary, List("mgz"))
- lazy val `vnd.psfs`: MediaType =
- new MediaType("application", "vnd.psfs", Compressible, NotBinary)
- lazy val `vnd.publishare-delta-tree`: MediaType = new MediaType(
- "application",
- "vnd.publishare-delta-tree",
- Compressible,
- NotBinary,
- List("qps"),
- )
- lazy val `vnd.pvi.ptid1`: MediaType =
- new MediaType("application", "vnd.pvi.ptid1", Compressible, NotBinary, List("ptid"))
- lazy val `vnd.pwg-multiplexed`: MediaType =
- new MediaType("application", "vnd.pwg-multiplexed", Compressible, NotBinary)
- lazy val `vnd.pwg-xhtml-print+xml`: MediaType =
- new MediaType("application", "vnd.pwg-xhtml-print+xml", Compressible, NotBinary)
- lazy val `vnd.qualcomm.brew-app-res`: MediaType =
- new MediaType("application", "vnd.qualcomm.brew-app-res", Compressible, NotBinary)
- lazy val `vnd.quarantainenet`: MediaType =
- new MediaType("application", "vnd.quarantainenet", Compressible, NotBinary)
- lazy val `vnd.quark.quarkxpress`: MediaType = new MediaType(
- "application",
- "vnd.quark.quarkxpress",
- Compressible,
- NotBinary,
- List("qxd", "qxt", "qwd", "qwt", "qxl", "qxb"),
- )
- lazy val `vnd.quobject-quoxdocument`: MediaType =
- new MediaType("application", "vnd.quobject-quoxdocument", Compressible, NotBinary)
- lazy val `vnd.radisys.moml+xml`: MediaType =
- new MediaType("application", "vnd.radisys.moml+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-audit+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-audit+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-audit-conf+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-audit-conf+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-audit-conn+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-audit-conn+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-audit-dialog+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-audit-dialog+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-audit-stream+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-audit-stream+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-conf+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-conf+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-dialog+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-dialog+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-dialog-base+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-dialog-base+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-dialog-fax-detect+xml`: MediaType = new MediaType(
- "application",
- "vnd.radisys.msml-dialog-fax-detect+xml",
- Compressible,
- NotBinary,
- )
- lazy val `vnd.radisys.msml-dialog-fax-sendrecv+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.symbian.install`: MediaType =
+ new MediaType("application", "vnd.symbian.install", compressible = false, binary = true, List("sis", "sisx"))
+
+ lazy val `x-netcdf`: MediaType =
+ new MediaType("application", "x-netcdf", compressible = false, binary = true, List("nc", "cdf"))
+
+ lazy val `vnd.grafeq`: MediaType =
+ new MediaType("application", "vnd.grafeq", compressible = false, binary = true, List("gqf", "gqs"))
+
+ lazy val `atomsvc+xml`: MediaType =
+ new MediaType("application", "atomsvc+xml", compressible = true, binary = true, List("atomsvc"))
+
+ lazy val `mf4`: MediaType =
+ new MediaType("application", "mf4", compressible = false, binary = true)
+
+ lazy val `vnd.sema`: MediaType =
+ new MediaType("application", "vnd.sema", compressible = false, binary = true, List("sema"))
+
+ lazy val `vnd.minisoft-hp3000-save`: MediaType =
+ new MediaType("application", "vnd.minisoft-hp3000-save", compressible = false, binary = true)
+
+ lazy val `vnd.recordare.musicxml+xml`: MediaType =
+ new MediaType("application", "vnd.recordare.musicxml+xml", compressible = true, binary = true, List("musicxml"))
+
+ lazy val `vnd.3gpp.mcvideo-user-profile+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcvideo-user-profile+xml", compressible = true, binary = true)
+
+ lazy val `xhtml-voice+xml`: MediaType =
+ new MediaType("application", "xhtml-voice+xml", compressible = true, binary = true)
+
+ lazy val `vnd.iptc.g2.knowledgeitem+xml`: MediaType =
+ new MediaType("application", "vnd.iptc.g2.knowledgeitem+xml", compressible = true, binary = true)
+
+ lazy val `taxii+json`: MediaType =
+ new MediaType("application", "taxii+json", compressible = true, binary = false)
+
+ lazy val `vnd.accpac.simply.imp`: MediaType =
+ new MediaType("application", "vnd.accpac.simply.imp", compressible = false, binary = true, List("imp"))
+
+ lazy val `vnd.ms-outlook`: MediaType =
+ new MediaType("application", "vnd.ms-outlook", compressible = false, binary = true, List("msg"))
+
+ lazy val `x-cdlink`: MediaType =
+ new MediaType("application", "x-cdlink", compressible = false, binary = true, List("vcd"))
+
+ lazy val `vnd.software602.filler.form-xml-zip`: MediaType =
+ new MediaType("application", "vnd.software602.filler.form-xml-zip", compressible = false, binary = true)
+
+ lazy val `vnd.ecdis-update`: MediaType =
+ new MediaType("application", "vnd.ecdis-update", compressible = false, binary = true)
+
+ lazy val `vnd.wolfram.player`: MediaType =
+ new MediaType("application", "vnd.wolfram.player", compressible = false, binary = true, List("nbp"))
+
+ lazy val `mbms-register+xml`: MediaType =
+ new MediaType("application", "mbms-register+xml", compressible = true, binary = true)
+
+ lazy val `vnd.radisys.moml+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.moml+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.interworking-data`: MediaType =
+ new MediaType("application", "vnd.3gpp.interworking-data", compressible = false, binary = true)
+
+ lazy val `vnd.stardivision.calc`: MediaType =
+ new MediaType("application", "vnd.stardivision.calc", compressible = false, binary = true, List("sdc"))
+
+ lazy val `x-font-speedo`: MediaType =
+ new MediaType("application", "x-font-speedo", compressible = false, binary = true)
+
+ lazy val `vnd.proteus.magazine`: MediaType =
+ new MediaType("application", "vnd.proteus.magazine", compressible = false, binary = true, List("mgz"))
+
+ lazy val `sbml+xml`: MediaType =
+ new MediaType("application", "sbml+xml", compressible = true, binary = true, List("sbml"))
+
+ lazy val `vnd.amazon.mobi8-ebook`: MediaType =
+ new MediaType("application", "vnd.amazon.mobi8-ebook", compressible = false, binary = true)
+
+ lazy val `vnd.ms-3mfdocument`: MediaType =
+ new MediaType("application", "vnd.ms-3mfdocument", compressible = false, binary = true)
+
+ lazy val `vnd.dece.data`: MediaType =
+ new MediaType(
"application",
- "vnd.radisys.msml-dialog-fax-sendrecv+xml",
- Compressible,
- NotBinary,
+ "vnd.dece.data",
+ compressible = false,
+ binary = true,
+ List("uvf", "uvvf", "uvd", "uvvd"),
)
- lazy val `vnd.radisys.msml-dialog-group+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-dialog-group+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-dialog-speech+xml`: MediaType =
- new MediaType("application", "vnd.radisys.msml-dialog-speech+xml", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-dialog-transform+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.oma.bcast.imd+xml`: MediaType =
+ new MediaType("application", "vnd.oma.bcast.imd+xml", compressible = true, binary = true)
+
+ lazy val `vnd.doremir.scorecloud-binary-document`: MediaType =
+ new MediaType("application", "vnd.doremir.scorecloud-binary-document", compressible = false, binary = true)
+
+ lazy val `x-hdf`: MediaType =
+ new MediaType("application", "x-hdf", compressible = false, binary = true, List("hdf"))
+
+ lazy val `vnd.ms-excel.sheet.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.radisys.msml-dialog-transform+xml",
- Compressible,
- NotBinary,
+ "vnd.ms-excel.sheet.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("xlsm"),
)
- lazy val `vnd.rainstor.data`: MediaType =
- new MediaType("application", "vnd.rainstor.data", Compressible, NotBinary)
- lazy val `vnd.rapid`: MediaType =
- new MediaType("application", "vnd.rapid", Compressible, NotBinary)
- lazy val `vnd.rar`: MediaType =
- new MediaType("application", "vnd.rar", Compressible, NotBinary, List("rar"))
- lazy val `vnd.realvnc.bed`: MediaType =
- new MediaType("application", "vnd.realvnc.bed", Compressible, NotBinary, List("bed"))
- lazy val `vnd.recordare.musicxml`: MediaType =
- new MediaType("application", "vnd.recordare.musicxml", Compressible, NotBinary, List("mxl"))
- lazy val `vnd.recordare.musicxml+xml`: MediaType = new MediaType(
+
+ lazy val `dvcs`: MediaType =
+ new MediaType("application", "dvcs", compressible = false, binary = true)
+
+ lazy val `vnd.vel+json`: MediaType =
+ new MediaType("application", "vnd.vel+json", compressible = true, binary = false)
+
+ lazy val `vnd.mobius.mqy`: MediaType =
+ new MediaType("application", "vnd.mobius.mqy", compressible = false, binary = true, List("mqy"))
+
+ lazy val `vnd.3gpp.vae-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.vae-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.syncml.dm+wbxml`: MediaType =
+ new MediaType("application", "vnd.syncml.dm+wbxml", compressible = false, binary = true, List("bdm"))
+
+ lazy val `vnd.etsi.asic-e+zip`: MediaType =
+ new MediaType("application", "vnd.etsi.asic-e+zip", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.commentauthors+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.recordare.musicxml+xml",
- Compressible,
- NotBinary,
- List("musicxml"),
+ "vnd.openxmlformats-officedocument.presentationml.commentauthors+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.renlearn.rlprint`: MediaType =
- new MediaType("application", "vnd.renlearn.rlprint", Compressible, NotBinary)
- lazy val `vnd.resilient.logic`: MediaType =
- new MediaType("application", "vnd.resilient.logic", Compressible, NotBinary)
- lazy val `vnd.restful+json`: MediaType =
- new MediaType("application", "vnd.restful+json", Compressible, NotBinary)
- lazy val `vnd.rig.cryptonote`: MediaType = new MediaType(
+
+ lazy val `vnd.ms-printschematicket+xml`: MediaType =
+ new MediaType("application", "vnd.ms-printschematicket+xml", compressible = true, binary = true)
+
+ lazy val `aif+json`: MediaType =
+ new MediaType("application", "aif+json", compressible = true, binary = false)
+
+ lazy val `vnd.isac.fcs`: MediaType =
+ new MediaType("application", "vnd.isac.fcs", compressible = false, binary = true, List("fcs"))
+
+ lazy val `vnd.eprints.data+xml`: MediaType =
+ new MediaType("application", "vnd.eprints.data+xml", compressible = true, binary = true)
+
+ lazy val `mp21`: MediaType =
+ new MediaType("application", "mp21", compressible = false, binary = true, List("m21", "mp21"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.comments+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.rig.cryptonote",
- Compressible,
- NotBinary,
- List("cryptonote"),
+ "vnd.openxmlformats-officedocument.presentationml.comments+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.rim.cod`: MediaType =
- new MediaType("application", "vnd.rim.cod", Compressible, NotBinary, List("cod"))
- lazy val `vnd.rn-realmedia`: MediaType =
- new MediaType("application", "vnd.rn-realmedia", Compressible, NotBinary, List("rm"))
- lazy val `vnd.rn-realmedia-vbr`: MediaType =
- new MediaType("application", "vnd.rn-realmedia-vbr", Compressible, NotBinary, List("rmvb"))
- lazy val `vnd.route66.link66+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.openofficeorg.extension`: MediaType =
+ new MediaType("application", "vnd.openofficeorg.extension", compressible = false, binary = true, List("oxt"))
+
+ lazy val `vnd.syncml.dmtnds+xml`: MediaType =
+ new MediaType("application", "vnd.syncml.dmtnds+xml", compressible = true, binary = true)
+
+ lazy val `x-msdos-program`: MediaType =
+ new MediaType("application", "x-msdos-program", compressible = false, binary = true, List("exe"))
+
+ lazy val `vnd.micrografx.flo`: MediaType =
+ new MediaType("application", "vnd.micrografx.flo", compressible = false, binary = true, List("flo"))
+
+ lazy val `vnd.bekitzur-stech+json`: MediaType =
+ new MediaType("application", "vnd.bekitzur-stech+json", compressible = true, binary = false)
+
+ lazy val `dns`: MediaType =
+ new MediaType("application", "dns", compressible = false, binary = true)
+
+ lazy val `x-bittorrent`: MediaType =
+ new MediaType("application", "x-bittorrent", compressible = false, binary = true, List("torrent"))
+
+ lazy val `vnd.oipf.contentaccessdownload+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.contentaccessdownload+xml", compressible = true, binary = true)
+
+ lazy val `edifact`: MediaType =
+ new MediaType("application", "edifact", compressible = false, binary = true)
+
+ lazy val `vnd.cups-pdf`: MediaType =
+ new MediaType("application", "vnd.cups-pdf", compressible = false, binary = true)
+
+ lazy val `vnd.oxli.countgraph`: MediaType =
+ new MediaType("application", "vnd.oxli.countgraph", compressible = false, binary = true)
+
+ lazy val `vnd.espass-espass+zip`: MediaType =
+ new MediaType("application", "vnd.espass-espass+zip", compressible = false, binary = true)
+
+ lazy val `thraud+xml`: MediaType =
+ new MediaType("application", "thraud+xml", compressible = true, binary = true, List("tfi"))
+
+ lazy val `alto-networkmap+json`: MediaType =
+ new MediaType("application", "alto-networkmap+json", compressible = true, binary = false)
+
+ lazy val `sensml-exi`: MediaType =
+ new MediaType("application", "sensml-exi", compressible = false, binary = true)
+
+ lazy val `wsdl+xml`: MediaType =
+ new MediaType("application", "wsdl+xml", compressible = true, binary = true, List("wsdl"))
+
+ lazy val `nlsml+xml`: MediaType =
+ new MediaType("application", "nlsml+xml", compressible = true, binary = true)
+
+ lazy val `tamp-status-query`: MediaType =
+ new MediaType("application", "tamp-status-query", compressible = false, binary = true)
+
+ lazy val `vnd.sealedmedia.softseal.pdf`: MediaType =
+ new MediaType("application", "vnd.sealedmedia.softseal.pdf", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.esgcontainer`: MediaType =
+ new MediaType("application", "vnd.dvb.esgcontainer", compressible = false, binary = true)
+
+ lazy val `vnd.oasis.opendocument.chart`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.chart", compressible = false, binary = true, List("odc"))
+
+ lazy val `vnd.osgi.bundle`: MediaType =
+ new MediaType("application", "vnd.osgi.bundle", compressible = false, binary = true)
+
+ lazy val `mathml+xml`: MediaType =
+ new MediaType("application", "mathml+xml", compressible = true, binary = true, List("mathml"))
+
+ lazy val `oda`: MediaType =
+ new MediaType("application", "oda", compressible = false, binary = true, List("oda"))
+
+ lazy val `vnd.oma.poc.optimized-progress-report+xml`: MediaType =
+ new MediaType("application", "vnd.oma.poc.optimized-progress-report+xml", compressible = true, binary = true)
+
+ lazy val `scvp-cv-request`: MediaType =
+ new MediaType("application", "scvp-cv-request", compressible = false, binary = true, List("scq"))
+
+ lazy val `vnd.maxar.archive.3tz+zip`: MediaType =
+ new MediaType("application", "vnd.maxar.archive.3tz+zip", compressible = false, binary = true)
+
+ lazy val `vnd.airzip.filesecure.azf`: MediaType =
+ new MediaType("application", "vnd.airzip.filesecure.azf", compressible = false, binary = true, List("azf"))
+
+ lazy val `vnd.oasis.opendocument.database`: MediaType =
+ new MediaType("application", "vnd.oasis.opendocument.database", compressible = false, binary = true, List("odb"))
+
+ lazy val `vnd.powerbuilder75`: MediaType =
+ new MediaType("application", "vnd.powerbuilder75", compressible = false, binary = true)
+
+ lazy val `ssml+xml`: MediaType =
+ new MediaType("application", "ssml+xml", compressible = true, binary = true, List("ssml"))
+
+ lazy val `vnd.openxmlformats-officedocument.drawingml.chartshapes+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.route66.link66+xml",
- Compressible,
- NotBinary,
- List("link66"),
+ "vnd.openxmlformats-officedocument.drawingml.chartshapes+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.rs-274x`: MediaType =
- new MediaType("application", "vnd.rs-274x", Compressible, NotBinary)
- lazy val `vnd.ruckus.download`: MediaType =
- new MediaType("application", "vnd.ruckus.download", Compressible, NotBinary)
- lazy val `vnd.s3sms`: MediaType =
- new MediaType("application", "vnd.s3sms", Compressible, NotBinary)
- lazy val `vnd.sailingtracker.track`: MediaType = new MediaType(
+
+ lazy val `dots+cbor`: MediaType =
+ new MediaType("application", "dots+cbor", compressible = false, binary = true)
+
+ lazy val `alto-endpointpropparams+json`: MediaType =
+ new MediaType("application", "alto-endpointpropparams+json", compressible = true, binary = false)
+
+ lazy val `x-tads`: MediaType =
+ new MediaType("application", "x-tads", compressible = false, binary = true, List("gam"))
+
+ lazy val `rdap+json`: MediaType =
+ new MediaType("application", "rdap+json", compressible = true, binary = false)
+
+ lazy val `metalink4+xml`: MediaType =
+ new MediaType("application", "metalink4+xml", compressible = true, binary = true, List("meta4"))
+
+ lazy val `vnd.geocube+xml`: MediaType =
+ new MediaType("application", "vnd.geocube+xml", compressible = true, binary = true)
+
+ lazy val `3gpphalforms+json`: MediaType =
+ new MediaType("application", "3gpphalforms+json", compressible = true, binary = false)
+
+ lazy val `vnd.coffeescript`: MediaType =
+ new MediaType("application", "vnd.coffeescript", compressible = false, binary = true)
+
+ lazy val `vnd.stardivision.writer-global`: MediaType =
+ new MediaType("application", "vnd.stardivision.writer-global", compressible = false, binary = true, List("sgl"))
+
+ lazy val `vnd.openxmlformats-officedocument.wordprocessingml.comments+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.sailingtracker.track",
- Compressible,
- NotBinary,
- List("st"),
+ "vnd.openxmlformats-officedocument.wordprocessingml.comments+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.sar`: MediaType =
- new MediaType("application", "vnd.sar", Compressible, NotBinary)
- lazy val `vnd.sbm.cid`: MediaType =
- new MediaType("application", "vnd.sbm.cid", Compressible, NotBinary)
- lazy val `vnd.sbm.mid2`: MediaType =
- new MediaType("application", "vnd.sbm.mid2", Compressible, NotBinary)
- lazy val `vnd.scribus`: MediaType =
- new MediaType("application", "vnd.scribus", Compressible, NotBinary)
- lazy val `vnd.sealed.3df`: MediaType =
- new MediaType("application", "vnd.sealed.3df", Compressible, NotBinary)
- lazy val `vnd.sealed.csf`: MediaType =
- new MediaType("application", "vnd.sealed.csf", Compressible, NotBinary)
- lazy val `vnd.sealed.doc`: MediaType =
- new MediaType("application", "vnd.sealed.doc", Compressible, NotBinary)
- lazy val `vnd.sealed.eml`: MediaType =
- new MediaType("application", "vnd.sealed.eml", Compressible, NotBinary)
- lazy val `vnd.sealed.mht`: MediaType =
- new MediaType("application", "vnd.sealed.mht", Compressible, NotBinary)
- lazy val `vnd.sealed.net`: MediaType =
- new MediaType("application", "vnd.sealed.net", Compressible, NotBinary)
- lazy val `vnd.sealed.ppt`: MediaType =
- new MediaType("application", "vnd.sealed.ppt", Compressible, NotBinary)
- lazy val `vnd.sealed.tiff`: MediaType =
- new MediaType("application", "vnd.sealed.tiff", Compressible, NotBinary)
- lazy val `vnd.sealed.xls`: MediaType =
- new MediaType("application", "vnd.sealed.xls", Compressible, NotBinary)
- lazy val `vnd.sealedmedia.softseal.html`: MediaType =
- new MediaType("application", "vnd.sealedmedia.softseal.html", Compressible, NotBinary)
- lazy val `vnd.sealedmedia.softseal.pdf`: MediaType =
- new MediaType("application", "vnd.sealedmedia.softseal.pdf", Compressible, NotBinary)
- lazy val `vnd.seemail`: MediaType =
- new MediaType("application", "vnd.seemail", Compressible, NotBinary, List("see"))
- lazy val `vnd.seis+json`: MediaType =
- new MediaType("application", "vnd.seis+json", Compressible, NotBinary)
- lazy val `vnd.sema`: MediaType =
- new MediaType("application", "vnd.sema", Compressible, NotBinary, List("sema"))
- lazy val `vnd.semd`: MediaType =
- new MediaType("application", "vnd.semd", Compressible, NotBinary, List("semd"))
- lazy val `vnd.semf`: MediaType =
- new MediaType("application", "vnd.semf", Compressible, NotBinary, List("semf"))
- lazy val `vnd.shade-save-file`: MediaType =
- new MediaType("application", "vnd.shade-save-file", Compressible, NotBinary)
- lazy val `vnd.shana.informed.formdata`: MediaType = new MediaType(
+
+ lazy val `vnd.geo+json`: MediaType =
+ new MediaType("application", "vnd.geo+json", compressible = true, binary = false)
+
+ lazy val `vnd.sun.xml.calc.template`: MediaType =
+ new MediaType("application", "vnd.sun.xml.calc.template", compressible = false, binary = true, List("stc"))
+
+ lazy val `x-msdownload`: MediaType =
+ new MediaType(
"application",
- "vnd.shana.informed.formdata",
- Compressible,
- NotBinary,
- List("ifm"),
+ "x-msdownload",
+ compressible = false,
+ binary = true,
+ List("exe", "dll", "com", "bat", "msi"),
)
- lazy val `vnd.shana.informed.formtemplate`: MediaType = new MediaType(
+
+ lazy val `vnd.pocketlearn`: MediaType =
+ new MediaType("application", "vnd.pocketlearn", compressible = false, binary = true, List("plf"))
+
+ lazy val `x-lua-bytecode`: MediaType =
+ new MediaType("application", "x-lua-bytecode", compressible = false, binary = true, List("luac"))
+
+ lazy val `vnd.gpxsee.map+xml`: MediaType =
+ new MediaType("application", "vnd.gpxsee.map+xml", compressible = true, binary = true)
+
+ lazy val `vnd.geoplan`: MediaType =
+ new MediaType("application", "vnd.geoplan", compressible = false, binary = true, List("g2w"))
+
+ lazy val `resource-lists-diff+xml`: MediaType =
+ new MediaType("application", "resource-lists-diff+xml", compressible = true, binary = true, List("rld"))
+
+ lazy val `vnd.qualcomm.brew-app-res`: MediaType =
+ new MediaType("application", "vnd.qualcomm.brew-app-res", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.iptv.alfec-enhancement`: MediaType =
+ new MediaType("application", "vnd.dvb.iptv.alfec-enhancement", compressible = false, binary = true)
+
+ lazy val `vnd.groove-help`: MediaType =
+ new MediaType("application", "vnd.groove-help", compressible = false, binary = true, List("ghf"))
+
+ lazy val `vnd.iso11783-10+zip`: MediaType =
+ new MediaType("application", "vnd.iso11783-10+zip", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.sms`: MediaType =
+ new MediaType("application", "vnd.3gpp.sms", compressible = false, binary = true)
+
+ lazy val `vnd.fsc.weblaunch`: MediaType =
+ new MediaType("application", "vnd.fsc.weblaunch", compressible = false, binary = true, List("fsc"))
+
+ lazy val `vnd.quarantainenet`: MediaType =
+ new MediaType("application", "vnd.quarantainenet", compressible = false, binary = true)
+
+ lazy val `vnd.gentoo.ebuild`: MediaType =
+ new MediaType("application", "vnd.gentoo.ebuild", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.ipdcroaming`: MediaType =
+ new MediaType("application", "vnd.dvb.ipdcroaming", compressible = false, binary = true)
+
+ lazy val `vnd.byu.uapi+json`: MediaType =
+ new MediaType("application", "vnd.byu.uapi+json", compressible = true, binary = false)
+
+ lazy val `vnd.oma.dcdc`: MediaType =
+ new MediaType("application", "vnd.oma.dcdc", compressible = false, binary = true)
+
+ lazy val `express`: MediaType =
+ new MediaType("application", "express", compressible = false, binary = true, List("exp"))
+
+ lazy val `vnd.ms-cab-compressed`: MediaType =
+ new MediaType("application", "vnd.ms-cab-compressed", compressible = false, binary = true, List("cab"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.comments+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.shana.informed.formtemplate",
- Compressible,
- NotBinary,
- List("itp"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.shana.informed.interchange`: MediaType = new MediaType(
+
+ lazy val `link-format`: MediaType =
+ new MediaType("application", "link-format", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.seal-location-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.seal-location-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.pg.format`: MediaType =
+ new MediaType("application", "vnd.pg.format", compressible = false, binary = true, List("str"))
+
+ lazy val `vnd.3gpp.pic-bw-large`: MediaType =
+ new MediaType("application", "vnd.3gpp.pic-bw-large", compressible = false, binary = true, List("plb"))
+
+ lazy val `vnd.etsi.mcid+xml`: MediaType =
+ new MediaType("application", "vnd.etsi.mcid+xml", compressible = true, binary = true)
+
+ lazy val `vnd.kidspiration`: MediaType =
+ new MediaType("application", "vnd.kidspiration", compressible = false, binary = true, List("kia"))
+
+ lazy val `x-research-info-systems`: MediaType =
+ new MediaType("application", "x-research-info-systems", compressible = false, binary = true, List("ris"))
+
+ lazy val `vnd.meridian-slingshot`: MediaType =
+ new MediaType("application", "vnd.meridian-slingshot", compressible = false, binary = true)
+
+ lazy val `vnd.restful+json`: MediaType =
+ new MediaType("application", "vnd.restful+json", compressible = true, binary = false)
+
+ lazy val `fdf`: MediaType =
+ new MediaType("application", "fdf", compressible = false, binary = true, List("fdf"))
+
+ lazy val `vnd.gentoo.pkgmetadata+xml`: MediaType =
+ new MediaType("application", "vnd.gentoo.pkgmetadata+xml", compressible = true, binary = true)
+
+ lazy val `vnd.accpac.simply.aso`: MediaType =
+ new MediaType("application", "vnd.accpac.simply.aso", compressible = false, binary = true, List("aso"))
+
+ lazy val `vnd.immervision-ivu`: MediaType =
+ new MediaType("application", "vnd.immervision-ivu", compressible = false, binary = true, List("ivu"))
+
+ lazy val `vnd.crick.clicker.palette`: MediaType =
+ new MediaType("application", "vnd.crick.clicker.palette", compressible = false, binary = true, List("clkp"))
+
+ lazy val `atsc-rdt+json`: MediaType =
+ new MediaType("application", "atsc-rdt+json", compressible = true, binary = false)
+
+ lazy val `vnd.astraea-software.iota`: MediaType =
+ new MediaType("application", "vnd.astraea-software.iota", compressible = false, binary = true, List("iota"))
+
+ lazy val `vnd.motorola.flexsuite.gotap`: MediaType =
+ new MediaType("application", "vnd.motorola.flexsuite.gotap", compressible = false, binary = true)
+
+ lazy val `vnd.dpgraph`: MediaType =
+ new MediaType("application", "vnd.dpgraph", compressible = false, binary = true, List("dpg"))
+
+ lazy val `vnd.genomatix.tuxedo`: MediaType =
+ new MediaType("application", "vnd.genomatix.tuxedo", compressible = false, binary = true, List("txd"))
+
+ lazy val `vnd.3gpp.mcdata-ue-config+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-ue-config+xml", compressible = true, binary = true)
+
+ lazy val `vnd.kde.kspread`: MediaType =
+ new MediaType("application", "vnd.kde.kspread", compressible = false, binary = true, List("ksp"))
+
+ lazy val `x-ns-proxy-autoconfig`: MediaType =
+ new MediaType("application", "x-ns-proxy-autoconfig", compressible = true, binary = true, List("pac"))
+
+ lazy val `ibe-pp-data`: MediaType =
+ new MediaType("application", "ibe-pp-data", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.mcdata-regroup+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.mcdata-regroup+xml", compressible = true, binary = true)
+
+ lazy val `emergencycalldata.comment+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.comment+xml", compressible = true, binary = true)
+
+ lazy val `vnd.apple.keynote`: MediaType =
+ new MediaType("application", "vnd.apple.keynote", compressible = false, binary = true, List("key"))
+
+ lazy val `timestamp-query`: MediaType =
+ new MediaType("application", "timestamp-query", compressible = false, binary = true)
+
+ lazy val `vnd.las`: MediaType =
+ new MediaType("application", "vnd.las", compressible = false, binary = true)
+
+ lazy val `vnd.oipf.dae.svg+xml`: MediaType =
+ new MediaType("application", "vnd.oipf.dae.svg+xml", compressible = true, binary = true)
+
+ lazy val `vnd.mitsubishi.misty-guard.trustweb`: MediaType =
+ new MediaType("application", "vnd.mitsubishi.misty-guard.trustweb", compressible = false, binary = true)
+
+ lazy val `vnd.sun.xml.draw`: MediaType =
+ new MediaType("application", "vnd.sun.xml.draw", compressible = false, binary = true, List("sxd"))
+
+ lazy val `x-7z-compressed`: MediaType =
+ new MediaType("application", "x-7z-compressed", compressible = false, binary = true, List("7z"))
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.presentation.main+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.shana.informed.interchange",
- Compressible,
- NotBinary,
- List("iif"),
+ "vnd.openxmlformats-officedocument.presentationml.presentation.main+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.shana.informed.package`: MediaType = new MediaType(
+
+ lazy val `x-apple-diskimage`: MediaType =
+ new MediaType("application", "x-apple-diskimage", compressible = false, binary = true, List("dmg"))
+
+ lazy val `vnd.orange.indata`: MediaType =
+ new MediaType("application", "vnd.orange.indata", compressible = false, binary = true)
+
+ lazy val `cu-seeme`: MediaType =
+ new MediaType("application", "cu-seeme", compressible = false, binary = true, List("cu"))
+
+ lazy val `x-x509-next-ca-cert`: MediaType =
+ new MediaType("application", "x-x509-next-ca-cert", compressible = false, binary = true)
+
+ lazy val `x-virtualbox-vhd`: MediaType =
+ new MediaType("application", "x-virtualbox-vhd", compressible = true, binary = true, List("vhd"))
+
+ lazy val `media-policy-dataset+xml`: MediaType =
+ new MediaType("application", "media-policy-dataset+xml", compressible = true, binary = true, List("mpf"))
+
+ lazy val `vnd.ocf+cbor`: MediaType =
+ new MediaType("application", "vnd.ocf+cbor", compressible = false, binary = true)
+
+ lazy val `vnd.japannet-verification-wakeup`: MediaType =
+ new MediaType("application", "vnd.japannet-verification-wakeup", compressible = false, binary = true)
+
+ lazy val `vnd.spotfire.dxp`: MediaType =
+ new MediaType("application", "vnd.spotfire.dxp", compressible = false, binary = true, List("dxp"))
+
+ lazy val `mpeg4-generic`: MediaType =
+ new MediaType("application", "mpeg4-generic", compressible = false, binary = true)
+
+ lazy val `vemmi`: MediaType =
+ new MediaType("application", "vemmi", compressible = false, binary = true)
+
+ lazy val `x-tex-tfm`: MediaType =
+ new MediaType("application", "x-tex-tfm", compressible = false, binary = true, List("tfm"))
+
+ lazy val `vnd.ms-powerpoint`: MediaType =
+ new MediaType("application", "vnd.ms-powerpoint", compressible = false, binary = true, List("ppt", "pps", "pot"))
+
+ lazy val `vnd.hhe.lesson-player`: MediaType =
+ new MediaType("application", "vnd.hhe.lesson-player", compressible = false, binary = true, List("les"))
+
+ lazy val `hjson`: MediaType =
+ new MediaType("application", "hjson", compressible = false, binary = false, List("hjson"))
+
+ lazy val `vnd.msign`: MediaType =
+ new MediaType("application", "vnd.msign", compressible = false, binary = true)
+
+ lazy val `vnd.openxmlformats-officedocument.presentationml.tablestyles+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.shana.informed.package",
- Compressible,
- NotBinary,
- List("ipk"),
+ "vnd.openxmlformats-officedocument.presentationml.tablestyles+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.shootproof+json`: MediaType =
- new MediaType("application", "vnd.shootproof+json", Compressible, NotBinary)
- lazy val `vnd.shopkick+json`: MediaType =
- new MediaType("application", "vnd.shopkick+json", Compressible, NotBinary)
- lazy val `vnd.shp`: MediaType =
- new MediaType("application", "vnd.shp", Compressible, NotBinary)
- lazy val `vnd.shx`: MediaType =
- new MediaType("application", "vnd.shx", Compressible, NotBinary)
- lazy val `vnd.sigrok.session`: MediaType =
- new MediaType("application", "vnd.sigrok.session", Compressible, NotBinary)
- lazy val `vnd.simtech-mindmapper`: MediaType = new MediaType(
+
+ lazy val `news-groupinfo`: MediaType =
+ new MediaType("application", "news-groupinfo", compressible = false, binary = true)
+
+ lazy val `simplesymbolcontainer`: MediaType =
+ new MediaType("application", "simplesymbolcontainer", compressible = false, binary = true)
+
+ lazy val `msword`: MediaType =
+ new MediaType("application", "msword", compressible = false, binary = true, List("doc", "dot"))
+
+ lazy val `x-gramps-xml`: MediaType =
+ new MediaType("application", "x-gramps-xml", compressible = false, binary = true, List("gramps"))
+
+ lazy val `vnd.hp-pclxl`: MediaType =
+ new MediaType("application", "vnd.hp-pclxl", compressible = false, binary = true, List("pclxl"))
+
+ lazy val `emergencycalldata.subscriberinfo+xml`: MediaType =
+ new MediaType("application", "emergencycalldata.subscriberinfo+xml", compressible = true, binary = true)
+
+ lazy val `vnd.seemail`: MediaType =
+ new MediaType("application", "vnd.seemail", compressible = false, binary = true, List("see"))
+
+ lazy val `dii`: MediaType =
+ new MediaType("application", "dii", compressible = false, binary = true)
+
+ lazy val `cwl`: MediaType =
+ new MediaType("application", "cwl", compressible = false, binary = true, List("cwl"))
+
+ lazy val `vnd.mif`: MediaType =
+ new MediaType("application", "vnd.mif", compressible = false, binary = true, List("mif"))
+
+ lazy val `x-t3vm-image`: MediaType =
+ new MediaType("application", "x-t3vm-image", compressible = false, binary = true, List("t3"))
+
+ lazy val `font-woff`: MediaType =
+ new MediaType("application", "font-woff", compressible = false, binary = true)
+
+ lazy val `pdf`: MediaType =
+ new MediaType("application", "pdf", compressible = false, binary = true, List("pdf"))
+
+ lazy val `vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.simtech-mindmapper",
- Compressible,
- NotBinary,
- List("twd", "twds"),
+ "vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml",
+ compressible = true,
+ binary = true,
)
- lazy val `vnd.siren+json`: MediaType =
- new MediaType("application", "vnd.siren+json", Compressible, NotBinary)
- lazy val `vnd.smaf`: MediaType =
- new MediaType("application", "vnd.smaf", Compressible, NotBinary, List("mmf"))
- lazy val `vnd.smart.notebook`: MediaType =
- new MediaType("application", "vnd.smart.notebook", Compressible, NotBinary)
- lazy val `vnd.smart.teacher`: MediaType =
- new MediaType("application", "vnd.smart.teacher", Compressible, NotBinary, List("teacher"))
- lazy val `vnd.snesdev-page-table`: MediaType =
- new MediaType("application", "vnd.snesdev-page-table", Compressible, NotBinary)
- lazy val `vnd.software602.filler.form+xml`: MediaType = new MediaType(
+
+ lazy val `vnd.chipnuts.karaoke-mmd`: MediaType =
+ new MediaType("application", "vnd.chipnuts.karaoke-mmd", compressible = false, binary = true, List("mmd"))
+
+ lazy val `vnd.ims.lis.v2.result+json`: MediaType =
+ new MediaType("application", "vnd.ims.lis.v2.result+json", compressible = true, binary = false)
+
+ lazy val `pkcs7-mime`: MediaType =
+ new MediaType("application", "pkcs7-mime", compressible = false, binary = true, List("p7m", "p7c"))
+
+ lazy val `xv+xml`: MediaType =
+ new MediaType("application", "xv+xml", compressible = true, binary = true, List("mxml", "xhvml", "xvml", "xvm"))
+
+ lazy val `x-ms-wmd`: MediaType =
+ new MediaType("application", "x-ms-wmd", compressible = false, binary = true, List("wmd"))
+
+ lazy val `vnd.marlin.drm.conftoken+xml`: MediaType =
+ new MediaType("application", "vnd.marlin.drm.conftoken+xml", compressible = true, binary = true)
+
+ lazy val `vnd.oracle.resource+json`: MediaType =
+ new MediaType("application", "vnd.oracle.resource+json", compressible = true, binary = false)
+
+ lazy val `cose-key-set`: MediaType =
+ new MediaType("application", "cose-key-set", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.access-transfer-events+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.access-transfer-events+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-excel.template.macroenabled.12`: MediaType =
+ new MediaType(
"application",
- "vnd.software602.filler.form+xml",
- Compressible,
- NotBinary,
- List("fo"),
+ "vnd.ms-excel.template.macroenabled.12",
+ compressible = false,
+ binary = true,
+ List("xltm"),
)
- lazy val `vnd.software602.filler.form-xml-zip`: MediaType =
- new MediaType("application", "vnd.software602.filler.form-xml-zip", Compressible, NotBinary)
- lazy val `vnd.solent.sdkm+xml`: MediaType = new MediaType(
+
+ lazy val `pidf+xml`: MediaType =
+ new MediaType("application", "pidf+xml", compressible = true, binary = true)
+
+ lazy val `vnd.geogebra.slides`: MediaType =
+ new MediaType("application", "vnd.geogebra.slides", compressible = false, binary = true)
+
+ lazy val `emergencycalldata.legacyesn+json`: MediaType =
+ new MediaType("application", "emergencycalldata.legacyesn+json", compressible = true, binary = false)
+
+ lazy val `relax-ng-compact-syntax`: MediaType =
+ new MediaType("application", "relax-ng-compact-syntax", compressible = false, binary = true, List("rnc"))
+
+ lazy val `vnd.insors.igm`: MediaType =
+ new MediaType("application", "vnd.insors.igm", compressible = false, binary = true, List("igm"))
+
+ lazy val `vnd.fujixerox.ddd`: MediaType =
+ new MediaType("application", "vnd.fujixerox.ddd", compressible = false, binary = true, List("ddd"))
+
+ lazy val `vnd.google-apps.document`: MediaType =
+ new MediaType("application", "vnd.google-apps.document", compressible = false, binary = true, List("gdoc"))
+
+ lazy val `vnd.xara`: MediaType =
+ new MediaType("application", "vnd.xara", compressible = false, binary = true, List("xar"))
+
+ lazy val `vnd.mapbox-vector-tile`: MediaType =
+ new MediaType("application", "vnd.mapbox-vector-tile", compressible = false, binary = true, List("mvt"))
+
+ lazy val `vnd.tml`: MediaType =
+ new MediaType("application", "vnd.tml", compressible = false, binary = true)
+
+ lazy val `merge-patch+json`: MediaType =
+ new MediaType("application", "merge-patch+json", compressible = true, binary = false)
+
+ lazy val `vnd.syncml.dm+xml`: MediaType =
+ new MediaType("application", "vnd.syncml.dm+xml", compressible = true, binary = true, List("xdm"))
+
+ lazy val `x-mie`: MediaType =
+ new MediaType("application", "x-mie", compressible = false, binary = true, List("mie"))
+
+ lazy val `vnd.openxmlformats-package.relationships+xml`: MediaType =
+ new MediaType("application", "vnd.openxmlformats-package.relationships+xml", compressible = true, binary = true)
+
+ lazy val `vnd.ms-package.obfuscated-opentype`: MediaType =
+ new MediaType("application", "vnd.ms-package.obfuscated-opentype", compressible = false, binary = true)
+
+ lazy val `alto-error+json`: MediaType =
+ new MediaType("application", "alto-error+json", compressible = true, binary = false)
+
+ lazy val `vnd.oma.group-usage-list+xml`: MediaType =
+ new MediaType("application", "vnd.oma.group-usage-list+xml", compressible = true, binary = true)
+
+ lazy val `cea-2018+xml`: MediaType =
+ new MediaType("application", "cea-2018+xml", compressible = true, binary = true)
+
+ lazy val `vnd.yamaha.openscoreformat.osfpvg+xml`: MediaType =
+ new MediaType(
"application",
- "vnd.solent.sdkm+xml",
- Compressible,
- NotBinary,
- List("sdkm", "sdkd"),
+ "vnd.yamaha.openscoreformat.osfpvg+xml",
+ compressible = true,
+ binary = true,
+ List("osfpvg"),
)
- lazy val `vnd.spotfire.dxp`: MediaType =
- new MediaType("application", "vnd.spotfire.dxp", Compressible, NotBinary, List("dxp"))
- lazy val `vnd.spotfire.sfs`: MediaType =
- new MediaType("application", "vnd.spotfire.sfs", Compressible, NotBinary, List("sfs"))
- lazy val `vnd.sqlite3`: MediaType =
- new MediaType("application", "vnd.sqlite3", Compressible, NotBinary)
- lazy val `vnd.sss-cod`: MediaType =
- new MediaType("application", "vnd.sss-cod", Compressible, NotBinary)
- lazy val `vnd.sss-dtf`: MediaType =
- new MediaType("application", "vnd.sss-dtf", Compressible, NotBinary)
- lazy val `vnd.sss-ntf`: MediaType =
- new MediaType("application", "vnd.sss-ntf", Compressible, NotBinary)
- lazy val `vnd.stardivision.calc`: MediaType =
- new MediaType("application", "vnd.stardivision.calc", Compressible, NotBinary, List("sdc"))
- lazy val `vnd.stardivision.draw`: MediaType =
- new MediaType("application", "vnd.stardivision.draw", Compressible, NotBinary, List("sda"))
- lazy val `vnd.stardivision.impress`: MediaType = new MediaType(
- "application",
- "vnd.stardivision.impress",
- Compressible,
- NotBinary,
- List("sdd"),
- )
- lazy val `vnd.stardivision.math`: MediaType =
- new MediaType("application", "vnd.stardivision.math", Compressible, NotBinary, List("smf"))
- lazy val `vnd.stardivision.writer`: MediaType = new MediaType(
- "application",
- "vnd.stardivision.writer",
- Compressible,
- NotBinary,
- List("sdw", "vor"),
- )
- lazy val `vnd.stardivision.writer-global`: MediaType = new MediaType(
- "application",
- "vnd.stardivision.writer-global",
- Compressible,
- NotBinary,
- List("sgl"),
- )
- lazy val `vnd.stepmania.package`: MediaType = new MediaType(
- "application",
- "vnd.stepmania.package",
- Compressible,
- NotBinary,
- List("smzip"),
- )
- lazy val `vnd.stepmania.stepchart`: MediaType =
- new MediaType("application", "vnd.stepmania.stepchart", Compressible, NotBinary, List("sm"))
- lazy val `vnd.street-stream`: MediaType =
- new MediaType("application", "vnd.street-stream", Compressible, NotBinary)
- lazy val `vnd.sun.wadl+xml`: MediaType =
- new MediaType("application", "vnd.sun.wadl+xml", Compressible, NotBinary, List("wadl"))
- lazy val `vnd.sun.xml.calc`: MediaType =
- new MediaType("application", "vnd.sun.xml.calc", Compressible, NotBinary, List("sxc"))
- lazy val `vnd.sun.xml.calc.template`: MediaType = new MediaType(
- "application",
- "vnd.sun.xml.calc.template",
- Compressible,
- NotBinary,
- List("stc"),
- )
- lazy val `vnd.sun.xml.draw`: MediaType =
- new MediaType("application", "vnd.sun.xml.draw", Compressible, NotBinary, List("sxd"))
- lazy val `vnd.sun.xml.draw.template`: MediaType = new MediaType(
- "application",
- "vnd.sun.xml.draw.template",
- Compressible,
- NotBinary,
- List("std"),
- )
- lazy val `vnd.sun.xml.impress`: MediaType =
- new MediaType("application", "vnd.sun.xml.impress", Compressible, NotBinary, List("sxi"))
- lazy val `vnd.sun.xml.impress.template`: MediaType = new MediaType(
- "application",
- "vnd.sun.xml.impress.template",
- Compressible,
- NotBinary,
- List("sti"),
- )
- lazy val `vnd.sun.xml.math`: MediaType =
- new MediaType("application", "vnd.sun.xml.math", Compressible, NotBinary, List("sxm"))
- lazy val `vnd.sun.xml.writer`: MediaType =
- new MediaType("application", "vnd.sun.xml.writer", Compressible, NotBinary, List("sxw"))
- lazy val `vnd.sun.xml.writer.global`: MediaType = new MediaType(
- "application",
- "vnd.sun.xml.writer.global",
- Compressible,
- NotBinary,
- List("sxg"),
- )
- lazy val `vnd.sun.xml.writer.template`: MediaType = new MediaType(
- "application",
- "vnd.sun.xml.writer.template",
- Compressible,
- NotBinary,
- List("stw"),
- )
- lazy val `vnd.sus-calendar`: MediaType = new MediaType(
- "application",
- "vnd.sus-calendar",
- Compressible,
- NotBinary,
- List("sus", "susp"),
- )
- lazy val `vnd.svd`: MediaType =
- new MediaType("application", "vnd.svd", Compressible, NotBinary, List("svd"))
- lazy val `vnd.swiftview-ics`: MediaType =
- new MediaType("application", "vnd.swiftview-ics", Compressible, NotBinary)
- lazy val `vnd.sycle+xml`: MediaType =
- new MediaType("application", "vnd.sycle+xml", Compressible, NotBinary)
- lazy val `vnd.symbian.install`: MediaType = new MediaType(
- "application",
- "vnd.symbian.install",
- Compressible,
- NotBinary,
- List("sis", "sisx"),
- )
- lazy val `vnd.syncml+xml`: MediaType =
- new MediaType("application", "vnd.syncml+xml", Compressible, NotBinary, List("xsm"))
- lazy val `vnd.syncml.dm+wbxml`: MediaType =
- new MediaType("application", "vnd.syncml.dm+wbxml", Compressible, NotBinary, List("bdm"))
- lazy val `vnd.syncml.dm+xml`: MediaType =
- new MediaType("application", "vnd.syncml.dm+xml", Compressible, NotBinary, List("xdm"))
- lazy val `vnd.syncml.dm.notification`: MediaType =
- new MediaType("application", "vnd.syncml.dm.notification", Compressible, NotBinary)
- lazy val `vnd.syncml.dmddf+wbxml`: MediaType =
- new MediaType("application", "vnd.syncml.dmddf+wbxml", Compressible, NotBinary)
- lazy val `vnd.syncml.dmddf+xml`: MediaType =
- new MediaType("application", "vnd.syncml.dmddf+xml", Compressible, NotBinary, List("ddf"))
- lazy val `vnd.syncml.dmtnds+wbxml`: MediaType =
- new MediaType("application", "vnd.syncml.dmtnds+wbxml", Compressible, NotBinary)
- lazy val `vnd.syncml.dmtnds+xml`: MediaType =
- new MediaType("application", "vnd.syncml.dmtnds+xml", Compressible, NotBinary)
- lazy val `vnd.syncml.ds.notification`: MediaType =
- new MediaType("application", "vnd.syncml.ds.notification", Compressible, NotBinary)
- lazy val `vnd.tableschema+json`: MediaType =
- new MediaType("application", "vnd.tableschema+json", Compressible, NotBinary)
- lazy val `vnd.tao.intent-module-archive`: MediaType = new MediaType(
- "application",
- "vnd.tao.intent-module-archive",
- Compressible,
- NotBinary,
- List("tao"),
- )
- lazy val `vnd.tcpdump.pcap`: MediaType = new MediaType(
- "application",
- "vnd.tcpdump.pcap",
- Compressible,
- NotBinary,
- List("pcap", "cap", "dmp"),
- )
- lazy val `vnd.think-cell.ppttc+json`: MediaType =
- new MediaType("application", "vnd.think-cell.ppttc+json", Compressible, NotBinary)
- lazy val `vnd.tmd.mediaflex.api+xml`: MediaType =
- new MediaType("application", "vnd.tmd.mediaflex.api+xml", Compressible, NotBinary)
- lazy val `vnd.tml`: MediaType =
- new MediaType("application", "vnd.tml", Compressible, NotBinary)
- lazy val `vnd.tmobile-livetv`: MediaType =
- new MediaType("application", "vnd.tmobile-livetv", Compressible, NotBinary, List("tmo"))
- lazy val `vnd.tri.onesource`: MediaType =
- new MediaType("application", "vnd.tri.onesource", Compressible, NotBinary)
- lazy val `vnd.trid.tpt`: MediaType =
- new MediaType("application", "vnd.trid.tpt", Compressible, NotBinary, List("tpt"))
- lazy val `vnd.triscape.mxs`: MediaType =
- new MediaType("application", "vnd.triscape.mxs", Compressible, NotBinary, List("mxs"))
- lazy val `vnd.trueapp`: MediaType =
- new MediaType("application", "vnd.trueapp", Compressible, NotBinary, List("tra"))
- lazy val `vnd.truedoc`: MediaType =
- new MediaType("application", "vnd.truedoc", Compressible, NotBinary)
- lazy val `vnd.ubisoft.webplayer`: MediaType =
- new MediaType("application", "vnd.ubisoft.webplayer", Compressible, NotBinary)
- lazy val `vnd.ufdl`: MediaType =
- new MediaType("application", "vnd.ufdl", Compressible, NotBinary, List("ufd", "ufdl"))
- lazy val `vnd.uiq.theme`: MediaType =
- new MediaType("application", "vnd.uiq.theme", Compressible, NotBinary, List("utz"))
- lazy val `vnd.umajin`: MediaType =
- new MediaType("application", "vnd.umajin", Compressible, NotBinary, List("umj"))
- lazy val `vnd.unity`: MediaType =
- new MediaType("application", "vnd.unity", Compressible, NotBinary, List("unityweb"))
- lazy val `vnd.uoml+xml`: MediaType =
- new MediaType("application", "vnd.uoml+xml", Compressible, NotBinary, List("uoml"))
- lazy val `vnd.uplanet.alert`: MediaType =
- new MediaType("application", "vnd.uplanet.alert", Compressible, NotBinary)
- lazy val `vnd.uplanet.alert-wbxml`: MediaType =
- new MediaType("application", "vnd.uplanet.alert-wbxml", Compressible, NotBinary)
- lazy val `vnd.uplanet.bearer-choice`: MediaType =
- new MediaType("application", "vnd.uplanet.bearer-choice", Compressible, NotBinary)
- lazy val `vnd.uplanet.bearer-choice-wbxml`: MediaType =
- new MediaType("application", "vnd.uplanet.bearer-choice-wbxml", Compressible, NotBinary)
- lazy val `vnd.uplanet.cacheop`: MediaType =
- new MediaType("application", "vnd.uplanet.cacheop", Compressible, NotBinary)
- lazy val `vnd.uplanet.cacheop-wbxml`: MediaType =
- new MediaType("application", "vnd.uplanet.cacheop-wbxml", Compressible, NotBinary)
- lazy val `vnd.uplanet.channel`: MediaType =
- new MediaType("application", "vnd.uplanet.channel", Compressible, NotBinary)
- lazy val `vnd.uplanet.channel-wbxml`: MediaType =
- new MediaType("application", "vnd.uplanet.channel-wbxml", Compressible, NotBinary)
- lazy val `vnd.uplanet.list`: MediaType =
- new MediaType("application", "vnd.uplanet.list", Compressible, NotBinary)
- lazy val `vnd.uplanet.list-wbxml`: MediaType =
- new MediaType("application", "vnd.uplanet.list-wbxml", Compressible, NotBinary)
- lazy val `vnd.uplanet.listcmd`: MediaType =
- new MediaType("application", "vnd.uplanet.listcmd", Compressible, NotBinary)
- lazy val `vnd.uplanet.listcmd-wbxml`: MediaType =
- new MediaType("application", "vnd.uplanet.listcmd-wbxml", Compressible, NotBinary)
- lazy val `vnd.uplanet.signal`: MediaType =
- new MediaType("application", "vnd.uplanet.signal", Compressible, NotBinary)
- lazy val `vnd.uri-map`: MediaType =
- new MediaType("application", "vnd.uri-map", Compressible, NotBinary)
- lazy val `vnd.valve.source.material`: MediaType =
- new MediaType("application", "vnd.valve.source.material", Compressible, NotBinary)
- lazy val `vnd.vcx`: MediaType =
- new MediaType("application", "vnd.vcx", Compressible, NotBinary, List("vcx"))
- lazy val `vnd.vd-study`: MediaType =
- new MediaType("application", "vnd.vd-study", Compressible, NotBinary)
- lazy val `vnd.vectorworks`: MediaType =
- new MediaType("application", "vnd.vectorworks", Compressible, NotBinary)
- lazy val `vnd.vel+json`: MediaType =
- new MediaType("application", "vnd.vel+json", Compressible, NotBinary)
- lazy val `vnd.verimatrix.vcas`: MediaType =
- new MediaType("application", "vnd.verimatrix.vcas", Compressible, NotBinary)
- lazy val `vnd.veryant.thin`: MediaType =
- new MediaType("application", "vnd.veryant.thin", Compressible, NotBinary)
- lazy val `vnd.ves.encrypted`: MediaType =
- new MediaType("application", "vnd.ves.encrypted", Compressible, NotBinary)
- lazy val `vnd.vidsoft.vidconference`: MediaType =
- new MediaType("application", "vnd.vidsoft.vidconference", Compressible, NotBinary)
- lazy val `vnd.visio`: MediaType = new MediaType(
- "application",
- "vnd.visio",
- Compressible,
- NotBinary,
- List("vsd", "vst", "vss", "vsw"),
- )
- lazy val `vnd.visionary`: MediaType =
- new MediaType("application", "vnd.visionary", Compressible, NotBinary, List("vis"))
- lazy val `vnd.vividence.scriptfile`: MediaType =
- new MediaType("application", "vnd.vividence.scriptfile", Compressible, NotBinary)
- lazy val `vnd.vsf`: MediaType =
- new MediaType("application", "vnd.vsf", Compressible, NotBinary, List("vsf"))
- lazy val `vnd.wap.sic`: MediaType =
- new MediaType("application", "vnd.wap.sic", Compressible, NotBinary)
- lazy val `vnd.wap.slc`: MediaType =
- new MediaType("application", "vnd.wap.slc", Compressible, NotBinary)
- lazy val `vnd.wap.wbxml`: MediaType =
- new MediaType("application", "vnd.wap.wbxml", Compressible, NotBinary, List("wbxml"))
- lazy val `vnd.wap.wmlc`: MediaType =
- new MediaType("application", "vnd.wap.wmlc", Compressible, NotBinary, List("wmlc"))
- lazy val `vnd.wap.wmlscriptc`: MediaType =
- new MediaType("application", "vnd.wap.wmlscriptc", Compressible, NotBinary, List("wmlsc"))
- lazy val `vnd.webturbo`: MediaType =
- new MediaType("application", "vnd.webturbo", Compressible, NotBinary, List("wtb"))
- lazy val `vnd.wfa.dpp`: MediaType =
- new MediaType("application", "vnd.wfa.dpp", Compressible, NotBinary)
- lazy val `vnd.wfa.p2p`: MediaType =
- new MediaType("application", "vnd.wfa.p2p", Compressible, NotBinary)
- lazy val `vnd.wfa.wsc`: MediaType =
- new MediaType("application", "vnd.wfa.wsc", Compressible, NotBinary)
- lazy val `vnd.windows.devicepairing`: MediaType =
- new MediaType("application", "vnd.windows.devicepairing", Compressible, NotBinary)
- lazy val `vnd.wmc`: MediaType =
- new MediaType("application", "vnd.wmc", Compressible, NotBinary)
- lazy val `vnd.wmf.bootstrap`: MediaType =
- new MediaType("application", "vnd.wmf.bootstrap", Compressible, NotBinary)
- lazy val `vnd.wolfram.mathematica`: MediaType =
- new MediaType("application", "vnd.wolfram.mathematica", Compressible, NotBinary)
- lazy val `vnd.wolfram.mathematica.package`: MediaType =
- new MediaType("application", "vnd.wolfram.mathematica.package", Compressible, NotBinary)
- lazy val `vnd.wolfram.player`: MediaType =
- new MediaType("application", "vnd.wolfram.player", Compressible, NotBinary, List("nbp"))
- lazy val `vnd.wordperfect`: MediaType =
- new MediaType("application", "vnd.wordperfect", Compressible, NotBinary, List("wpd"))
- lazy val `vnd.wqd`: MediaType =
- new MediaType("application", "vnd.wqd", Compressible, NotBinary, List("wqd"))
- lazy val `vnd.wrq-hp3000-labelled`: MediaType =
- new MediaType("application", "vnd.wrq-hp3000-labelled", Compressible, NotBinary)
- lazy val `vnd.wt.stf`: MediaType =
- new MediaType("application", "vnd.wt.stf", Compressible, NotBinary, List("stf"))
- lazy val `vnd.wv.csp+wbxml`: MediaType =
- new MediaType("application", "vnd.wv.csp+wbxml", Compressible, NotBinary)
- lazy val `vnd.wv.csp+xml`: MediaType =
- new MediaType("application", "vnd.wv.csp+xml", Compressible, NotBinary)
- lazy val `vnd.wv.ssp+xml`: MediaType =
- new MediaType("application", "vnd.wv.ssp+xml", Compressible, NotBinary)
- lazy val `vnd.xacml+json`: MediaType =
- new MediaType("application", "vnd.xacml+json", Compressible, NotBinary)
- lazy val `vnd.xara`: MediaType =
- new MediaType("application", "vnd.xara", Compressible, NotBinary, List("xar"))
- lazy val `vnd.xfdl`: MediaType =
- new MediaType("application", "vnd.xfdl", Compressible, NotBinary, List("xfdl"))
- lazy val `vnd.xfdl.webform`: MediaType =
- new MediaType("application", "vnd.xfdl.webform", Compressible, NotBinary)
- lazy val `vnd.xmi+xml`: MediaType =
- new MediaType("application", "vnd.xmi+xml", Compressible, NotBinary)
- lazy val `vnd.xmpie.cpkg`: MediaType =
- new MediaType("application", "vnd.xmpie.cpkg", Compressible, NotBinary)
- lazy val `vnd.xmpie.dpkg`: MediaType =
- new MediaType("application", "vnd.xmpie.dpkg", Compressible, NotBinary)
- lazy val `vnd.xmpie.plan`: MediaType =
- new MediaType("application", "vnd.xmpie.plan", Compressible, NotBinary)
- lazy val `vnd.xmpie.ppkg`: MediaType =
- new MediaType("application", "vnd.xmpie.ppkg", Compressible, NotBinary)
- lazy val `vnd.xmpie.xlim`: MediaType =
- new MediaType("application", "vnd.xmpie.xlim", Compressible, NotBinary)
- lazy val `vnd.yamaha.hv-dic`: MediaType =
- new MediaType("application", "vnd.yamaha.hv-dic", Compressible, NotBinary, List("hvd"))
- lazy val `vnd.yamaha.hv-script`: MediaType =
- new MediaType("application", "vnd.yamaha.hv-script", Compressible, NotBinary, List("hvs"))
- lazy val `vnd.yamaha.hv-voice`: MediaType =
- new MediaType("application", "vnd.yamaha.hv-voice", Compressible, NotBinary, List("hvp"))
- lazy val `vnd.yamaha.openscoreformat`: MediaType = new MediaType(
- "application",
- "vnd.yamaha.openscoreformat",
- Compressible,
- NotBinary,
- List("osf"),
- )
- lazy val `vnd.yamaha.openscoreformat.osfpvg+xml`: MediaType = new MediaType(
- "application",
- "vnd.yamaha.openscoreformat.osfpvg+xml",
- Compressible,
- NotBinary,
- List("osfpvg"),
- )
- lazy val `vnd.yamaha.remote-setup`: MediaType =
- new MediaType("application", "vnd.yamaha.remote-setup", Compressible, NotBinary)
- lazy val `vnd.yamaha.smaf-audio`: MediaType =
- new MediaType("application", "vnd.yamaha.smaf-audio", Compressible, NotBinary, List("saf"))
- lazy val `vnd.yamaha.smaf-phrase`: MediaType =
- new MediaType("application", "vnd.yamaha.smaf-phrase", Compressible, NotBinary, List("spf"))
- lazy val `vnd.yamaha.through-ngn`: MediaType =
- new MediaType("application", "vnd.yamaha.through-ngn", Compressible, NotBinary)
- lazy val `vnd.yamaha.tunnel-udpencap`: MediaType =
- new MediaType("application", "vnd.yamaha.tunnel-udpencap", Compressible, NotBinary)
- lazy val `vnd.yaoweme`: MediaType =
- new MediaType("application", "vnd.yaoweme", Compressible, NotBinary)
- lazy val `vnd.yellowriver-custom-menu`: MediaType = new MediaType(
- "application",
- "vnd.yellowriver-custom-menu",
- Compressible,
- NotBinary,
- List("cmp"),
- )
- lazy val `vnd.youtube.yt`: MediaType =
- new MediaType("application", "vnd.youtube.yt", Compressible, NotBinary)
- lazy val `vnd.zul`: MediaType =
- new MediaType("application", "vnd.zul", Compressible, NotBinary, List("zir", "zirz"))
- lazy val `vnd.zzazz.deck+xml`: MediaType =
- new MediaType("application", "vnd.zzazz.deck+xml", Compressible, NotBinary, List("zaz"))
- lazy val `voicexml+xml`: MediaType =
- new MediaType("application", "voicexml+xml", Compressible, NotBinary, List("vxml"))
- lazy val `voucher-cms+json`: MediaType =
- new MediaType("application", "voucher-cms+json", Compressible, NotBinary)
- lazy val `vq-rtcpxr`: MediaType =
- new MediaType("application", "vq-rtcpxr", Compressible, NotBinary)
- lazy val `wasm`: MediaType =
- new MediaType("application", "wasm", Compressible, NotBinary, List("wasm"))
- lazy val `watcherinfo+xml`: MediaType =
- new MediaType("application", "watcherinfo+xml", Compressible, NotBinary)
- lazy val `webpush-options+json`: MediaType =
- new MediaType("application", "webpush-options+json", Compressible, NotBinary)
- lazy val `whoispp-query`: MediaType =
- new MediaType("application", "whoispp-query", Compressible, NotBinary)
- lazy val `whoispp-response`: MediaType =
- new MediaType("application", "whoispp-response", Compressible, NotBinary)
- lazy val `widget`: MediaType =
- new MediaType("application", "widget", Compressible, NotBinary, List("wgt"))
- lazy val `winhlp`: MediaType =
- new MediaType("application", "winhlp", Compressible, NotBinary, List("hlp"))
- lazy val `wita`: MediaType = new MediaType("application", "wita", Compressible, NotBinary)
- lazy val `wordperfect5.1`: MediaType =
- new MediaType("application", "wordperfect5.1", Compressible, NotBinary)
- lazy val `wsdl+xml`: MediaType =
- new MediaType("application", "wsdl+xml", Compressible, NotBinary, List("wsdl"))
- lazy val `wspolicy+xml`: MediaType =
- new MediaType("application", "wspolicy+xml", Compressible, NotBinary, List("wspolicy"))
- lazy val `x-7z-compressed`: MediaType =
- new MediaType("application", "x-7z-compressed", Uncompressible, Binary, List("7z"))
- lazy val `x-abiword`: MediaType =
- new MediaType("application", "x-abiword", Compressible, NotBinary, List("abw"))
- lazy val `x-ace-compressed`: MediaType =
- new MediaType("application", "x-ace-compressed", Compressible, Binary, List("ace"))
- lazy val `x-amf`: MediaType = new MediaType("application", "x-amf", Compressible, NotBinary)
- lazy val `x-apple-diskimage`: MediaType =
- new MediaType("application", "x-apple-diskimage", Compressible, Binary, List("dmg"))
- lazy val `x-arj`: MediaType =
- new MediaType("application", "x-arj", Uncompressible, NotBinary, List("arj"))
- lazy val `x-authorware-bin`: MediaType = new MediaType(
- "application",
- "x-authorware-bin",
- Compressible,
- NotBinary,
- List("aab", "x32", "u32", "vox"),
- )
- lazy val `x-authorware-map`: MediaType =
- new MediaType("application", "x-authorware-map", Compressible, NotBinary, List("aam"))
- lazy val `x-authorware-seg`: MediaType =
- new MediaType("application", "x-authorware-seg", Compressible, NotBinary, List("aas"))
- lazy val `x-bcpio`: MediaType =
- new MediaType("application", "x-bcpio", Compressible, NotBinary, List("bcpio"))
- lazy val `x-bdoc`: MediaType =
- new MediaType("application", "x-bdoc", Uncompressible, NotBinary, List("bdoc"))
- lazy val `x-bittorrent`: MediaType =
- new MediaType("application", "x-bittorrent", Compressible, NotBinary, List("torrent"))
- lazy val `x-blorb`: MediaType =
- new MediaType("application", "x-blorb", Compressible, NotBinary, List("blb", "blorb"))
- lazy val `x-bzip`: MediaType =
- new MediaType("application", "x-bzip", Uncompressible, Binary, List("bz"))
- lazy val `x-bzip2`: MediaType =
- new MediaType("application", "x-bzip2", Uncompressible, Binary, List("bz2", "boz"))
- lazy val `x-cbr`: MediaType = new MediaType(
- "application",
- "x-cbr",
- Compressible,
- NotBinary,
- List("cbr", "cba", "cbt", "cbz", "cb7"),
- )
- lazy val `x-cdlink`: MediaType =
- new MediaType("application", "x-cdlink", Compressible, NotBinary, List("vcd"))
- lazy val `x-cfs-compressed`: MediaType =
- new MediaType("application", "x-cfs-compressed", Compressible, NotBinary, List("cfs"))
- lazy val `x-chat`: MediaType =
- new MediaType("application", "x-chat", Compressible, NotBinary, List("chat"))
- lazy val `x-chess-pgn`: MediaType =
- new MediaType("application", "x-chess-pgn", Compressible, NotBinary, List("pgn"))
- lazy val `x-chrome-extension`: MediaType =
- new MediaType("application", "x-chrome-extension", Compressible, Binary, List("crx"))
- lazy val `x-cocoa`: MediaType =
- new MediaType("application", "x-cocoa", Compressible, NotBinary, List("cco"))
- lazy val `x-compress`: MediaType =
- new MediaType("application", "x-compress", Compressible, Binary)
- lazy val `x-conference`: MediaType =
- new MediaType("application", "x-conference", Compressible, NotBinary, List("nsc"))
- lazy val `x-cpio`: MediaType =
- new MediaType("application", "x-cpio", Compressible, NotBinary, List("cpio"))
- lazy val part_2: List[MediaType] = List(
- `vnd.ms-wmdrm.lic-resp`,
- `vnd.ms-wmdrm.meter-chlg-req`,
- `vnd.ms-wmdrm.meter-resp`,
- `vnd.ms-word.document.macroenabled.12`,
- `vnd.ms-word.template.macroenabled.12`,
- `vnd.ms-works`,
- `vnd.ms-wpl`,
- `vnd.ms-xpsdocument`,
- `vnd.msa-disk-image`,
- `vnd.mseq`,
- `vnd.msign`,
- `vnd.multiad.creator`,
- `vnd.multiad.creator.cif`,
- `vnd.music-niff`,
- `vnd.musician`,
- `vnd.muvee.style`,
- `vnd.mynfc`,
- `vnd.ncd.control`,
- `vnd.ncd.reference`,
- `vnd.nearst.inv+json`,
- `vnd.nebumind.line`,
- `vnd.nervana`,
- `vnd.netfpx`,
- `vnd.neurolanguage.nlu`,
- `vnd.nimn`,
- `vnd.nintendo.nitro.rom`,
- `vnd.nintendo.snes.rom`,
- `vnd.nitf`,
- `vnd.noblenet-directory`,
- `vnd.noblenet-sealer`,
- `vnd.noblenet-web`,
- `vnd.nokia.catalogs`,
- `vnd.nokia.conml+wbxml`,
- `vnd.nokia.conml+xml`,
- `vnd.nokia.iptv.config+xml`,
- `vnd.nokia.isds-radio-presets`,
- `vnd.nokia.landmark+wbxml`,
- `vnd.nokia.landmark+xml`,
- `vnd.nokia.landmarkcollection+xml`,
- `vnd.nokia.n-gage.ac+xml`,
- `vnd.nokia.n-gage.data`,
- `vnd.nokia.n-gage.symbian.install`,
- `vnd.nokia.ncd`,
- `vnd.nokia.pcd+wbxml`,
- `vnd.nokia.pcd+xml`,
- `vnd.nokia.radio-preset`,
- `vnd.nokia.radio-presets`,
- `vnd.novadigm.edm`,
- `vnd.novadigm.edx`,
- `vnd.novadigm.ext`,
- `vnd.ntt-local.content-share`,
- `vnd.ntt-local.file-transfer`,
- `vnd.ntt-local.ogw_remote-access`,
- `vnd.ntt-local.sip-ta_remote`,
- `vnd.ntt-local.sip-ta_tcp_stream`,
- `vnd.oasis.opendocument.chart`,
- `vnd.oasis.opendocument.chart-template`,
- `vnd.oasis.opendocument.database`,
- `vnd.oasis.opendocument.formula`,
- `vnd.oasis.opendocument.formula-template`,
- `vnd.oasis.opendocument.graphics`,
- `vnd.oasis.opendocument.graphics-template`,
- `vnd.oasis.opendocument.image`,
- `vnd.oasis.opendocument.image-template`,
- `vnd.oasis.opendocument.presentation`,
- `vnd.oasis.opendocument.presentation-template`,
- `vnd.oasis.opendocument.spreadsheet`,
- `vnd.oasis.opendocument.spreadsheet-template`,
- `vnd.oasis.opendocument.text`,
- `vnd.oasis.opendocument.text-master`,
- `vnd.oasis.opendocument.text-template`,
- `vnd.oasis.opendocument.text-web`,
- `vnd.obn`,
- `vnd.ocf+cbor`,
- `vnd.oci.image.manifest.v1+json`,
- `vnd.oftn.l10n+json`,
- `vnd.oipf.contentaccessdownload+xml`,
- `vnd.oipf.contentaccessstreaming+xml`,
- `vnd.oipf.cspg-hexbinary`,
- `vnd.oipf.dae.svg+xml`,
- `vnd.oipf.dae.xhtml+xml`,
- `vnd.oipf.mippvcontrolmessage+xml`,
- `vnd.oipf.pae.gem`,
- `vnd.oipf.spdiscovery+xml`,
- `vnd.oipf.spdlist+xml`,
- `vnd.oipf.ueprofile+xml`,
- `vnd.oipf.userprofile+xml`,
- `vnd.olpc-sugar`,
- `vnd.oma-scws-config`,
- `vnd.oma-scws-http-request`,
- `vnd.oma-scws-http-response`,
- `vnd.oma.bcast.associated-procedure-parameter+xml`,
- `vnd.oma.bcast.drm-trigger+xml`,
- `vnd.oma.bcast.imd+xml`,
- `vnd.oma.bcast.ltkm`,
- `vnd.oma.bcast.notification+xml`,
- `vnd.oma.bcast.provisioningtrigger`,
- `vnd.oma.bcast.sgboot`,
- `vnd.oma.bcast.sgdd+xml`,
- `vnd.oma.bcast.sgdu`,
- `vnd.oma.bcast.simple-symbol-container`,
- `vnd.oma.bcast.smartcard-trigger+xml`,
- `vnd.oma.bcast.sprov+xml`,
- `vnd.oma.bcast.stkm`,
- `vnd.oma.cab-address-book+xml`,
- `vnd.oma.cab-feature-handler+xml`,
- `vnd.oma.cab-pcc+xml`,
- `vnd.oma.cab-subs-invite+xml`,
- `vnd.oma.cab-user-prefs+xml`,
- `vnd.oma.dcd`,
- `vnd.oma.dcdc`,
- `vnd.oma.dd2+xml`,
- `vnd.oma.drm.risd+xml`,
- `vnd.oma.group-usage-list+xml`,
- `vnd.oma.lwm2m+cbor`,
- `vnd.oma.lwm2m+json`,
- `vnd.oma.lwm2m+tlv`,
- `vnd.oma.pal+xml`,
- `vnd.oma.poc.detailed-progress-report+xml`,
- `vnd.oma.poc.final-report+xml`,
- `vnd.oma.poc.groups+xml`,
- `vnd.oma.poc.invocation-descriptor+xml`,
- `vnd.oma.poc.optimized-progress-report+xml`,
- `vnd.oma.push`,
- `vnd.oma.scidm.messages+xml`,
- `vnd.oma.xcap-directory+xml`,
- `vnd.omads-email+xml`,
- `vnd.omads-file+xml`,
- `vnd.omads-folder+xml`,
- `vnd.omaloc-supl-init`,
- `vnd.onepager`,
- `vnd.onepagertamp`,
- `vnd.onepagertamx`,
- `vnd.onepagertat`,
- `vnd.onepagertatp`,
- `vnd.onepagertatx`,
- `vnd.openblox.game+xml`,
- `vnd.openblox.game-binary`,
- `vnd.openeye.oeb`,
- `vnd.openofficeorg.extension`,
- `vnd.openstreetmap.data+xml`,
- `vnd.openxmlformats-officedocument.custom-properties+xml`,
- `vnd.openxmlformats-officedocument.customxmlproperties+xml`,
- `vnd.openxmlformats-officedocument.drawing+xml`,
- `vnd.openxmlformats-officedocument.drawingml.chart+xml`,
- `vnd.openxmlformats-officedocument.drawingml.chartshapes+xml`,
- `vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml`,
- `vnd.openxmlformats-officedocument.drawingml.diagramdata+xml`,
- `vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml`,
- `vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml`,
- `vnd.openxmlformats-officedocument.extended-properties+xml`,
- `vnd.openxmlformats-officedocument.presentationml.commentauthors+xml`,
- `vnd.openxmlformats-officedocument.presentationml.comments+xml`,
- `vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml`,
- `vnd.openxmlformats-officedocument.presentationml.notesmaster+xml`,
- `vnd.openxmlformats-officedocument.presentationml.notesslide+xml`,
- `vnd.openxmlformats-officedocument.presentationml.presentation`,
- `vnd.openxmlformats-officedocument.presentationml.presentation.main+xml`,
- `vnd.openxmlformats-officedocument.presentationml.presprops+xml`,
- `vnd.openxmlformats-officedocument.presentationml.slide`,
- `vnd.openxmlformats-officedocument.presentationml.slide+xml`,
- `vnd.openxmlformats-officedocument.presentationml.slidelayout+xml`,
- `vnd.openxmlformats-officedocument.presentationml.slidemaster+xml`,
- `vnd.openxmlformats-officedocument.presentationml.slideshow`,
- `vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml`,
- `vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml`,
- `vnd.openxmlformats-officedocument.presentationml.tablestyles+xml`,
- `vnd.openxmlformats-officedocument.presentationml.tags+xml`,
- `vnd.openxmlformats-officedocument.presentationml.template`,
- `vnd.openxmlformats-officedocument.presentationml.template.main+xml`,
- `vnd.openxmlformats-officedocument.presentationml.viewprops+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.comments+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.connections+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.sheet`,
- `vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.styles+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.table+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.template`,
- `vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml`,
- `vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml`,
- `vnd.openxmlformats-officedocument.theme+xml`,
- `vnd.openxmlformats-officedocument.themeoverride+xml`,
- `vnd.openxmlformats-officedocument.vmldrawing`,
- `vnd.openxmlformats-officedocument.wordprocessingml.comments+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.document`,
- `vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.footer+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.settings+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.styles+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.template`,
- `vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml`,
- `vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml`,
- `vnd.openxmlformats-package.core-properties+xml`,
- `vnd.openxmlformats-package.digital-signature-xmlsignature+xml`,
- `vnd.openxmlformats-package.relationships+xml`,
- `vnd.oracle.resource+json`,
- `vnd.orange.indata`,
- `vnd.osa.netdeploy`,
- `vnd.osgeo.mapguide.package`,
- `vnd.osgi.bundle`,
- `vnd.osgi.dp`,
- `vnd.osgi.subsystem`,
- `vnd.otps.ct-kip+xml`,
- `vnd.oxli.countgraph`,
- `vnd.pagerduty+json`,
- `vnd.palm`,
- `vnd.panoply`,
- `vnd.paos.xml`,
- `vnd.patentdive`,
- `vnd.patientecommsdoc`,
- `vnd.pawaafile`,
- `vnd.pcos`,
- `vnd.pg.format`,
- `vnd.pg.osasli`,
- `vnd.piaccess.application-licence`,
- `vnd.picsel`,
- `vnd.pmi.widget`,
- `vnd.poc.group-advertisement+xml`,
- `vnd.pocketlearn`,
- `vnd.powerbuilder6`,
- `vnd.powerbuilder6-s`,
- `vnd.powerbuilder7`,
- `vnd.powerbuilder7-s`,
- `vnd.powerbuilder75`,
- `vnd.powerbuilder75-s`,
- `vnd.preminet`,
- `vnd.previewsystems.box`,
- `vnd.proteus.magazine`,
- `vnd.psfs`,
- `vnd.publishare-delta-tree`,
- `vnd.pvi.ptid1`,
- `vnd.pwg-multiplexed`,
- `vnd.pwg-xhtml-print+xml`,
- `vnd.qualcomm.brew-app-res`,
- `vnd.quarantainenet`,
- `vnd.quark.quarkxpress`,
- `vnd.quobject-quoxdocument`,
- `vnd.radisys.moml+xml`,
- `vnd.radisys.msml+xml`,
- `vnd.radisys.msml-audit+xml`,
- `vnd.radisys.msml-audit-conf+xml`,
- `vnd.radisys.msml-audit-conn+xml`,
- `vnd.radisys.msml-audit-dialog+xml`,
- `vnd.radisys.msml-audit-stream+xml`,
- `vnd.radisys.msml-conf+xml`,
- `vnd.radisys.msml-dialog+xml`,
- `vnd.radisys.msml-dialog-base+xml`,
- `vnd.radisys.msml-dialog-fax-detect+xml`,
- `vnd.radisys.msml-dialog-fax-sendrecv+xml`,
- `vnd.radisys.msml-dialog-group+xml`,
- `vnd.radisys.msml-dialog-speech+xml`,
- `vnd.radisys.msml-dialog-transform+xml`,
- `vnd.rainstor.data`,
- `vnd.rapid`,
- `vnd.rar`,
- `vnd.realvnc.bed`,
- `vnd.recordare.musicxml`,
- `vnd.recordare.musicxml+xml`,
- `vnd.renlearn.rlprint`,
- `vnd.resilient.logic`,
- `vnd.restful+json`,
- `vnd.rig.cryptonote`,
- `vnd.rim.cod`,
- `vnd.rn-realmedia`,
- `vnd.rn-realmedia-vbr`,
- `vnd.route66.link66+xml`,
- `vnd.rs-274x`,
- `vnd.ruckus.download`,
- `vnd.s3sms`,
- `vnd.sailingtracker.track`,
- `vnd.sar`,
- `vnd.sbm.cid`,
- `vnd.sbm.mid2`,
- `vnd.scribus`,
- `vnd.sealed.3df`,
- `vnd.sealed.csf`,
- `vnd.sealed.doc`,
- `vnd.sealed.eml`,
- `vnd.sealed.mht`,
- `vnd.sealed.net`,
- `vnd.sealed.ppt`,
- `vnd.sealed.tiff`,
- `vnd.sealed.xls`,
- `vnd.sealedmedia.softseal.html`,
- `vnd.sealedmedia.softseal.pdf`,
- `vnd.seemail`,
- `vnd.seis+json`,
- `vnd.sema`,
- `vnd.semd`,
- `vnd.semf`,
- `vnd.shade-save-file`,
- `vnd.shana.informed.formdata`,
- `vnd.shana.informed.formtemplate`,
- `vnd.shana.informed.interchange`,
- `vnd.shana.informed.package`,
- `vnd.shootproof+json`,
- `vnd.shopkick+json`,
- `vnd.shp`,
- `vnd.shx`,
- `vnd.sigrok.session`,
- `vnd.simtech-mindmapper`,
- `vnd.siren+json`,
- `vnd.smaf`,
- `vnd.smart.notebook`,
- `vnd.smart.teacher`,
- `vnd.snesdev-page-table`,
- `vnd.software602.filler.form+xml`,
- `vnd.software602.filler.form-xml-zip`,
- `vnd.solent.sdkm+xml`,
- `vnd.spotfire.dxp`,
- `vnd.spotfire.sfs`,
- `vnd.sqlite3`,
- `vnd.sss-cod`,
- `vnd.sss-dtf`,
- `vnd.sss-ntf`,
- `vnd.stardivision.calc`,
- `vnd.stardivision.draw`,
- `vnd.stardivision.impress`,
- `vnd.stardivision.math`,
- `vnd.stardivision.writer`,
- `vnd.stardivision.writer-global`,
- `vnd.stepmania.package`,
- `vnd.stepmania.stepchart`,
- `vnd.street-stream`,
- `vnd.sun.wadl+xml`,
- `vnd.sun.xml.calc`,
- `vnd.sun.xml.calc.template`,
- `vnd.sun.xml.draw`,
- `vnd.sun.xml.draw.template`,
- `vnd.sun.xml.impress`,
- `vnd.sun.xml.impress.template`,
- `vnd.sun.xml.math`,
- `vnd.sun.xml.writer`,
- `vnd.sun.xml.writer.global`,
- `vnd.sun.xml.writer.template`,
- `vnd.sus-calendar`,
- `vnd.svd`,
- `vnd.swiftview-ics`,
- `vnd.sycle+xml`,
- `vnd.symbian.install`,
- `vnd.syncml+xml`,
- `vnd.syncml.dm+wbxml`,
- `vnd.syncml.dm+xml`,
- `vnd.syncml.dm.notification`,
- `vnd.syncml.dmddf+wbxml`,
- `vnd.syncml.dmddf+xml`,
- `vnd.syncml.dmtnds+wbxml`,
- `vnd.syncml.dmtnds+xml`,
- `vnd.syncml.ds.notification`,
- `vnd.tableschema+json`,
- `vnd.tao.intent-module-archive`,
- `vnd.tcpdump.pcap`,
- `vnd.think-cell.ppttc+json`,
- `vnd.tmd.mediaflex.api+xml`,
- `vnd.tml`,
- `vnd.tmobile-livetv`,
- `vnd.tri.onesource`,
- `vnd.trid.tpt`,
- `vnd.triscape.mxs`,
- `vnd.trueapp`,
- `vnd.truedoc`,
- `vnd.ubisoft.webplayer`,
- `vnd.ufdl`,
- `vnd.uiq.theme`,
- `vnd.umajin`,
- `vnd.unity`,
- `vnd.uoml+xml`,
- `vnd.uplanet.alert`,
- `vnd.uplanet.alert-wbxml`,
- `vnd.uplanet.bearer-choice`,
- `vnd.uplanet.bearer-choice-wbxml`,
- `vnd.uplanet.cacheop`,
- `vnd.uplanet.cacheop-wbxml`,
- `vnd.uplanet.channel`,
- `vnd.uplanet.channel-wbxml`,
- `vnd.uplanet.list`,
- `vnd.uplanet.list-wbxml`,
- `vnd.uplanet.listcmd`,
- `vnd.uplanet.listcmd-wbxml`,
- `vnd.uplanet.signal`,
- `vnd.uri-map`,
- `vnd.valve.source.material`,
- `vnd.vcx`,
- `vnd.vd-study`,
- `vnd.vectorworks`,
- `vnd.vel+json`,
- `vnd.verimatrix.vcas`,
- `vnd.veryant.thin`,
- `vnd.ves.encrypted`,
- `vnd.vidsoft.vidconference`,
- `vnd.visio`,
- `vnd.visionary`,
- `vnd.vividence.scriptfile`,
- `vnd.vsf`,
- `vnd.wap.sic`,
- `vnd.wap.slc`,
- `vnd.wap.wbxml`,
- `vnd.wap.wmlc`,
- `vnd.wap.wmlscriptc`,
- `vnd.webturbo`,
- `vnd.wfa.dpp`,
- `vnd.wfa.p2p`,
- `vnd.wfa.wsc`,
- `vnd.windows.devicepairing`,
- `vnd.wmc`,
- `vnd.wmf.bootstrap`,
- `vnd.wolfram.mathematica`,
- `vnd.wolfram.mathematica.package`,
- `vnd.wolfram.player`,
- `vnd.wordperfect`,
- `vnd.wqd`,
- `vnd.wrq-hp3000-labelled`,
- `vnd.wt.stf`,
- `vnd.wv.csp+wbxml`,
- `vnd.wv.csp+xml`,
- `vnd.wv.ssp+xml`,
- `vnd.xacml+json`,
- `vnd.xara`,
- `vnd.xfdl`,
- `vnd.xfdl.webform`,
- `vnd.xmi+xml`,
- `vnd.xmpie.cpkg`,
- `vnd.xmpie.dpkg`,
- `vnd.xmpie.plan`,
- `vnd.xmpie.ppkg`,
- `vnd.xmpie.xlim`,
- `vnd.yamaha.hv-dic`,
- `vnd.yamaha.hv-script`,
- `vnd.yamaha.hv-voice`,
- `vnd.yamaha.openscoreformat`,
- `vnd.yamaha.openscoreformat.osfpvg+xml`,
- `vnd.yamaha.remote-setup`,
- `vnd.yamaha.smaf-audio`,
- `vnd.yamaha.smaf-phrase`,
- `vnd.yamaha.through-ngn`,
- `vnd.yamaha.tunnel-udpencap`,
- `vnd.yaoweme`,
- `vnd.yellowriver-custom-menu`,
- `vnd.youtube.yt`,
- `vnd.zul`,
- `vnd.zzazz.deck+xml`,
- `voicexml+xml`,
- `voucher-cms+json`,
- `vq-rtcpxr`,
- `wasm`,
- `watcherinfo+xml`,
- `webpush-options+json`,
- `whoispp-query`,
- `whoispp-response`,
- `widget`,
- `winhlp`,
- `wita`,
- `wordperfect5.1`,
- `wsdl+xml`,
- `wspolicy+xml`,
- `x-7z-compressed`,
- `x-abiword`,
- `x-ace-compressed`,
- `x-amf`,
- `x-apple-diskimage`,
- `x-arj`,
- `x-authorware-bin`,
- `x-authorware-map`,
- `x-authorware-seg`,
- `x-bcpio`,
- `x-bdoc`,
- `x-bittorrent`,
- `x-blorb`,
- `x-bzip`,
- `x-bzip2`,
- `x-cbr`,
- `x-cdlink`,
- `x-cfs-compressed`,
- `x-chat`,
- `x-chess-pgn`,
- `x-chrome-extension`,
- `x-cocoa`,
- `x-compress`,
- `x-conference`,
- `x-cpio`,
- )
- }
- trait application_3 {
- lazy val `x-csh`: MediaType =
- new MediaType("application", "x-csh", Compressible, NotBinary, List("csh"))
- lazy val `x-deb`: MediaType = new MediaType("application", "x-deb", Uncompressible, NotBinary)
- lazy val `x-debian-package`: MediaType =
- new MediaType("application", "x-debian-package", Compressible, Binary, List("deb", "udeb"))
- lazy val `x-dgc-compressed`: MediaType =
- new MediaType("application", "x-dgc-compressed", Compressible, NotBinary, List("dgc"))
- lazy val `x-director`: MediaType = new MediaType(
- "application",
- "x-director",
- Compressible,
- NotBinary,
- List("dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"),
- )
- lazy val `x-doom`: MediaType =
- new MediaType("application", "x-doom", Compressible, NotBinary, List("wad"))
- lazy val `x-dtbncx+xml`: MediaType =
- new MediaType("application", "x-dtbncx+xml", Compressible, NotBinary, List("ncx"))
- lazy val `x-dtbook+xml`: MediaType =
- new MediaType("application", "x-dtbook+xml", Compressible, NotBinary, List("dtb"))
- lazy val `x-dtbresource+xml`: MediaType =
- new MediaType("application", "x-dtbresource+xml", Compressible, NotBinary, List("res"))
- lazy val `x-dvi`: MediaType =
- new MediaType("application", "x-dvi", Uncompressible, Binary, List("dvi"))
- lazy val `x-envoy`: MediaType =
- new MediaType("application", "x-envoy", Compressible, NotBinary, List("evy"))
- lazy val `x-eva`: MediaType =
- new MediaType("application", "x-eva", Compressible, NotBinary, List("eva"))
- lazy val `x-font-bdf`: MediaType =
- new MediaType("application", "x-font-bdf", Compressible, NotBinary, List("bdf"))
- lazy val `x-font-dos`: MediaType =
- new MediaType("application", "x-font-dos", Compressible, NotBinary)
- lazy val `x-font-framemaker`: MediaType =
- new MediaType("application", "x-font-framemaker", Compressible, NotBinary)
- lazy val `x-font-ghostscript`: MediaType =
- new MediaType("application", "x-font-ghostscript", Compressible, NotBinary, List("gsf"))
- lazy val `x-font-libgrx`: MediaType =
- new MediaType("application", "x-font-libgrx", Compressible, NotBinary)
- lazy val `x-font-linux-psf`: MediaType =
- new MediaType("application", "x-font-linux-psf", Compressible, NotBinary, List("psf"))
- lazy val `x-font-pcf`: MediaType =
- new MediaType("application", "x-font-pcf", Compressible, NotBinary, List("pcf"))
- lazy val `x-font-snf`: MediaType =
- new MediaType("application", "x-font-snf", Compressible, NotBinary, List("snf"))
- lazy val `x-font-speedo`: MediaType =
- new MediaType("application", "x-font-speedo", Compressible, NotBinary)
- lazy val `x-font-sunos-news`: MediaType =
- new MediaType("application", "x-font-sunos-news", Compressible, NotBinary)
- lazy val `x-font-type1`: MediaType = new MediaType(
- "application",
- "x-font-type1",
- Compressible,
- NotBinary,
- List("pfa", "pfb", "pfm", "afm"),
- )
- lazy val `x-font-vfont`: MediaType =
- new MediaType("application", "x-font-vfont", Compressible, NotBinary)
- lazy val `x-freearc`: MediaType =
- new MediaType("application", "x-freearc", Compressible, NotBinary, List("arc"))
- lazy val `x-futuresplash`: MediaType =
- new MediaType("application", "x-futuresplash", Compressible, NotBinary, List("spl"))
- lazy val `x-gca-compressed`: MediaType =
- new MediaType("application", "x-gca-compressed", Compressible, NotBinary, List("gca"))
- lazy val `x-glulx`: MediaType =
- new MediaType("application", "x-glulx", Compressible, NotBinary, List("ulx"))
- lazy val `x-gnumeric`: MediaType =
- new MediaType("application", "x-gnumeric", Compressible, NotBinary, List("gnumeric"))
- lazy val `x-gramps-xml`: MediaType =
- new MediaType("application", "x-gramps-xml", Compressible, NotBinary, List("gramps"))
- lazy val `x-gtar`: MediaType =
- new MediaType("application", "x-gtar", Compressible, Binary, List("gtar"))
- lazy val `x-gzip`: MediaType = new MediaType("application", "x-gzip", Compressible, Binary)
- lazy val `x-hdf`: MediaType =
- new MediaType("application", "x-hdf", Compressible, NotBinary, List("hdf"))
- lazy val `x-httpd-php`: MediaType =
- new MediaType("application", "x-httpd-php", Compressible, NotBinary, List("php"))
- lazy val `x-install-instructions`: MediaType = new MediaType(
- "application",
- "x-install-instructions",
- Compressible,
- NotBinary,
- List("install"),
- )
- lazy val `x-iso9660-image`: MediaType =
- new MediaType("application", "x-iso9660-image", Compressible, NotBinary, List("iso"))
- lazy val `x-java-archive-diff`: MediaType = new MediaType(
- "application",
- "x-java-archive-diff",
- Compressible,
- NotBinary,
- List("jardiff"),
- )
- lazy val `x-java-jnlp-file`: MediaType =
- new MediaType("application", "x-java-jnlp-file", Uncompressible, NotBinary, List("jnlp"))
- lazy val `x-javascript`: MediaType =
- new MediaType("application", "x-javascript", Compressible, NotBinary)
- lazy val `x-keepass2`: MediaType =
- new MediaType("application", "x-keepass2", Compressible, NotBinary, List("kdbx"))
- lazy val `x-latex`: MediaType =
- new MediaType("application", "x-latex", Uncompressible, Binary, List("latex"))
- lazy val `x-lua-bytecode`: MediaType =
- new MediaType("application", "x-lua-bytecode", Compressible, NotBinary, List("luac"))
- lazy val `x-lzh-compressed`: MediaType = new MediaType(
- "application",
- "x-lzh-compressed",
- Compressible,
- NotBinary,
- List("lzh", "lha"),
- )
- lazy val `x-makeself`: MediaType =
- new MediaType("application", "x-makeself", Compressible, NotBinary, List("run"))
- lazy val `x-mie`: MediaType =
- new MediaType("application", "x-mie", Compressible, NotBinary, List("mie"))
- lazy val `x-mobipocket-ebook`: MediaType = new MediaType(
- "application",
- "x-mobipocket-ebook",
- Compressible,
- NotBinary,
- List("prc", "mobi"),
- )
- lazy val `x-mpegurl`: MediaType =
- new MediaType("application", "x-mpegurl", Uncompressible, NotBinary)
- lazy val `x-ms-application`: MediaType = new MediaType(
- "application",
- "x-ms-application",
- Compressible,
- NotBinary,
- List("application"),
- )
- lazy val `x-ms-shortcut`: MediaType =
- new MediaType("application", "x-ms-shortcut", Compressible, NotBinary, List("lnk"))
- lazy val `x-ms-wmd`: MediaType =
- new MediaType("application", "x-ms-wmd", Compressible, NotBinary, List("wmd"))
- lazy val `x-ms-wmz`: MediaType =
- new MediaType("application", "x-ms-wmz", Compressible, NotBinary, List("wmz"))
- lazy val `x-ms-xbap`: MediaType =
- new MediaType("application", "x-ms-xbap", Compressible, NotBinary, List("xbap"))
- lazy val `x-msaccess`: MediaType =
- new MediaType("application", "x-msaccess", Compressible, NotBinary, List("mdb"))
- lazy val `x-msbinder`: MediaType =
- new MediaType("application", "x-msbinder", Compressible, NotBinary, List("obd"))
- lazy val `x-mscardfile`: MediaType =
- new MediaType("application", "x-mscardfile", Compressible, NotBinary, List("crd"))
- lazy val `x-msclip`: MediaType =
- new MediaType("application", "x-msclip", Compressible, NotBinary, List("clp"))
- lazy val `x-msdos-program`: MediaType =
- new MediaType("application", "x-msdos-program", Compressible, NotBinary, List("exe"))
- lazy val `x-msdownload`: MediaType = new MediaType(
- "application",
- "x-msdownload",
- Compressible,
- NotBinary,
- List("exe", "dll", "com", "bat", "msi"),
- )
- lazy val `x-msmediaview`: MediaType = new MediaType(
- "application",
- "x-msmediaview",
- Compressible,
- NotBinary,
- List("mvb", "m13", "m14"),
- )
- lazy val `x-msmetafile`: MediaType = new MediaType(
- "application",
- "x-msmetafile",
- Compressible,
- NotBinary,
- List("wmf", "wmz", "emf", "emz"),
- )
- lazy val `x-msmoney`: MediaType =
- new MediaType("application", "x-msmoney", Compressible, NotBinary, List("mny"))
- lazy val `x-mspublisher`: MediaType =
- new MediaType("application", "x-mspublisher", Compressible, NotBinary, List("pub"))
- lazy val `x-msschedule`: MediaType =
- new MediaType("application", "x-msschedule", Compressible, NotBinary, List("scd"))
- lazy val `x-msterminal`: MediaType =
- new MediaType("application", "x-msterminal", Compressible, NotBinary, List("trm"))
- lazy val `x-mswrite`: MediaType =
- new MediaType("application", "x-mswrite", Compressible, NotBinary, List("wri"))
- lazy val `x-netcdf`: MediaType =
- new MediaType("application", "x-netcdf", Compressible, NotBinary, List("nc", "cdf"))
- lazy val `x-ns-proxy-autoconfig`: MediaType =
- new MediaType("application", "x-ns-proxy-autoconfig", Compressible, NotBinary, List("pac"))
- lazy val `x-nzb`: MediaType =
- new MediaType("application", "x-nzb", Compressible, NotBinary, List("nzb"))
- lazy val `x-perl`: MediaType =
- new MediaType("application", "x-perl", Compressible, NotBinary, List("pl", "pm"))
- lazy val `x-pilot`: MediaType =
- new MediaType("application", "x-pilot", Compressible, NotBinary, List("prc", "pdb"))
- lazy val `x-pkcs12`: MediaType =
- new MediaType("application", "x-pkcs12", Uncompressible, NotBinary, List("p12", "pfx"))
- lazy val `x-pkcs7-certificates`: MediaType = new MediaType(
- "application",
- "x-pkcs7-certificates",
- Compressible,
- NotBinary,
- List("p7b", "spc"),
- )
- lazy val `x-pkcs7-certreqresp`: MediaType =
- new MediaType("application", "x-pkcs7-certreqresp", Compressible, NotBinary, List("p7r"))
- lazy val `x-pki-message`: MediaType =
- new MediaType("application", "x-pki-message", Compressible, NotBinary)
- lazy val `x-rar-compressed`: MediaType =
- new MediaType("application", "x-rar-compressed", Uncompressible, Binary, List("rar"))
- lazy val `x-redhat-package-manager`: MediaType =
- new MediaType("application", "x-redhat-package-manager", Compressible, Binary, List("rpm"))
- lazy val `x-research-info-systems`: MediaType = new MediaType(
- "application",
- "x-research-info-systems",
- Compressible,
- NotBinary,
- List("ris"),
- )
- lazy val `x-sea`: MediaType =
- new MediaType("application", "x-sea", Compressible, NotBinary, List("sea"))
- lazy val `x-sh`: MediaType =
- new MediaType("application", "x-sh", Compressible, NotBinary, List("sh"))
- lazy val `x-shar`: MediaType =
- new MediaType("application", "x-shar", Compressible, NotBinary, List("shar"))
- lazy val `x-shockwave-flash`: MediaType =
- new MediaType("application", "x-shockwave-flash", Uncompressible, Binary, List("swf"))
- lazy val `x-silverlight-app`: MediaType =
- new MediaType("application", "x-silverlight-app", Compressible, NotBinary, List("xap"))
- lazy val `x-sql`: MediaType =
- new MediaType("application", "x-sql", Compressible, NotBinary, List("sql"))
- lazy val `x-stuffit`: MediaType =
- new MediaType("application", "x-stuffit", Uncompressible, NotBinary, List("sit"))
- lazy val `x-stuffitx`: MediaType =
- new MediaType("application", "x-stuffitx", Compressible, NotBinary, List("sitx"))
- lazy val `x-subrip`: MediaType =
- new MediaType("application", "x-subrip", Compressible, NotBinary, List("srt"))
- lazy val `x-sv4cpio`: MediaType =
- new MediaType("application", "x-sv4cpio", Compressible, NotBinary, List("sv4cpio"))
- lazy val `x-sv4crc`: MediaType =
- new MediaType("application", "x-sv4crc", Compressible, NotBinary, List("sv4crc"))
- lazy val `x-t3vm-image`: MediaType =
- new MediaType("application", "x-t3vm-image", Compressible, NotBinary, List("t3"))
- lazy val `x-tads`: MediaType =
- new MediaType("application", "x-tads", Compressible, NotBinary, List("gam"))
- lazy val `x-tar`: MediaType =
- new MediaType("application", "x-tar", Compressible, Binary, List("tar"))
- lazy val `x-tcl`: MediaType =
- new MediaType("application", "x-tcl", Compressible, NotBinary, List("tcl", "tk"))
- lazy val `x-tex`: MediaType =
- new MediaType("application", "x-tex", Compressible, Binary, List("tex"))
- lazy val `x-tex-tfm`: MediaType =
- new MediaType("application", "x-tex-tfm", Compressible, NotBinary, List("tfm"))
- lazy val `x-texinfo`: MediaType =
- new MediaType("application", "x-texinfo", Compressible, Binary, List("texinfo", "texi"))
- lazy val `x-tgif`: MediaType =
- new MediaType("application", "x-tgif", Compressible, NotBinary, List("obj"))
- lazy val `x-ustar`: MediaType =
- new MediaType("application", "x-ustar", Compressible, NotBinary, List("ustar"))
- lazy val `x-virtualbox-hdd`: MediaType =
- new MediaType("application", "x-virtualbox-hdd", Compressible, NotBinary, List("hdd"))
- lazy val `x-virtualbox-ova`: MediaType =
- new MediaType("application", "x-virtualbox-ova", Compressible, NotBinary, List("ova"))
- lazy val `x-virtualbox-ovf`: MediaType =
- new MediaType("application", "x-virtualbox-ovf", Compressible, NotBinary, List("ovf"))
- lazy val `x-virtualbox-vbox`: MediaType =
- new MediaType("application", "x-virtualbox-vbox", Compressible, NotBinary, List("vbox"))
- lazy val `x-virtualbox-vbox-extpack`: MediaType = new MediaType(
- "application",
- "x-virtualbox-vbox-extpack",
- Uncompressible,
- NotBinary,
- List("vbox-extpack"),
- )
- lazy val `x-virtualbox-vdi`: MediaType =
- new MediaType("application", "x-virtualbox-vdi", Compressible, NotBinary, List("vdi"))
- lazy val `x-virtualbox-vhd`: MediaType =
- new MediaType("application", "x-virtualbox-vhd", Compressible, NotBinary, List("vhd"))
- lazy val `x-virtualbox-vmdk`: MediaType =
- new MediaType("application", "x-virtualbox-vmdk", Compressible, NotBinary, List("vmdk"))
- lazy val `x-wais-source`: MediaType =
- new MediaType("application", "x-wais-source", Compressible, NotBinary, List("src"))
- lazy val `x-web-app-manifest+json`: MediaType = new MediaType(
- "application",
- "x-web-app-manifest+json",
- Compressible,
- NotBinary,
- List("webapp"),
- )
- lazy val `x-www-form-urlencoded`: MediaType =
- new MediaType("application", "x-www-form-urlencoded", Compressible, NotBinary)
- lazy val `x-x509-ca-cert`: MediaType = new MediaType(
- "application",
- "x-x509-ca-cert",
- Compressible,
- Binary,
- List("der", "crt", "pem"),
- )
- lazy val `x-x509-ca-ra-cert`: MediaType =
- new MediaType("application", "x-x509-ca-ra-cert", Compressible, NotBinary)
- lazy val `x-x509-next-ca-cert`: MediaType =
- new MediaType("application", "x-x509-next-ca-cert", Compressible, NotBinary)
- lazy val `x-xfig`: MediaType =
- new MediaType("application", "x-xfig", Compressible, NotBinary, List("fig"))
- lazy val `x-xliff+xml`: MediaType =
- new MediaType("application", "x-xliff+xml", Compressible, NotBinary, List("xlf"))
- lazy val `x-xpinstall`: MediaType =
- new MediaType("application", "x-xpinstall", Uncompressible, Binary, List("xpi"))
- lazy val `x-xz`: MediaType =
- new MediaType("application", "x-xz", Compressible, NotBinary, List("xz"))
- lazy val `x-zmachine`: MediaType = new MediaType(
- "application",
- "x-zmachine",
- Compressible,
- NotBinary,
- List("z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"),
- )
- lazy val `x400-bp`: MediaType =
- new MediaType("application", "x400-bp", Compressible, NotBinary)
- lazy val `xacml+xml`: MediaType =
- new MediaType("application", "xacml+xml", Compressible, NotBinary)
- lazy val `xaml+xml`: MediaType =
- new MediaType("application", "xaml+xml", Compressible, NotBinary, List("xaml"))
- lazy val `xcap-att+xml`: MediaType =
- new MediaType("application", "xcap-att+xml", Compressible, NotBinary, List("xav"))
- lazy val `xcap-caps+xml`: MediaType =
- new MediaType("application", "xcap-caps+xml", Compressible, NotBinary, List("xca"))
- lazy val `xcap-diff+xml`: MediaType =
- new MediaType("application", "xcap-diff+xml", Compressible, NotBinary, List("xdf"))
- lazy val `xcap-el+xml`: MediaType =
- new MediaType("application", "xcap-el+xml", Compressible, NotBinary, List("xel"))
- lazy val `xcap-error+xml`: MediaType =
- new MediaType("application", "xcap-error+xml", Compressible, NotBinary)
- lazy val `xcap-ns+xml`: MediaType =
- new MediaType("application", "xcap-ns+xml", Compressible, NotBinary, List("xns"))
- lazy val `xcon-conference-info+xml`: MediaType =
- new MediaType("application", "xcon-conference-info+xml", Compressible, NotBinary)
- lazy val `xcon-conference-info-diff+xml`: MediaType =
- new MediaType("application", "xcon-conference-info-diff+xml", Compressible, NotBinary)
- lazy val `xenc+xml`: MediaType =
- new MediaType("application", "xenc+xml", Compressible, NotBinary, List("xenc"))
- lazy val `xhtml+xml`: MediaType =
- new MediaType("application", "xhtml+xml", Compressible, NotBinary, List("xhtml", "xht"))
- lazy val `xhtml-voice+xml`: MediaType =
- new MediaType("application", "xhtml-voice+xml", Compressible, NotBinary)
- lazy val `xliff+xml`: MediaType =
- new MediaType("application", "xliff+xml", Compressible, NotBinary, List("xlf"))
- lazy val `xml`: MediaType = new MediaType(
- "application",
- "xml",
- Compressible,
- NotBinary,
- List("xml", "xsl", "xsd", "rng"),
+
+ lazy val `vnd.radisys.msml-dialog-speech+xml`: MediaType =
+ new MediaType("application", "vnd.radisys.msml-dialog-speech+xml", compressible = true, binary = true)
+
+ lazy val `vnd.3gpp.srvcc-info+xml`: MediaType =
+ new MediaType("application", "vnd.3gpp.srvcc-info+xml", compressible = true, binary = true)
+
+ lazy val `vnd.japannet-jpnstore-wakeup`: MediaType =
+ new MediaType("application", "vnd.japannet-jpnstore-wakeup", compressible = false, binary = true)
+
+ lazy val `alto-costmapfilter+json`: MediaType =
+ new MediaType("application", "alto-costmapfilter+json", compressible = true, binary = false)
+
+ lazy val `vnd.ims.imsccv1p1`: MediaType =
+ new MediaType("application", "vnd.ims.imsccv1p1", compressible = false, binary = true)
+
+ lazy val `vnd.ms-windows.wsd.oob`: MediaType =
+ new MediaType("application", "vnd.ms-windows.wsd.oob", compressible = false, binary = true)
+
+ lazy val `swid+xml`: MediaType =
+ new MediaType("application", "swid+xml", compressible = true, binary = true, List("swidtag"))
+
+ lazy val `rpki-checklist`: MediaType =
+ new MediaType("application", "rpki-checklist", compressible = false, binary = true)
+
+ lazy val `vnd.dtg.local.html`: MediaType =
+ new MediaType("application", "vnd.dtg.local.html", compressible = false, binary = true)
+
+ lazy val `yin+xml`: MediaType =
+ new MediaType("application", "yin+xml", compressible = true, binary = true, List("yin"))
+
+ lazy val all: List[MediaType] = List(
+ `x-bdoc`,
+ `vnd.3gpp.mcptt-location-info+xml`,
+ `vnd.ctct.ws+xml`,
+ `vnd.trueapp`,
+ `vnd.geogebra.tool`,
+ `vnd.ms-works`,
+ `vnd.hc+json`,
+ `vnd.ims.lti.v2.toolconsumerprofile+json`,
+ `vnd.3gpp.pfcp`,
+ `wordperfect5.1`,
+ `ace+cbor`,
+ `vnd.kodak-descriptor`,
+ `tetra_isi`,
+ `vnd.collabio.xodocuments.presentation-template`,
+ `vnd.oasis.opendocument.text`,
+ `vnd.fujitsu.oasys2`,
+ `commonground`,
+ `vnd.evolv.ecig.profile`,
+ `vnd.gov.sk.xmldatacontainer+xml`,
+ `simple-filter+xml`,
+ `vnd.chess-pgn`,
+ `vnd.oma.lwm2m+tlv`,
+ `vnd.gov.sk.e-form+xml`,
+ `jwk-set+json`,
+ `index.response`,
+ `vnd.novadigm.edx`,
+ `mathml-presentation+xml`,
+ `urc-targetdesc+xml`,
+ `vnd.nokia.conml+xml`,
+ `vnd.anser-web-funds-transfer-initiation`,
+ `vnd.dvb.service`,
+ `x-compress`,
+ `vnd.ms-wmdrm.meter-resp`,
+ `vnd.etsi.pstn+xml`,
+ `route-usd+xml`,
+ `x-msmoney`,
+ `vnd.tcpdump.pcap`,
+ `vnd.smintio.portals.archive`,
+ `vnd.medcalcdata`,
+ `cbor-seq`,
+ `vnd.3gpp.mcdata-msgstore-ctrl-request+xml`,
+ `vnd.oma.poc.groups+xml`,
+ `yang-patch+json`,
+ `vnd.3gpp2.sms`,
+ `passport`,
+ `atomdeleted+xml`,
+ `x-blorb`,
+ `marcxml+xml`,
+ `ocsp-request`,
+ `vnd.cirpack.isdn-ext`,
+ `vnd.truedoc`,
+ `tzif`,
+ `vnd.openxmlformats-officedocument.vmldrawing`,
+ `yang-data+cbor`,
+ `vnd.ecowin.series`,
+ `vnd.groove-identity-message`,
+ `vnd.s3sms`,
+ `vnd.nacamar.ybrid+json`,
+ `x-ms-xbap`,
+ `vnd.ipld.dag-cbor`,
+ `macwriteii`,
+ `vnd.ezpix-album`,
+ `vnd.openeye.oeb`,
+ `vnd.cryptomator.vault`,
+ `3gpp-ims+xml`,
+ `vnd.sybyl.mol2`,
+ `vnd.informix-visionary`,
+ `pkcs8-encrypted`,
+ `vnd.radisys.msml-dialog-base+xml`,
+ `vnd.wmc`,
+ `vnd.mfmp`,
+ `xcap-att+xml`,
+ `spirits-event+xml`,
+ `oauth-authz-req+jwt`,
+ `alto-propmapparams+json`,
+ `pskc+xml`,
+ `vnd.data-vision.rdz`,
+ `vnd.visio`,
+ `vnd.oma.bcast.stkm`,
+ `vnd.mfer`,
+ `vnd.ntt-local.ogw_remote-access`,
+ `logout+jwt`,
+ `cwt`,
+ `load-control+xml`,
+ `vnd.gentoo.manifest`,
+ `vnd.smaf`,
+ `vnd.otps.ct-kip+xml`,
+ `vnd.nokia.pcd+xml`,
+ `vnd.scribus`,
+ `vnd.ntt-local.sip-ta_tcp_stream`,
+ `geo+json`,
+ `ocsp-response`,
+ `vnd.apple.pages`,
+ `vnd.micrografx.igx`,
+ `cbor`,
+ `3gpphal+json`,
+ `vnd.kde.kpresenter`,
+ `json`,
+ `vnd.iptc.g2.conceptitem+xml`,
+ `vnd.cups-raster`,
+ `vnd.amazon.ebook`,
+ `vnd.musician`,
+ `vnd.oftn.l10n+json`,
+ `sdp`,
+ `vnd.kde.kformula`,
+ `x-nzb`,
+ `vnd.uplanet.cacheop`,
+ `vnd.ruckus.download`,
+ `vnd.oasis.opendocument.base`,
+ `x-java-jnlp-file`,
+ `pkcs12`,
+ `resource-lists+xml`,
+ `odm+xml`,
+ `vnd.jsk.isdn-ngn`,
+ `iotp`,
+ `pkix-crl`,
+ `vnd.geogebra.file`,
+ `ace+json`,
+ `x-gca-compressed`,
+ `sparql-results+xml`,
+ `xspf+xml`,
+ `vnd.crypto-shade-file`,
+ `vnd.is-xpr`,
+ `beep+xml`,
+ `vnd.filmit.zfc`,
+ `vnd.oma.bcast.simple-symbol-container`,
+ `framework-attributes+xml`,
+ `vnd.collabio.xodocuments.spreadsheet-template`,
+ `vnd.groove-account`,
+ `clue_info+xml`,
+ `vnd.software602.filler.form+xml`,
+ `x-font-sunos-news`,
+ `vnd.fujixerox.docuworks.container`,
+ `pls+xml`,
+ `dicom+json`,
+ `vnd.oasis.opendocument.text-template`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml`,
+ `vnd.epson.salt`,
+ `vnd.onepagertatx`,
+ `vnd.nokia.radio-presets`,
+ `x-keepass2`,
+ `sieve`,
+ `vnd.geometry-explorer`,
+ `vnd.yamaha.openscoreformat`,
+ `msc-mixer+xml`,
+ `vnd.ciedi`,
+ `vnd.jcp.javame.midlet-rms`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml`,
+ `edi-consent`,
+ `x-virtualbox-hdd`,
+ `vnd.aether.imp`,
+ `json5`,
+ `vnd.oma.cab-subs-invite+xml`,
+ `flexfec`,
+ `vnd.3gpp.mcptt-user-profile+xml`,
+ `cybercash`,
+ `vnd.oasis.opendocument.presentation`,
+ `atomcat+xml`,
+ `dash+xml`,
+ `vnd.uri-map`,
+ `vnd.radisys.msml-dialog-group+xml`,
+ `xcap-diff+xml`,
+ `tamp-apex-update-confirm`,
+ `vnd.ms-ims`,
+ `x-virtualbox-vbox-extpack`,
+ `concise-problem-details+cbor`,
+ `alto-networkmapfilter+json`,
+ `vnd.noblenet-web`,
+ `vnd.tableschema+json`,
+ `elm+xml`,
+ `x-dvi`,
+ `vnd.nokia.iptv.config+xml`,
+ `whoispp-response`,
+ `vnd.afpc.foca-codedfont`,
+ `x-msmediaview`,
+ `emergencycalldata.serviceinfo+xml`,
+ `vnd.sbm.cid`,
+ `vnd.yamaha.smaf-audio`,
+ `vnd.3gpp.mcptt-info+xml`,
+ `vnd.oipf.userprofile+xml`,
+ `vnd.eln+zip`,
+ `cose`,
+ `prs.rdf-xml-crypt`,
+ `vnd.oasis.opendocument.image-template`,
+ `vnd.innopath.wamp.notification`,
+ `vnd.evolv.ecig.theme`,
+ `vnd.onepagertat`,
+ `vnd.wolfram.mathematica`,
+ `vnd.pwg-xhtml-print+xml`,
+ `vnd.gnu.taler.merchant+json`,
+ `voicexml+xml`,
+ `vnd.geospace`,
+ `vnd.vd-study`,
+ `vnd.3gpp.mcvideo-info+xml`,
+ `sbe`,
+ `x-chrome-extension`,
+ `vnd.omads-email+xml`,
+ `x-ms-wmz`,
+ `vnd.apache.arrow.stream`,
+ `vnd.kde.kchart`,
+ `vnd.crick.clicker.keyboard`,
+ `vnd.loom`,
+ `vnd.sqlite3`,
+ `vnd.dolby.mlp`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.sheet`,
+ `vnd.stardivision.impress`,
+ `vnd.mozilla.xul+xml`,
+ `x-zmachine`,
+ `vnd.3gpp.mc-signalling-ear`,
+ `vnd.dvb.notif-aggregate-root+xml`,
+ `vnd.noblenet-directory`,
+ `automationml-aml+xml`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml`,
+ `x-httpd-php`,
+ `vnd.pwg-multiplexed`,
+ `vnd.pawaafile`,
+ `activemessage`,
+ `vnd.balsamiq.bmml+xml`,
+ `emergencycalldata.deviceinfo+xml`,
+ `vnd.android.ota`,
+ `vnd.motorola.flexsuite.kmr`,
+ `csvm+json`,
+ `vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml`,
+ `x-texinfo`,
+ `vnd.fujitsu.oasysgp`,
+ `vividence.scriptfile`,
+ `vnd.crick.clicker`,
+ `vnd.rainstor.data`,
+ `shf+xml`,
+ `vnd.etsi.cug+xml`,
+ `senml-etch+json`,
+ `cccex`,
+ `vnd.d2l.coursepackage1p0+zip`,
+ `vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml`,
+ `vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml`,
+ `prs.plucker`,
+ `vnd.dxr`,
+ `vnd.ecowin.chart`,
+ `vnd.etsi.aoc+xml`,
+ `atsc-rsat+xml`,
+ `vnd.cinderella`,
+ `vnd.renlearn.rlprint`,
+ `dart`,
+ `json-patch+json`,
+ `scim+json`,
+ `pgp-keys`,
+ `vnd.3gpp.mcptt-signed+xml`,
+ `x-tex`,
+ `x-shar`,
+ `lgr+xml`,
+ `x-dgc-compressed`,
+ `vnd.intertrust.nncp`,
+ `vnd.ms-xpsdocument`,
+ `1d-interleaved-parityfec`,
+ `vnd.artisan+json`,
+ `vnd.etsi.iptvservice+xml`,
+ `vnd.sun.xml.impress`,
+ `vnd.fujixerox.art4`,
+ `atsc-held+xml`,
+ `tamp-update-confirm`,
+ `vnd.sigrok.session`,
+ `vnd.dvb.notif-container+xml`,
+ `nss`,
+ `vnd.denovo.fcselayout-link`,
+ `vnd.etsi.asic-s+zip`,
+ `senml+json`,
+ `vnd.nokia.pcd+wbxml`,
+ `city+json`,
+ `vnd.openxmlformats-officedocument.theme+xml`,
+ `dit`,
+ `p21`,
+ `cals-1840`,
+ `yang-data+json`,
+ `vnd.nokia.n-gage.symbian.install`,
+ `encaprtp`,
+ `vnd.ms-windows.devicepairing`,
+ `vnd.japannet-payment-wakeup`,
+ `problem+xml`,
+ `vnd.cluetrust.cartomobile-config-pkg`,
+ `sensml+xml`,
+ `parityfec`,
+ `vnd.desmume.movie`,
+ `vnd.osgi.subsystem`,
+ `vnd.ubisoft.webplayer`,
+ `vnd.3gpp.mcdata-user-profile+xml`,
+ `jrd+json`,
+ `vnd.onepagertamp`,
+ `vnd.fujitsu.oasysprs`,
+ `vnd.antix.game-component`,
+ `gzip`,
+ `vnd.3gpp.gtpc`,
+ `vnd.capasystems-pg+json`,
+ `vnd.apexlang`,
+ `x-xpinstall`,
+ `vnd.uplanet.listcmd-wbxml`,
+ `vnd.muvee.style`,
+ `vnd.immervision-ivp`,
+ `x-font-ghostscript`,
+ `x-debian-package`,
+ `vnd.sun.xml.draw.template`,
+ `vnd.3gpp.mcdata-payload`,
+ `moss-signature`,
+ `vnd.sailingtracker.track`,
+ `vnd.openxmlformats-officedocument.presentationml.notesmaster+xml`,
+ `raml+yaml`,
+ `vnd.fujixerox.hbpl`,
+ `vnd.gnu.taler.exchange+json`,
+ `vnd.oipf.dae.xhtml+xml`,
+ `x-envoy`,
+ `vnd.fastcopy-disk-image`,
+ `vnd.webturbo`,
+ `linkset+json`,
+ `vnd.omads-file+xml`,
+ `vnd.openxmlformats-officedocument.presentationml.slideshow`,
+ `jwk+json`,
+ `vnd.multiad.creator.cif`,
+ `vq-rtcpxr`,
+ `3gpdash-qoe-report+xml`,
+ `soap+fastinfoset`,
+ `vnd.tao.intent-module-archive`,
+ `x-msaccess`,
+ `vnd.xmpie.xlim`,
+ `vnd.quobject-quoxdocument`,
+ `tnauthlist`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.footer+xml`,
+ `vnd.firemonkeys.cloudcell`,
+ `vnd.nokia.isds-radio-presets`,
+ `vnd.gmx`,
+ `vnd.d3m-problem`,
+ `vnd.vsf`,
+ `sql`,
+ `vnd.mason+json`,
+ `x-tgif`,
+ `x-www-form-urlencoded`,
+ `epub+zip`,
+ `vnd.onvif.metadata`,
+ `odx`,
+ `vnd.openxmlformats-officedocument.presentationml.slide`,
+ `vnd.dvb.ipdcesgaccess2`,
+ `x-font-framemaker`,
+ `vnd.ms-word.template.macroenabled.12`,
+ `vnd.openxmlformats-officedocument.presentationml.slide+xml`,
+ `zip`,
+ `vnd.dvb.ait`,
+ `vnd.afpc.modca-objectcontainer`,
+ `vnd.sun.xml.writer.global`,
+ `vnd.tmd.mediaflex.api+xml`,
+ `watcherinfo+xml`,
+ `dash-patch+xml`,
+ `x-gnumeric`,
+ `mods+xml`,
+ `spdx+json`,
+ `vnd.amadeus+json`,
+ `andrew-inset`,
+ `vnd.cncf.helm.chart.content.v1.tar+gzip`,
+ `vnd.shade-save-file`,
+ `vnd.motorola.flexsuite.wem`,
+ `x-tcl`,
+ `vnd.fdf`,
+ `tamp-community-update-confirm`,
+ `vnd.ms-fontobject`,
+ `ccxml+xml`,
+ `vnd.shx`,
+ `vnd.afpc.foca-charset`,
+ `mp4`,
+ `mxf`,
+ `vnd.oma.bcast.ltkm`,
+ `vnd.ms-office.activex+xml`,
+ `vnd.multiad.creator`,
+ `edi-x12`,
+ `vnd.ms-lrm`,
+ `vnd.trid.tpt`,
+ `vnd.ms-pki.stl`,
+ `rtploopback`,
+ `set-registration-initiation`,
+ `call-completion`,
+ `vnd.lotus-1-2-3`,
+ `x-mpegurl`,
+ `mbms-reception-report+xml`,
+ `vnd.olpc-sugar`,
+ `sipc`,
+ `vnd.eu.kasparian.car+json`,
+ `x-glulx`,
+ `geo+json-seq`,
+ `vnd.ahead.space`,
+ `vnd.xmpie.cpkg`,
+ `cdmi-capability`,
+ `trickle-ice-sdpfrag`,
+ `vnd.mobius.dis`,
+ `vnd.cncf.helm.chart.provenance.v1.prov`,
+ `vnd.avalon+json`,
+ `vnd.lotus-screencam`,
+ `x-perl`,
+ `vnd.datapackage+json`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.template`,
+ `vnd.ms-opentype`,
+ `vnd.openxmlformats-officedocument.presentationml.template`,
+ `vnd.collabio.xodocuments.spreadsheet`,
+ `vnd.cryptomator.encrypted`,
+ `vnd.afpc.modca`,
+ `onenote`,
+ `cdmi-domain`,
+ `vnd.hal+xml`,
+ `vnd.canon-cpdl`,
+ `vnd.mcd`,
+ `vnd.ibm.electronic-media`,
+ `fhir+xml`,
+ `tamp-error`,
+ `vnd.dvb.notif-generic+xml`,
+ `vnd.3gpp.ussd+xml`,
+ `vnd.semf`,
+ `vnd.dvb.ipdcdftnotifaccess`,
+ `vnd.marlin.drm.license+xml`,
+ `ogg`,
+ `geopackage+sqlite3`,
+ `dashdelta`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml`,
+ `vnd.ufdl`,
+ `senml-exi`,
+ `vnd.powerbuilder7-s`,
+ `index`,
+ `mbms-deregister+xml`,
+ `vnd.easykaraoke.cdgdownload`,
+ `vnd.cups-ppd`,
+ `vnd.oma.bcast.sgdu`,
+ `x-chess-pgn`,
+ `vnd.ms-playready.initiator+xml`,
+ `cose-x509`,
+ `vnd.dir-bi.plate-dl-nosuffix`,
+ `vnd.crick.clicker.template`,
+ `vnd.uiq.theme`,
+ `json-seq`,
+ `vnd.lotus-wordpro`,
+ `vnd.adobe.partial-upload`,
+ `sep+xml`,
+ `vnd.claymore`,
+ `tar`,
+ `rpki-roa`,
+ `clr`,
+ `vnd.oasis.opendocument.formula-template`,
+ `vnd.oma.dd2+xml`,
+ `vnd.sealed.doc`,
+ `vnd.wrq-hp3000-labelled`,
+ `vnd.arastra.swi`,
+ `vnd.flographit`,
+ `winhlp`,
+ `vnd.dbf`,
+ `x-latex`,
+ `td+json`,
+ `vnd.3gpp-prose-pc3ch+xml`,
+ `cda+xml`,
+ `vnd.gridmp`,
+ `vnd.dataresource+json`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml`,
+ `news-checkgroups`,
+ `vnd.solent.sdkm+xml`,
+ `atfx`,
+ `vnd.globalplatform.card-content-mgt`,
+ `vnd.acucobol`,
+ `vnd.adobe.fxp`,
+ `vnd.ms-wpl`,
+ `x-bzip`,
+ `vnd.leap+json`,
+ `vnd.dynageo`,
+ `sensml+json`,
+ `vnd.collection.next+json`,
+ `coap-payload`,
+ `vnd.sss-dtf`,
+ `postscript`,
+ `timestamp-reply`,
+ `vnd.etsi.mheg5`,
+ `vnd.fuzzysheet`,
+ `vnd.oipf.spdlist+xml`,
+ `x-cocoa`,
+ `vnd.3gpp.gmop+xml`,
+ `vnd.exstream-empower+zip`,
+ `vnd.omads-folder+xml`,
+ `vnd.google-apps.presentation`,
+ `vnd.syncml.dm.notification`,
+ `x-stuffit`,
+ `vnd.motorola.flexsuite.adsi`,
+ `xcon-conference-info-diff+xml`,
+ `docbook+xml`,
+ `vnd.eudora.data`,
+ `vnd.ntt-local.content-share`,
+ `vnd.etsi.iptvprofile+xml`,
+ `vnd.mediastation.cdkey`,
+ `sgml-open-catalog`,
+ `x-lzh-compressed`,
+ `vnd.sealed.eml`,
+ `aml`,
+ `vnd.oma.bcast.sgboot`,
+ `scvp-cv-response`,
+ `vnd.cyclonedx+json`,
+ `vnd.ms-wmdrm.meter-chlg-req`,
+ `vnd.fujifilm.fb.jfi+xml`,
+ `xproc+xml`,
+ `vnd.rn-realmedia`,
+ `ulpfec`,
+ `vnd.genozip`,
+ `vnd.opentimestamps.ots`,
+ `vnd.oasis.opendocument.text-web`,
+ `dcd`,
+ `vnd.oipf.ueprofile+xml`,
+ `vnd.ms-word.document.macroenabled.12`,
+ `vnd.vidsoft.vidconference`,
+ `vnd.etsi.iptvdiscovery+xml`,
+ `vnd.oma.poc.invocation-descriptor+xml`,
+ `x-arj`,
+ `slate`,
+ `vnd.oasis.opendocument.graphics`,
+ `vnd.patientecommsdoc`,
+ `x-director`,
+ `gpx+xml`,
+ `vnd.rig.cryptonote`,
+ `vnd.syncml.dmddf+wbxml`,
+ `x-javascript`,
+ `x-pkcs7-certreqresp`,
+ `patch-ops-error+xml`,
+ `vnd.fujifilm.fb.docuworks`,
+ `vnd.etsi.iptvsad-bc+xml`,
+ `vnd.criticaltools.wbs+xml`,
+ `pidf-diff+xml`,
+ `vnd.familysearch.gedcom+zip`,
+ `x-xz`,
+ `cose-key`,
+ `jscalendar+json`,
+ `dicom+xml`,
+ `vnd.kde.kword`,
+ `vnd.syncml.dmddf+xml`,
+ `vnd.oma.xcap-directory+xml`,
+ `vnd.nokia.catalogs`,
+ `reputon+json`,
+ `vnd.acucorp`,
+ `vnd.jam`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.styles+xml`,
+ `pvd+json`,
+ `vnd.uplanet.list`,
+ `vnd.verimatrix.vcas`,
+ `vnd.bint.med-content`,
+ `ld+json`,
+ `x-virtualbox-ova`,
+ `tei+xml`,
+ `rpki-ghostbusters`,
+ `vnd.oipf.contentaccessstreaming+xml`,
+ `atf`,
+ `smil`,
+ `vnd.afpc.foca-codepage`,
+ `vnd.ficlab.flb+zip`,
+ `vnd.afpc.afplinedata`,
+ `opc-nodeset+xml`,
+ `vnd.ibm.rights-management`,
+ `x-silverlight-app`,
+ `x-font-libgrx`,
+ `alto-directory+json`,
+ `zlib`,
+ `vnd.japannet-verification`,
+ `vnd.patentdive`,
+ `vnd.openxmlformats-officedocument.drawing+xml`,
+ `vnd.commerce-battelle`,
+ `vnd.wap.wmlscriptc`,
+ `atxml`,
+ `secevent+jwt`,
+ `multipart-core`,
+ `cms`,
+ `vnd.panoply`,
+ `srgs+xml`,
+ `x-csh`,
+ `vnd.oma.bcast.associated-procedure-parameter+xml`,
+ `vnd.radisys.msml-dialog+xml`,
+ `vnd.dvb.notif-init+xml`,
+ `vnd.ecowin.seriesrequest`,
+ `vnd.oma.bcast.sgdd+xml`,
+ `vnd.3gpp.pic-bw-var`,
+ `iges`,
+ `msixbundle`,
+ `vnd.noblenet-sealer`,
+ `dec-dx`,
+ `manifest+json`,
+ `vnd.apple.mpegurl`,
+ `vnd.adobe.formscentral.fcdt`,
+ `vnd.gentoo.gpkg`,
+ `mosskey-request`,
+ `yang-data+xml`,
+ `x-abiword`,
+ `mbox`,
+ `vnd.apache.thrift.binary`,
+ `x-makeself`,
+ `vnd.debian.binary-package`,
+ `vnd.google-earth.kmz`,
+ `x-shockwave-flash`,
+ `emergencycalldata.providerinfo+xml`,
+ `fdt+xml`,
+ `rtx`,
+ `vnd.nokia.landmark+wbxml`,
+ `vnd.intu.qfx`,
+ `lpf+zip`,
+ `vnd.ims.lti.v2.toolsettings+json`,
+ `vnd.afpc.modca-overlay`,
+ `vnd.osgeo.mapguide.package`,
+ `vnd.yamaha.remote-setup`,
+ `vnd.cyan.dean.root+xml`,
+ `ubjson`,
+ `vnd.dolby.mobile.1`,
+ `mbms-envelope+xml`,
+ `vnd.openxmlformats-officedocument.presentationml.presentation`,
+ `cdfx+xml`,
+ `vnd.hydrostatix.sof-data`,
+ `vnd.afpc.afplinedata-pagedef`,
+ `vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml`,
+ `aif+cbor`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.template`,
+ `appxbundle`,
+ `vnd.koan`,
+ `vnd.osa.netdeploy`,
+ `mbms-msk+xml`,
+ `vnd.dece.unspecified`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml`,
+ `vnd.fujifilm.fb.docuworks.binder`,
+ `x-ms-application`,
+ `n-quads`,
+ `davmount+xml`,
+ `vnd.oasis.opendocument.graphics-template`,
+ `vnd.emclient.accessrequest+xml`,
+ `vnd.efi.img`,
+ `x-iwork-pages-sffpages`,
+ `mipc`,
+ `vnd.lotus-approach`,
+ `vnd.bmi`,
+ `vnd.dece.ttml+xml`,
+ `vnd.shana.informed.formtemplate`,
+ `vnd.3gpp.mcdata-info+xml`,
+ `vnd.oma-scws-http-request`,
+ `vnd.hbci`,
+ `x-xfig`,
+ `vnd.3gpp.ngap`,
+ `route-s-tsid+xml`,
+ `vnd.kenameaapp`,
+ `vnd.kahootz`,
+ `vnd.cluetrust.cartomobile-config`,
+ `vnd.uplanet.alert`,
+ `vnd.rar`,
+ `vnd.nokia.landmark+xml`,
+ `vnd.ms-windows.nwprinting.oob`,
+ `vnd.yamaha.hv-script`,
+ `x-install-instructions`,
+ `vnd.evolv.ecig.settings`,
+ `vnd.pg.osasli`,
+ `pkcs8`,
+ `at+jwt`,
+ `vnd.ntt-local.sip-ta_remote`,
+ `vnd.dm.delegation+xml`,
+ `vnd.intergeo`,
+ `tamp-apex-update`,
+ `x-bzip2`,
+ `vnd.fujixerox.docuworks`,
+ `ccmp+xml`,
+ `vnd.ffsns`,
+ `x-chat`,
+ `vnd.ves.encrypted`,
+ `vnd.xmpie.ppkg`,
+ `held+xml`,
+ `vnd.ms-wmdrm.lic-resp`,
+ `qsig`,
+ `vnd.oasis.opendocument.presentation-template`,
+ `vnd.iptc.g2.packageitem+xml`,
+ `vnd.realvnc.bed`,
+ `mets+xml`,
+ `atsc-dynamic-event-message`,
+ `nasdata`,
+ `x-pilot`,
+ `java-serialized-object`,
+ `x-stuffitx`,
+ `simple-message-summary`,
+ `zstd`,
+ `news-transmission`,
+ `vnd.fujitsu.oasys`,
+ `vnd.adobe.xfdf`,
+ `dssc+xml`,
+ `vnd.netfpx`,
+ `vnd.etsi.tsl+xml`,
+ `vnd.palm`,
+ `expect-ct-report+json`,
+ `applixware`,
+ `vnd.adobe.air-application-installer-package+zip`,
+ `vnd.dart`,
+ `vnd.osgi.dp`,
+ `vnd.sun.xml.impress.template`,
+ `vnd.cups-raw`,
+ `alto-cdnifilter+json`,
+ `vnd.shana.informed.formdata`,
+ `its+xml`,
+ `vnd.zul`,
+ `vnd.pvi.ptid1`,
+ `vnd.3gpp.mcvideo-location-info+xml`,
+ `alto-endpointcost+json`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.settings+xml`,
+ `stix+json`,
+ `vnd.wqd`,
+ `vnd.japannet-setstore-wakeup`,
+ `vnd.ericsson.quickcall`,
+ `efi`,
+ `vnd.android.package-archive`,
+ `vnd.3gpp.mcptt-ue-config+xml`,
+ `vnd.ms-powerpoint.presentation.macroenabled.12`,
+ `set-registration`,
+ `vnd.laszip`,
+ `vnd.stardivision.writer`,
+ `gml+xml`,
+ `ppsp-tracker+json`,
+ `cdmi-container`,
+ `x-mswrite`,
+ `x-sv4crc`,
+ `vnd.ms-printdevicecapabilities+xml`,
+ `vnd.mobius.mbk`,
+ `vnd.fujifilm.fb.docuworks.container`,
+ `tamp-sequence-adjust-confirm`,
+ `fastinfoset`,
+ `vnd.veryant.thin`,
+ `vcard+json`,
+ `vnd.audiograph`,
+ `vnd.heroku+json`,
+ `vnd.mobius.msl`,
+ `vnd.dvb.pfr`,
+ `vnd.enliven`,
+ `x-dtbook+xml`,
+ `pdx`,
+ `vnd.3gpp-prose-pc8+xml`,
+ `atom+xml`,
+ `vnd.fut-misnet`,
+ `x-iwork-numbers-sffnumbers`,
+ `vnd.micro+json`,
+ `vnd.blueice.multipass`,
+ `vnd.3gpp.mcvideo-transmission-request+xml`,
+ `mbms-associated-procedure-description+xml`,
+ `vnd.bbf.usp.msg+json`,
+ `vnd.radisys.msml-conf+xml`,
+ `vnd.futoin+json`,
+ `vnd.mophun.application`,
+ `x-rar-compressed`,
+ `vnd.3gpp.mcvideo-affiliation-command+xml`,
+ `vnd.publishare-delta-tree`,
+ `vnd.font-fontforge-sfd`,
+ `vnd.autopackage`,
+ `vnd.airzip.filesecure.azs`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml`,
+ `vnd.americandynamics.acc`,
+ `xslt+xml`,
+ `rls-services+xml`,
+ `moss-keys`,
+ `vnd.ibm.afplinedata`,
+ `x-font-bdf`,
+ `vnd.hp-hps`,
+ `vnd.apothekende.reservation+json`,
+ `vnd.hzn-3d-crossword`,
+ `vnd.japannet-registration`,
+ `vnd.sun.xml.calc`,
+ `vnd.wolfram.mathematica.package`,
+ `vnd.framemaker`,
+ `vnd.3gpp.5gnas`,
+ `vnd.zzazz.deck+xml`,
+ `index.obj`,
+ `vnd.pagerduty+json`,
+ `vnd.uplanet.bearer-choice`,
+ `vnd.llamagraphics.life-balance.desktop`,
+ `ttml+xml`,
+ `vnd.xmi+xml`,
+ `vnd.nebumind.line`,
+ `x-pkcs7-certificates`,
+ `sparql-query`,
+ `vnd.hp-hpid`,
+ `mrb-consumer+xml`,
+ `vnd.sbm.mid2`,
+ `mosskey-data`,
+ `vnd.hp-pcl`,
+ `vnd.openxmlformats-officedocument.presentationml.tags+xml`,
+ `linkset`,
+ `vnd.coreos.ignition+json`,
+ `vnd.ims.imsccv1p2`,
+ `vnd.dzr`,
+ `vnd.hcl-bireports`,
+ `vnd.mophun.certificate`,
+ `vnd.ims.lti.v2.toolproxy+json`,
+ `vnd.piaccess.application-licence`,
+ `vnd.cloanto.rp9`,
+ `vnd.openxmlformats-officedocument.presentationml.slidemaster+xml`,
+ `vnd.paos.xml`,
+ `vnd.dvb.notif-ia-registration-response+xml`,
+ `x-cpio`,
+ `vnd.recordare.musicxml`,
+ `atomicmail`,
+ `vnd.uplanet.cacheop-wbxml`,
+ `set-payment-initiation`,
+ `vnd.stardivision.draw`,
+ `vnd.nimn`,
+ `vnd.powerbuilder7`,
+ `vnd.apple.pkpass`,
+ `vnd.uplanet.listcmd`,
+ `oebps-package+xml`,
+ `vnd.wfa.dpp`,
+ `gltf-buffer`,
+ `x-dtbresource+xml`,
+ `x-deb`,
+ `vnd.street-stream`,
+ `vnd.3gpp-v2x-local-service-information`,
+ `vnd.dvb.ipdcesgpdd`,
+ `vnd.fdsn.mseed`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml`,
+ `vnd.uplanet.channel-wbxml`,
+ `vnd.yamaha.hv-voice`,
+ `alto-propmap+json`,
+ `vnd.1000minds.decision-model+xml`,
+ `mathematica`,
+ `problem+json`,
+ `vnd.iptc.g2.newsitem+xml`,
+ `vnd.nokia.landmarkcollection+xml`,
+ `x-xliff+xml`,
+ `atsc-dwd+xml`,
+ `automationml-amlx+zip`,
+ `vnd.bluetooth.ep.oob`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.styles+xml`,
+ `vnd.cendio.thinlinc.clientconf`,
+ `vnd.etsi.overload-control-policy-dataset+xml`,
+ `urc-uisocketdesc+xml`,
+ `vnd.radisys.msml+xml`,
+ `vnd.dvb.dvbj`,
+ `vnd.windows.devicepairing`,
+ `vnd.comicbook-rar`,
+ `captive+json`,
+ `vnd.etsi.iptvcommand+xml`,
+ `vnd.cups-postscript`,
+ `vnd.gentoo.catmetadata+xml`,
+ `vnd.collection+json`,
+ `vnd.oma.lwm2m+json`,
+ `vnd.hp-jlyt`,
+ `vnd.veritone.aion+json`,
+ `wasm`,
+ `vnd.oma.drm.risd+xml`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml`,
+ `vnd.adobe.xdp+xml`,
+ `vnd.adobe.flash.movie`,
+ `vnd.novadigm.ext`,
+ `vnd.las.las+json`,
+ `x-msbinder`,
+ `coap-group+json`,
+ `vnd.oma-scws-config`,
+ `vnd.xfdl`,
+ `vnd.oma.bcast.notification+xml`,
+ `x-msclip`,
+ `vnd.apple.installer+xml`,
+ `vnd.marlin.drm.actiontoken+xml`,
+ `marc`,
+ `vnd.etsi.iptvsync+xml`,
+ `x-conference`,
+ `vnd.epson.esf`,
+ `vnd.oma.bcast.provisioningtrigger`,
+ `vnd.dna`,
+ `soap+xml`,
+ `vnd.etsi.simservs+xml`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.document`,
+ `vnd.microsoft.portable-executable`,
+ `vnd.ms-powerpoint.addin.macroenabled.12`,
+ `vnd.think-cell.ppttc+json`,
+ `vnd.avistar+xml`,
+ `vnd.las.las+xml`,
+ `vnd.ms-powerpoint.slideshow.macroenabled.12`,
+ `vnd.ims.lti.v2.toolproxy.id+json`,
+ `vnd.nintendo.nitro.rom`,
+ `vnd.apache.arrow.file`,
+ `ipfix`,
+ `vnd.3gpp.mcptt-floor-request+xml`,
+ `alto-updatestreamparams+json`,
+ `vnd.ibm.minipay`,
+ `vnd.document+json`,
+ `vnd.groove-tool-template`,
+ `vnd.oasis.opendocument.chart-template`,
+ `vnd.ms-wmdrm.lic-chlg-req`,
+ `vnd.wasmflow.wafl`,
+ `vnd.google-earth.kml+xml`,
+ `alto-endpointcostparams+json`,
+ `vnd.radisys.msml-dialog-transform+xml`,
+ `emergencycalldata.ecall.msd`,
+ `vnd.3gpp.mcptt-affiliation-command+xml`,
+ `mbms-schedule+xml`,
+ `vnd.nervana`,
+ `vnd.smart.notebook`,
+ `vnd.pcos`,
+ `vnd.valve.source.material`,
+ `java-archive`,
+ `vnd.miele+json`,
+ `vnd.3gpp.mcptt-mbms-usage-info+xml`,
+ `vnd.infotech.project`,
+ `vnd.yamaha.tunnel-udpencap`,
+ `appx`,
+ `smpte336m`,
+ `x-sv4cpio`,
+ `mbms-user-service-description+xml`,
+ `jwt`,
+ `vnd.fdsn.seed`,
+ `ipp`,
+ `vnd.yamaha.through-ngn`,
+ `vnd.oasis.opendocument.spreadsheet`,
+ `vnd.etsi.iptvsad-npvr+xml`,
+ `mpeg4-iod-xmt`,
+ `vnd.wv.csp+xml`,
+ `vnd.vectorworks`,
+ `vnd.mynfc`,
+ `vnd.century-systems.tcp_stream`,
+ `clue+xml`,
+ `senml+cbor`,
+ `elm+json`,
+ `vnd.music-niff`,
+ `vnd.ibm.modcap`,
+ `vnd.ctc-posml`,
+ `p2p-overlay+xml`,
+ `rfc+xml`,
+ `x-authorware-seg`,
+ `vnd.sealed.csf`,
+ `samlmetadata+xml`,
+ `ssdl+xml`,
+ `missing-blocks+cbor-seq`,
+ `vnd.mobius.txf`,
+ `vnd.radisys.msml-audit-conn+xml`,
+ `vnd.futoin+cbor`,
+ `vnd.intertrust.digibox`,
+ `vnd.radisys.msml-audit+xml`,
+ `vnd.oma-scws-http-response`,
+ `x-tar`,
+ `vnd.banana-accounting`,
+ `token-introspection+jwt`,
+ `kpml-response+xml`,
+ `vnd.sealed.mht`,
+ `vnd.yamaha.hv-dic`,
+ `applefile`,
+ `xhtml+xml`,
+ `mmt-aei+xml`,
+ `vnd.oma.bcast.drm-trigger+xml`,
+ `vnd.sealed.xls`,
+ `vnd.snesdev-page-table`,
+ `exi`,
+ `vnd.wap.wmlc`,
+ `vnd.oma.cab-feature-handler+xml`,
+ `media_control+xml`,
+ `vnd.curl.car`,
+ `vnd.openxmlformats-officedocument.presentationml.viewprops+xml`,
+ `xaml+xml`,
+ `vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml`,
+ `tlsrpt+gzip`,
+ `vnd.citationstyles.style+xml`,
+ `urc-grpsheet+xml`,
+ `vnd.frogans.fnc`,
+ `vnd.onepager`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml`,
+ `vnd.dvb.iptv.alfec-base`,
+ `vnd.joost.joda-archive`,
+ `pgp-encrypted`,
+ `x-freearc`,
+ `vnd.3gpp.lpp`,
+ `vnd.curl.pcurl`,
+ `rpki-manifest`,
+ `vnd.3gpp.sms+xml`,
+ `vnd.spotfire.sfs`,
+ `vnd.liberty-request+xml`,
+ `node`,
+ `xacml+xml`,
+ `vnd.ecowin.seriesupdate`,
+ `vnd.geonext`,
+ `prs.xsf+xml`,
+ `srgs`,
+ `vnd.etsi.timestamp-token`,
+ `vnd.3gpp.mcdata-signalling`,
+ `x-font-dos`,
+ `x-pki-message`,
+ `vnd.hsl`,
+ `vnd.motorola.flexsuite.ttc`,
+ `x-mspublisher`,
+ `vnd.3lightssoftware.imagescal`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.connections+xml`,
+ `vnd.fujitsu.oasys3`,
+ `wspolicy+xml`,
+ `xml-external-parsed-entity`,
+ `vnd.shp`,
+ `vnd.hyper+json`,
+ `vnd.age`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml`,
+ `vnd.crick.clicker.wordbank`,
+ `x-amf`,
+ `vnd.eszigno3+xml`,
+ `ecmascript`,
+ `vnd.rs-274x`,
+ `lostsync+xml`,
+ `vnd.curl`,
+ `vnd.api+json`,
+ `vnd.ims.imsccv1p3`,
+ `vnd.logipipe.circuit+zip`,
+ `x-authorware-bin`,
+ `geoxacml+xml`,
+ `toml`,
+ `vnd.anser-web-certificate-issue-initiation`,
+ `scvp-vp-request`,
+ `vnd.openxmlformats-officedocument.themeoverride+xml`,
+ `vnd.psfs`,
+ `voucher-cms+json`,
+ `xmpp+xml`,
+ `bdoc`,
+ `vnd.wfa.p2p`,
+ `vnd.uplanet.channel`,
+ `mbms-protection-description+xml`,
+ `vnd.sus-calendar`,
+ `senml-etch+cbor`,
+ `vnd.motorola.flexsuite`,
+ `x-authorware-map`,
+ `vnd.3gpp.seal-info+xml`,
+ `dssc+der`,
+ `vnd.rapid`,
+ `vnd.sun.xml.writer.template`,
+ `vnd.3gpp.mcdata-service-config+xml`,
+ `mikey`,
+ `vnd.ms-excel.sheet.binary.macroenabled.12`,
+ `batch-smtp`,
+ `vnd.powerbuilder6-s`,
+ `cpl+xml`,
+ `cellml+xml`,
+ `vnd.oma.poc.final-report+xml`,
+ `x-mobipocket-ebook`,
+ `vnd.ipld.dag-json`,
+ `isup`,
+ `cwl+json`,
+ `omdoc+xml`,
+ `vnd.artsquare`,
+ `vnd.obn`,
+ `vnd.neurolanguage.nlu`,
+ `vnd.lotus-organizer`,
+ `x-font-snf`,
+ `vnd.syft+json`,
+ `vnd.uoml+xml`,
+ `x-msschedule`,
+ `vnd.afpc.cmoca-cmresource`,
+ `x-mscardfile`,
+ `vnd.stepmania.stepchart`,
+ `eshop`,
+ `emotionml+xml`,
+ `tve-trigger`,
+ `vnd.exstream-package`,
+ `vnd.svd`,
+ `vnd.openxmlformats-officedocument.drawingml.diagramdata+xml`,
+ `vnd.afpc.modca-formdef`,
+ `vnd.3gpp.state-and-event-info+xml`,
+ `mbms-msk-response+xml`,
+ `vnd.sealedmedia.softseal.html`,
+ `vnd.groove-tool-message`,
+ `vnd.ecip.rlp`,
+ `hl7v2+xml`,
+ `vnd.afpc.modca-pagesegment`,
+ `vnd.httphone`,
+ `vnd.smart.teacher`,
+ `vnd.oasis.opendocument.text-master`,
+ `mediaservercontrol+xml`,
+ `ibe-key-request+xml`,
+ `index.cmd`,
+ `dns+json`,
+ `rsd+xml`,
+ `vnd.chemdraw+xml`,
+ `mathml-content+xml`,
+ `vnd.motorola.flexsuite.fis`,
+ `vnd.vcx`,
+ `tm+json`,
+ `vnd.frogans.ltf`,
+ `pgp-signature`,
+ `x-redhat-package-manager`,
+ `vnd.wap.wbxml`,
+ `oscore`,
+ `vnd.oasis.opendocument.spreadsheet-template`,
+ `vnd.maxmind.maxmind-db`,
+ `fastsoap`,
+ `vnd.llamagraphics.life-balance.exchange+xml`,
+ `mads+xml`,
+ `vnd.triscape.mxs`,
+ `x-ace-compressed`,
+ `x-iwork-keynote-sffkey`,
+ `sarif-external-properties+json`,
+ `vnd.sss-cod`,
+ `mrb-publish+xml`,
+ `vnd.oipf.pae.gem`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml`,
+ `xop+xml`,
+ `vnd.intu.qbo`,
+ `set-payment`,
+ `appinstaller`,
+ `vnd.biopax.rdf+xml`,
+ `vnd.uplanet.signal`,
+ `vnd.macports.portpkg`,
+ `activity+json`,
+ `whoispp-query`,
+ `auth-policy+xml`,
+ `x-sea`,
+ `vnd.semd`,
+ `vnd.google-apps.spreadsheet`,
+ `x-virtualbox-vmdk`,
+ `vnd.aristanetworks.swi`,
+ `xcap-el+xml`,
+ `emma+xml`,
+ `cdni`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.table+xml`,
+ `x-doom`,
+ `vnd.etsi.sci+xml`,
+ `swid+cbor`,
+ `font-tdpfr`,
+ `vnd.gentics.grd+json`,
+ `x-ustar`,
+ `urc-ressheet+xml`,
+ `vnd.dtg.local`,
+ `http`,
+ `vnd.dvb.dvbisl+xml`,
+ `vnd.cryptii.pipe+json`,
+ `vnd.quark.quarkxpress`,
+ `vnd.kde.kontour`,
+ `vnd.igloader`,
+ `vnd.yamaha.smaf-phrase`,
+ `vnd.drive+json`,
+ `jsonml+json`,
+ `oblivious-dns-message`,
+ `vnd.hyper-item+json`,
+ `x-virtualbox-vdi`,
+ `vcard+xml`,
+ `vnd.commonspace`,
+ `vnd.shana.informed.interchange`,
+ `x-virtualbox-ovf`,
+ `vnd.ms-powerpoint.slide.macroenabled.12`,
+ `vnd.tmobile-livetv`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml`,
+ `vnd.mobius.daf`,
+ `fhir+json`,
+ `vnd.epson.ssf`,
+ `dicom`,
+ `x-cbr`,
+ `vnd.nokia.conml+wbxml`,
+ `vnd.wv.ssp+xml`,
+ `vnd.etsi.tsl.der`,
+ `prs.hpub+zip`,
+ `vnd.japannet-directory-service`,
+ `sarif+json`,
+ `vnd.siren+json`,
+ `gxf`,
+ `vnd.openstreetmap.data+xml`,
+ `vnd.amundsen.maze+xml`,
+ `x-eva`,
+ `vnd.hyperdrive+json`,
+ `n-triples`,
+ `vnd.clonk.c4group`,
+ `vnd.stepmania.package`,
+ `vnd.radisys.msml-audit-conf+xml`,
+ `vnd.ms-asf`,
+ `vnd.collabio.xodocuments.document`,
+ `vnd.3gpp.mcvideo-service-config+xml`,
+ `tamp-status-response`,
+ `alto-updatestreamcontrol+json`,
+ `vnd.msa-disk-image`,
+ `x-cfs-compressed`,
+ `vnd.oma.cab-address-book+xml`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml`,
+ `xfdf`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml`,
+ `vnd.iccprofile`,
+ `rpki-updown`,
+ `tamp-community-update`,
+ `vnd.dolby.mobile.2`,
+ `vnd.nearst.inv+json`,
+ `lxf`,
+ `vnd.wordperfect`,
+ `epp+xml`,
+ `vnd.openxmlformats-package.digital-signature-xmlsignature+xml`,
+ `vnd.sss-ntf`,
+ `vnd.oma.cab-user-prefs+xml`,
+ `vnd.ecowin.filerequest`,
+ `vnd.ms-artgalry`,
+ `dialog-info+xml`,
+ `x-font-pcf`,
+ `vnd.openblox.game-binary`,
+ `x-x509-ca-cert`,
+ `vnd.ipld.raw`,
+ `xcap-ns+xml`,
+ `vnd.cosmocaller`,
+ `x-sh`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml`,
+ `vnd.sealed.tiff`,
+ `fits`,
+ `vnd.wfa.wsc`,
+ `x400-bp`,
+ `vnd.lotus-freelance`,
+ `vnd.medicalholodeck.recordxr`,
+ `vnd.powerbuilder6`,
+ `x-virtualbox-vbox`,
+ `vnd.kde.karbon`,
+ `sensml+cbor`,
+ `msc-ivr+xml`,
+ `msix`,
+ `vnd.oci.image.manifest.v1+json`,
+ `fido.trusted-apps+json`,
+ `vnd.ieee.1905`,
+ `x-font-type1`,
+ `vnd.yaoweme`,
+ `rss+xml`,
+ `emergencycalldata.control+xml`,
+ `x-gtar`,
+ `octet-stream`,
+ `vnd.ms-excel.addin.macroenabled.12`,
+ `vnd.openxmlformats-package.core-properties+xml`,
+ `vnd.ms-color.iccprofile`,
+ `vnd.etsi.iptvueprofile+xml`,
+ `vnd.apache.thrift.json`,
+ `vnd.powerbuilder75-s`,
+ `x-msterminal`,
+ `calendar+json`,
+ `xcon-conference-info+xml`,
+ `vnd.collection.doc+json`,
+ `vnd.d3m-dataset`,
+ `vnd.oasis.opendocument.formula`,
+ `vnd.simtech-mindmapper`,
+ `reginfo+xml`,
+ `vnd.wordlift`,
+ `lost+xml`,
+ `vnd.preminet`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml`,
+ `vnd.comicbook+zip`,
+ `vnd.ezpix-package`,
+ `emergencycalldata.veds+xml`,
+ `pkcs10`,
+ `vnd.dtg.local.flash`,
+ `sep-exi`,
+ `vnd.nokia.radio-preset`,
+ `vnd.dece.zip`,
+ `smil+xml`,
+ `vnd.shopkick+json`,
+ `webpush-options+json`,
+ `vnd.anki`,
+ `cdmi-object`,
+ `vnd.onepagertatp`,
+ `vnd.fujixerox.docuworks.binder`,
+ `rtf`,
+ `vnd.nintendo.snes.rom`,
+ `vnd.visionary`,
+ `vnd.iptc.g2.newsmessage+xml`,
+ `tamp-update`,
+ `calendar+xml`,
+ `vnd.canon-lips`,
+ `vnd.bpf`,
+ `prs.cyn`,
+ `vnd.wap.sic`,
+ `alto-cdni+json`,
+ `vnd.handheld-entertainment+xml`,
+ `vnd.shootproof+json`,
+ `prs.cww`,
+ `vnd.gentoo.eclass`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml`,
+ `vnd.ms-officetheme`,
+ `pkix-pkipath`,
+ `vnd.openxmlformats-officedocument.extended-properties+xml`,
+ `vnd.belightsoft.lhzl+zip`,
+ `vnd.3gpp.pic-bw-small`,
+ `vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml`,
+ `vnd.oma.bcast.smartcard-trigger+xml`,
+ `vnd.ncd.reference`,
+ `vnd.ipunplugged.rcprofile`,
+ `cnrp+xml`,
+ `vnd.amiga.ami`,
+ `yang-patch+xml`,
+ `vnd.etsi.iptvsad-cod+xml`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml`,
+ `vnd.wt.stf`,
+ `vnd.3gpp2.bcmcsinfo+xml`,
+ `vnd.3gpp-prose+xml`,
+ `vnd.sun.xml.writer`,
+ `vnd.rim.cod`,
+ `poc-settings+xml`,
+ `jose`,
+ `pkixcmp`,
+ `vnd.infotech.project+xml`,
+ `vnd.uplanet.bearer-choice-wbxml`,
+ `vnd.openxmlformats-officedocument.presentationml.notesslide+xml`,
+ `vnd.f-secure.mobile`,
+ `scaip+xml`,
+ `vnd.gentoo.xpak`,
+ `vnd.poc.group-advertisement+xml`,
+ `xcap-error+xml`,
+ `vnd.openxmlformats-officedocument.custom-properties+xml`,
+ `h224`,
+ `vnd.kde.kivio`,
+ `mmt-usd+xml`,
+ `csta+xml`,
+ `vnd.3gpp.mcptt-ue-init-config+xml`,
+ `vnd.ms-htmlhelp`,
+ `xenc+xml`,
+ `tamp-sequence-adjust`,
+ `cfw`,
+ `vnd.oipf.spdiscovery+xml`,
+ `vnd.sycle+xml`,
+ `vnd.sun.wadl+xml`,
+ `vnd.lotus-notes`,
+ `vnd.epson.msf`,
+ `vnd.oma.bcast.sprov+xml`,
+ `vnd.unity`,
+ `vnd.oipf.cspg-hexbinary`,
+ `vnd.uplanet.list-wbxml`,
+ `rpki-publication`,
+ `vnd.3gpp-prose-pc3ach+xml`,
+ `vnd.xacml+json`,
+ `vnd.dvb.notif-ia-registration-request+xml`,
+ `vnd.japannet-registration-wakeup`,
+ `vnd.kinar`,
+ `vnd.3gpp.mcvideo-mbms-usage-info+xml`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml`,
+ `vnd.3gpp2.tcap`,
+ `mac-compactpro`,
+ `widget`,
+ `raptorfec`,
+ `tlsrpt+json`,
+ `vnd.bluetooth.le.oob`,
+ `x-ms-shortcut`,
+ `oxps`,
+ `metalink+xml`,
+ `mpeg4-iod`,
+ `vnd.nokia.n-gage.ac+xml`,
+ `javascript`,
+ `vnd.seis+json`,
+ `vnd.xfdl.webform`,
+ `vnd.datalog`,
+ `alto-endpointprop+json`,
+ `vnd.omaloc-supl-init`,
+ `vnd.eclipse.ditto+json`,
+ `vnd.vividence.scriptfile`,
+ `xml`,
+ `vnd.wmf.bootstrap`,
+ `vnd.afpc.modca-cmtable`,
+ `vnd.syncml.dmtnds+wbxml`,
+ `vnd.uplanet.alert-wbxml`,
+ `vnd.shana.informed.package`,
+ `vnd.onepagertamx`,
+ `vnd.apple.numbers`,
+ `vnd.ncd.control`,
+ `vnd.xmpie.plan`,
+ `vnd.3gpp.mcvideo-ue-config+xml`,
+ `x-pkcs12`,
+ `vnd.efi.iso`,
+ `emergencycalldata.cap+xml`,
+ `vnd.sun.xml.math`,
+ `vnd.imagemeter.folder+zip`,
+ `vnd.ms-printing.printticket+xml`,
+ `vnd.ms-tnef`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml`,
+ `x-font-linux-psf`,
+ `vnd.radisys.msml-dialog-fax-detect+xml`,
+ `provenance+xml`,
+ `xml-dtd`,
+ `vnd.cybank`,
+ `vnd.yellowriver-custom-menu`,
+ `vnd.ims.lti.v2.toolsettings.simple+json`,
+ `vnd.tri.onesource`,
+ `vnd.belightsoft.lhzd+zip`,
+ `vnd.bpf3`,
+ `vnd.apache.thrift.compact`,
+ `vnd.radisys.msml-audit-dialog+xml`,
+ `x-subrip`,
+ `vnd.oma.poc.detailed-progress-report+xml`,
+ `vnd.openxmlformats-officedocument.drawingml.chart+xml`,
+ `bacnet-xdd+zip`,
+ `vnd.swiftview-ics`,
+ `vnd.ds-keypoint`,
+ `kpml-request+xml`,
+ `vnd.resilient.logic`,
+ `session-info`,
+ `vnd.cyclonedx+xml`,
+ `vnd.sealed.ppt`,
+ `sru+xml`,
+ `route-apd+xml`,
+ `hyperstudio`,
+ `cdmi-queue`,
+ `mbms-register-response+xml`,
+ `dca-rft`,
+ `vnd.syncml+xml`,
+ `vnd.ecowin.fileupdate`,
+ `x-java-archive-diff`,
+ `x-wais-source`,
+ `x-futuresplash`,
+ `rlmi+xml`,
+ `vnd.mobius.plc`,
+ `vnd.oma.lwm2m+cbor`,
+ `vnd.radisys.msml-dialog-fax-sendrecv+xml`,
+ `vnd.3gpp.mid-call+xml`,
+ `pkcs7-signature`,
+ `vnd.openxmlformats-officedocument.presentationml.slidelayout+xml`,
+ `vnd.imagemeter.image+zip`,
+ `vnd.hp-hpgl`,
+ `vnd.gerber`,
+ `vnd.ah-barcode`,
+ `vnd.sealed.3df`,
+ `jose+json`,
+ `pics-rules`,
+ `vnd.cab-jscript`,
+ `xcap-caps+xml`,
+ `vnd.afpc.modca-mediummap`,
+ `vnd.xmpie.dpkg`,
+ `vnd.3gpp.srvcc-ext+xml`,
+ `vnd.ipld.car`,
+ `vnd.radisys.msml-audit-stream+xml`,
+ `vnd.iptc.g2.catalogitem+xml`,
+ `inkml+xml`,
+ `vnd.epson.quickanime`,
+ `vnd.bbf.usp.error`,
+ `xliff+xml`,
+ `remote-printing`,
+ `vnd.fints`,
+ `vnd.oipf.mippvcontrolmessage+xml`,
+ `vnd.nokia.ncd`,
+ `vnd.aplextor.warrp+json`,
+ `mud+json`,
+ `vnd.3gpp.bsf+xml`,
+ `rdf+xml`,
+ `im-iscomposing+xml`,
+ `vnd.3gpp.s1ap`,
+ `riscos`,
+ `vnd.enphase.envoy`,
+ `scvp-vp-response`,
+ `vnd.umajin`,
+ `x-font-vfont`,
+ `vnd.gov.sk.e-form+zip`,
+ `vnd.openblox.game+xml`,
+ `alto-costmap+json`,
+ `font-sfnt`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml`,
+ `vnd.motorola.iprm`,
+ `pkix-attr-cert`,
+ `vnd.nokia.n-gage.data`,
+ `index.vnd`,
+ `trig`,
+ `vnd.oma.push`,
+ `tzif-leap`,
+ `vnd.3gpp-prose-pc3a+xml`,
+ `dskpp+xml`,
+ `prs.nprend`,
+ `vnd.oma.dcd`,
+ `vnd.intercon.formnet`,
+ `vnd.ms-powerpoint.template.macroenabled.12`,
+ `vnd.businessobjects`,
+ `vnd.openxmlformats-officedocument.customxmlproperties+xml`,
+ `x-sql`,
+ `java-vm`,
+ `csrattrs`,
+ `vnd.groove-injector`,
+ `vnd.oma.cab-pcc+xml`,
+ `yang`,
+ `cstadata+xml`,
+ `vnd.stardivision.math`,
+ `sgml`,
+ `vnd.openxmlformats-officedocument.presentationml.presprops+xml`,
+ `a2l`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml`,
+ `vnd.pmi.widget`,
+ `mac-binhex40`,
+ `vnd.sealed.net`,
+ `vnd.ms-pki.seccat`,
+ `vnd.hal+json`,
+ `vnd.hdt`,
+ `senml+xml`,
+ `vnd.fujixerox.art-ex`,
+ `pkix-cert`,
+ `vnd.syncml.ds.notification`,
+ `vnd.previewsystems.box`,
+ `vnd.oma.pal+xml`,
+ `vnd.irepository.package+xml`,
+ `ibe-pkg-reply+xml`,
+ `wita`,
+ `samlassertion+xml`,
+ `x-msmetafile`,
+ `vnd.openxmlformats-officedocument.presentationml.template.main+xml`,
+ `vnd.sar`,
+ `xml-patch+xml`,
+ `vnd.ms-project`,
+ `vnd.picsel`,
+ `vnd.mseq`,
+ `vnd.balsamiq.bmpr`,
+ `vnd.3gpp.mcdata-affiliation-command+xml`,
+ `vnd.oasis.opendocument.image`,
+ `vnd.blink-idb-value-wrapper`,
+ `x-x509-ca-ra-cert`,
+ `vnd.dvb.ipdcesgaccess`,
+ `vnd.jisp`,
+ `vnd.groove-vcard`,
+ `vnd.rn-realmedia-vbr`,
+ `vnd.globalplatform.card-content-mgt-response`,
+ `cea`,
+ `vnd.oma.scidm.messages+xml`,
+ `timestamped-data`,
+ `vnd.novadigm.edm`,
+ `vnd.ms-windows.printerpairing`,
+ `x-iso9660-image`,
+ `vnd.informedcontrol.rms+xml`,
+ `dns-message`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml`,
+ `vnd.nitf`,
+ `vnd.wap.slc`,
+ `vnd.collabio.xodocuments.presentation`,
+ `vnd.route66.link66+xml`,
+ `vnd.fluxtime.clip`,
+ `vnd.bbf.usp.msg`,
+ `vnd.dvb.notif-ia-msglist+xml`,
+ `vnd.marlin.drm.mdcf`,
+ `vnd.wv.csp+wbxml`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml`,
+ `vnd.dreamfactory`,
+ `vnd.contact.cmsg`,
+ `prs.alvestrand.titrax-sheet`,
+ `vnd.3m.post-it-notes`,
+ `vnd.collabio.xodocuments.document-template`,
+ `pem-certificate-chain`,
+ `x-bcpio`,
+ `vnd.ibm.secure-container`,
+ `vnd.microsoft.windows.thumbnail-cache`,
+ `x-gzip`,
+ `jf2feed+json`,
+ `vnd.3gpp.mcptt-service-config+xml`,
+ `vnd.iptc.g2.planningitem+xml`,
+ `conference-info+xml`,
+ `x-dtbncx+xml`,
+ `x-web-app-manifest+json`,
+ `p21+zip`,
+ `vnd.ntt-local.file-transfer`,
+ `vnd.ms-excel`,
+ `vnd.symbian.install`,
+ `x-netcdf`,
+ `vnd.grafeq`,
+ `atomsvc+xml`,
+ `mf4`,
+ `vnd.sema`,
+ `vnd.minisoft-hp3000-save`,
+ `vnd.recordare.musicxml+xml`,
+ `vnd.3gpp.mcvideo-user-profile+xml`,
+ `xhtml-voice+xml`,
+ `vnd.iptc.g2.knowledgeitem+xml`,
+ `taxii+json`,
+ `vnd.accpac.simply.imp`,
+ `vnd.ms-outlook`,
+ `x-cdlink`,
+ `vnd.software602.filler.form-xml-zip`,
+ `vnd.ecdis-update`,
+ `vnd.wolfram.player`,
+ `mbms-register+xml`,
+ `vnd.radisys.moml+xml`,
+ `vnd.3gpp.interworking-data`,
+ `vnd.stardivision.calc`,
+ `x-font-speedo`,
+ `vnd.proteus.magazine`,
+ `sbml+xml`,
+ `vnd.amazon.mobi8-ebook`,
+ `vnd.ms-3mfdocument`,
+ `vnd.dece.data`,
+ `vnd.oma.bcast.imd+xml`,
+ `vnd.doremir.scorecloud-binary-document`,
+ `x-hdf`,
+ `vnd.ms-excel.sheet.macroenabled.12`,
+ `dvcs`,
+ `vnd.vel+json`,
+ `vnd.mobius.mqy`,
+ `vnd.3gpp.vae-info+xml`,
+ `vnd.syncml.dm+wbxml`,
+ `vnd.etsi.asic-e+zip`,
+ `vnd.openxmlformats-officedocument.presentationml.commentauthors+xml`,
+ `vnd.ms-printschematicket+xml`,
+ `aif+json`,
+ `vnd.isac.fcs`,
+ `vnd.eprints.data+xml`,
+ `mp21`,
+ `vnd.openxmlformats-officedocument.presentationml.comments+xml`,
+ `vnd.openofficeorg.extension`,
+ `vnd.syncml.dmtnds+xml`,
+ `x-msdos-program`,
+ `vnd.micrografx.flo`,
+ `vnd.bekitzur-stech+json`,
+ `dns`,
+ `x-bittorrent`,
+ `vnd.oipf.contentaccessdownload+xml`,
+ `edifact`,
+ `vnd.cups-pdf`,
+ `vnd.oxli.countgraph`,
+ `vnd.espass-espass+zip`,
+ `thraud+xml`,
+ `alto-networkmap+json`,
+ `sensml-exi`,
+ `wsdl+xml`,
+ `nlsml+xml`,
+ `tamp-status-query`,
+ `vnd.sealedmedia.softseal.pdf`,
+ `vnd.dvb.esgcontainer`,
+ `vnd.oasis.opendocument.chart`,
+ `vnd.osgi.bundle`,
+ `mathml+xml`,
+ `oda`,
+ `vnd.oma.poc.optimized-progress-report+xml`,
+ `scvp-cv-request`,
+ `vnd.maxar.archive.3tz+zip`,
+ `vnd.airzip.filesecure.azf`,
+ `vnd.oasis.opendocument.database`,
+ `vnd.powerbuilder75`,
+ `ssml+xml`,
+ `vnd.openxmlformats-officedocument.drawingml.chartshapes+xml`,
+ `dots+cbor`,
+ `alto-endpointpropparams+json`,
+ `x-tads`,
+ `rdap+json`,
+ `metalink4+xml`,
+ `vnd.geocube+xml`,
+ `3gpphalforms+json`,
+ `vnd.coffeescript`,
+ `vnd.stardivision.writer-global`,
+ `vnd.openxmlformats-officedocument.wordprocessingml.comments+xml`,
+ `vnd.geo+json`,
+ `vnd.sun.xml.calc.template`,
+ `x-msdownload`,
+ `vnd.pocketlearn`,
+ `x-lua-bytecode`,
+ `vnd.gpxsee.map+xml`,
+ `vnd.geoplan`,
+ `resource-lists-diff+xml`,
+ `vnd.qualcomm.brew-app-res`,
+ `vnd.dvb.iptv.alfec-enhancement`,
+ `vnd.groove-help`,
+ `vnd.iso11783-10+zip`,
+ `vnd.3gpp.sms`,
+ `vnd.fsc.weblaunch`,
+ `vnd.quarantainenet`,
+ `vnd.gentoo.ebuild`,
+ `vnd.dvb.ipdcroaming`,
+ `vnd.byu.uapi+json`,
+ `vnd.oma.dcdc`,
+ `express`,
+ `vnd.ms-cab-compressed`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.comments+xml`,
+ `link-format`,
+ `vnd.3gpp.seal-location-info+xml`,
+ `vnd.pg.format`,
+ `vnd.3gpp.pic-bw-large`,
+ `vnd.etsi.mcid+xml`,
+ `vnd.kidspiration`,
+ `x-research-info-systems`,
+ `vnd.meridian-slingshot`,
+ `vnd.restful+json`,
+ `fdf`,
+ `vnd.gentoo.pkgmetadata+xml`,
+ `vnd.accpac.simply.aso`,
+ `vnd.immervision-ivu`,
+ `vnd.crick.clicker.palette`,
+ `atsc-rdt+json`,
+ `vnd.astraea-software.iota`,
+ `vnd.motorola.flexsuite.gotap`,
+ `vnd.dpgraph`,
+ `vnd.genomatix.tuxedo`,
+ `vnd.3gpp.mcdata-ue-config+xml`,
+ `vnd.kde.kspread`,
+ `x-ns-proxy-autoconfig`,
+ `ibe-pp-data`,
+ `vnd.3gpp.mcdata-regroup+xml`,
+ `emergencycalldata.comment+xml`,
+ `vnd.apple.keynote`,
+ `timestamp-query`,
+ `vnd.las`,
+ `vnd.oipf.dae.svg+xml`,
+ `vnd.mitsubishi.misty-guard.trustweb`,
+ `vnd.sun.xml.draw`,
+ `x-7z-compressed`,
+ `vnd.openxmlformats-officedocument.presentationml.presentation.main+xml`,
+ `x-apple-diskimage`,
+ `vnd.orange.indata`,
+ `cu-seeme`,
+ `x-x509-next-ca-cert`,
+ `x-virtualbox-vhd`,
+ `media-policy-dataset+xml`,
+ `vnd.ocf+cbor`,
+ `vnd.japannet-verification-wakeup`,
+ `vnd.spotfire.dxp`,
+ `mpeg4-generic`,
+ `vemmi`,
+ `x-tex-tfm`,
+ `vnd.ms-powerpoint`,
+ `vnd.hhe.lesson-player`,
+ `hjson`,
+ `vnd.msign`,
+ `vnd.openxmlformats-officedocument.presentationml.tablestyles+xml`,
+ `news-groupinfo`,
+ `simplesymbolcontainer`,
+ `msword`,
+ `x-gramps-xml`,
+ `vnd.hp-pclxl`,
+ `emergencycalldata.subscriberinfo+xml`,
+ `vnd.seemail`,
+ `dii`,
+ `cwl`,
+ `vnd.mif`,
+ `x-t3vm-image`,
+ `font-woff`,
+ `pdf`,
+ `vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml`,
+ `vnd.chipnuts.karaoke-mmd`,
+ `vnd.ims.lis.v2.result+json`,
+ `pkcs7-mime`,
+ `xv+xml`,
+ `x-ms-wmd`,
+ `vnd.marlin.drm.conftoken+xml`,
+ `vnd.oracle.resource+json`,
+ `cose-key-set`,
+ `vnd.3gpp.access-transfer-events+xml`,
+ `vnd.ms-excel.template.macroenabled.12`,
+ `pidf+xml`,
+ `vnd.geogebra.slides`,
+ `emergencycalldata.legacyesn+json`,
+ `relax-ng-compact-syntax`,
+ `vnd.insors.igm`,
+ `vnd.fujixerox.ddd`,
+ `vnd.google-apps.document`,
+ `vnd.xara`,
+ `vnd.mapbox-vector-tile`,
+ `vnd.tml`,
+ `merge-patch+json`,
+ `vnd.syncml.dm+xml`,
+ `x-mie`,
+ `vnd.openxmlformats-package.relationships+xml`,
+ `vnd.ms-package.obfuscated-opentype`,
+ `alto-error+json`,
+ `vnd.oma.group-usage-list+xml`,
+ `cea-2018+xml`,
+ `vnd.yamaha.openscoreformat.osfpvg+xml`,
+ `vnd.radisys.msml-dialog-speech+xml`,
+ `vnd.3gpp.srvcc-info+xml`,
+ `vnd.japannet-jpnstore-wakeup`,
+ `alto-costmapfilter+json`,
+ `vnd.ims.imsccv1p1`,
+ `vnd.ms-windows.wsd.oob`,
+ `swid+xml`,
+ `rpki-checklist`,
+ `vnd.dtg.local.html`,
+ `yin+xml`,
+ )
+ lazy val any: MediaType = new MediaType("application", "*")
+ }
+
+ object x_shader {
+
+ lazy val `x-vertex`: MediaType =
+ new MediaType("x-shader", "x-vertex", compressible = true, binary = false)
+
+ lazy val `x-fragment`: MediaType =
+ new MediaType("x-shader", "x-fragment", compressible = true, binary = false)
+
+ lazy val all: List[MediaType] = List(`x-vertex`, `x-fragment`)
+ lazy val any: MediaType = new MediaType("x-shader", "*")
+ }
+
+ object model {
+
+ lazy val `vnd.gtw`: MediaType =
+ new MediaType("model", "vnd.gtw", compressible = false, binary = true, List("gtw"))
+
+ lazy val `vnd.parasolid.transmit.text`: MediaType =
+ new MediaType("model", "vnd.parasolid.transmit.text", compressible = false, binary = true, List("x_t"))
+
+ lazy val `vnd.usdz+zip`: MediaType =
+ new MediaType("model", "vnd.usdz+zip", compressible = false, binary = true, List("usdz"))
+
+ lazy val `iges`: MediaType =
+ new MediaType("model", "iges", compressible = false, binary = true, List("igs", "iges"))
+
+ lazy val `vnd.rosette.annotated-data-model`: MediaType =
+ new MediaType("model", "vnd.rosette.annotated-data-model", compressible = false, binary = true)
+
+ lazy val `vnd.valve.source.compiled-map`: MediaType =
+ new MediaType("model", "vnd.valve.source.compiled-map", compressible = false, binary = true, List("bsp"))
+
+ lazy val `vnd.pytha.pyox`: MediaType =
+ new MediaType("model", "vnd.pytha.pyox", compressible = false, binary = true, List("pyo", "pyox"))
+
+ lazy val `x3d+fastinfoset`: MediaType =
+ new MediaType("model", "x3d+fastinfoset", compressible = false, binary = true, List("x3db"))
+
+ lazy val `x3d+binary`: MediaType =
+ new MediaType("model", "x3d+binary", compressible = false, binary = true, List("x3db", "x3dbz"))
+
+ lazy val `mesh`: MediaType =
+ new MediaType("model", "mesh", compressible = false, binary = true, List("msh", "mesh", "silo"))
+
+ lazy val `mtl`: MediaType =
+ new MediaType("model", "mtl", compressible = false, binary = true, List("mtl"))
+
+ lazy val `vnd.collada+xml`: MediaType =
+ new MediaType("model", "vnd.collada+xml", compressible = true, binary = true, List("dae"))
+
+ lazy val `vnd.vtu`: MediaType =
+ new MediaType("model", "vnd.vtu", compressible = false, binary = true, List("vtu"))
+
+ lazy val `prc`: MediaType =
+ new MediaType("model", "prc", compressible = false, binary = true, List("prc"))
+
+ lazy val `x3d-vrml`: MediaType =
+ new MediaType("model", "x3d-vrml", compressible = false, binary = true, List("x3dv"))
+
+ lazy val `vnd.opengex`: MediaType =
+ new MediaType("model", "vnd.opengex", compressible = false, binary = true, List("ogex"))
+
+ lazy val `step+xml`: MediaType =
+ new MediaType("model", "step+xml", compressible = true, binary = true, List("stpx"))
+
+ lazy val `vnd.moml+xml`: MediaType =
+ new MediaType("model", "vnd.moml+xml", compressible = true, binary = true)
+
+ lazy val `vrml`: MediaType =
+ new MediaType("model", "vrml", compressible = false, binary = true, List("wrl", "vrml"))
+
+ lazy val `vnd.gdl`: MediaType =
+ new MediaType("model", "vnd.gdl", compressible = false, binary = true, List("gdl"))
+
+ lazy val `obj`: MediaType =
+ new MediaType("model", "obj", compressible = false, binary = true, List("obj"))
+
+ lazy val `jt`: MediaType =
+ new MediaType("model", "jt", compressible = false, binary = true, List("jt"))
+
+ lazy val `vnd.gs-gdl`: MediaType =
+ new MediaType("model", "vnd.gs-gdl", compressible = false, binary = true)
+
+ lazy val `u3d`: MediaType =
+ new MediaType("model", "u3d", compressible = false, binary = true, List("u3d"))
+
+ lazy val `vnd.parasolid.transmit.binary`: MediaType =
+ new MediaType("model", "vnd.parasolid.transmit.binary", compressible = false, binary = true, List("x_b"))
+
+ lazy val `vnd.sap.vds`: MediaType =
+ new MediaType("model", "vnd.sap.vds", compressible = false, binary = true, List("vds"))
+
+ lazy val `x3d+xml`: MediaType =
+ new MediaType("model", "x3d+xml", compressible = true, binary = true, List("x3d", "x3dz"))
+
+ lazy val `vnd.gs.gdl`: MediaType =
+ new MediaType("model", "vnd.gs.gdl", compressible = false, binary = true)
+
+ lazy val `x3d+vrml`: MediaType =
+ new MediaType("model", "x3d+vrml", compressible = false, binary = true, List("x3dv", "x3dvz"))
+
+ lazy val `3mf`: MediaType =
+ new MediaType("model", "3mf", compressible = false, binary = true, List("3mf"))
+
+ lazy val `step+zip`: MediaType =
+ new MediaType("model", "step+zip", compressible = false, binary = true, List("stpz"))
+
+ lazy val `step`: MediaType =
+ new MediaType("model", "step", compressible = false, binary = true)
+
+ lazy val `gltf-binary`: MediaType =
+ new MediaType("model", "gltf-binary", compressible = true, binary = true, List("glb"))
+
+ lazy val `stl`: MediaType =
+ new MediaType("model", "stl", compressible = false, binary = true, List("stl"))
+
+ lazy val `vnd.dwf`: MediaType =
+ new MediaType("model", "vnd.dwf", compressible = false, binary = true, List("dwf"))
+
+ lazy val `step-xml+zip`: MediaType =
+ new MediaType("model", "step-xml+zip", compressible = false, binary = true, List("stpxz"))
+
+ lazy val `gltf+json`: MediaType =
+ new MediaType("model", "gltf+json", compressible = true, binary = true, List("gltf"))
+
+ lazy val `e57`: MediaType =
+ new MediaType("model", "e57", compressible = false, binary = true)
+
+ lazy val `vnd.flatland.3dml`: MediaType =
+ new MediaType("model", "vnd.flatland.3dml", compressible = false, binary = true)
+
+ lazy val `vnd.mts`: MediaType =
+ new MediaType("model", "vnd.mts", compressible = false, binary = true, List("mts"))
+
+ lazy val `vnd.cld`: MediaType =
+ new MediaType("model", "vnd.cld", compressible = false, binary = true, List("cld"))
+
+ lazy val `vnd.usda`: MediaType =
+ new MediaType("model", "vnd.usda", compressible = false, binary = true, List("usda"))
+
+ lazy val all: List[MediaType] = List(
+ `vnd.gtw`,
+ `vnd.parasolid.transmit.text`,
+ `vnd.usdz+zip`,
+ `iges`,
+ `vnd.rosette.annotated-data-model`,
+ `vnd.valve.source.compiled-map`,
+ `vnd.pytha.pyox`,
+ `x3d+fastinfoset`,
+ `x3d+binary`,
+ `mesh`,
+ `mtl`,
+ `vnd.collada+xml`,
+ `vnd.vtu`,
+ `prc`,
+ `x3d-vrml`,
+ `vnd.opengex`,
+ `step+xml`,
+ `vnd.moml+xml`,
+ `vrml`,
+ `vnd.gdl`,
+ `obj`,
+ `jt`,
+ `vnd.gs-gdl`,
+ `u3d`,
+ `vnd.parasolid.transmit.binary`,
+ `vnd.sap.vds`,
+ `x3d+xml`,
+ `vnd.gs.gdl`,
+ `x3d+vrml`,
+ `3mf`,
+ `step+zip`,
+ `step`,
+ `gltf-binary`,
+ `stl`,
+ `vnd.dwf`,
+ `step-xml+zip`,
+ `gltf+json`,
+ `e57`,
+ `vnd.flatland.3dml`,
+ `vnd.mts`,
+ `vnd.cld`,
+ `vnd.usda`,
+ )
+ lazy val any: MediaType = new MediaType("model", "*")
+ }
+
+ object image {
+
+ lazy val `g3fax`: MediaType =
+ new MediaType("image", "g3fax", compressible = false, binary = true, List("g3"))
+
+ lazy val `vnd.radiance`: MediaType =
+ new MediaType("image", "vnd.radiance", compressible = false, binary = true)
+
+ lazy val `x-ms-bmp`: MediaType =
+ new MediaType("image", "x-ms-bmp", compressible = true, binary = true, List("bmp"))
+
+ lazy val `x-cmx`: MediaType =
+ new MediaType("image", "x-cmx", compressible = false, binary = true, List("cmx"))
+
+ lazy val `ief`: MediaType =
+ new MediaType("image", "ief", compressible = false, binary = true, List("ief"))
+
+ lazy val `vnd.microsoft.icon`: MediaType =
+ new MediaType("image", "vnd.microsoft.icon", compressible = true, binary = true, List("ico"))
+
+ lazy val `avif`: MediaType =
+ new MediaType("image", "avif", compressible = false, binary = true, List("avif"))
+
+ lazy val `tiff-fx`: MediaType =
+ new MediaType("image", "tiff-fx", compressible = false, binary = true, List("tfx"))
+
+ lazy val `x-rgb`: MediaType =
+ new MediaType("image", "x-rgb", compressible = false, binary = true, List("rgb"))
+
+ lazy val `jxsc`: MediaType =
+ new MediaType("image", "jxsc", compressible = false, binary = true, List("jxsc"))
+
+ lazy val `gif`: MediaType =
+ new MediaType("image", "gif", compressible = false, binary = true, List("gif"))
+
+ lazy val `vnd.net-fpx`: MediaType =
+ new MediaType("image", "vnd.net-fpx", compressible = false, binary = true, List("npx"))
+
+ lazy val `apng`: MediaType =
+ new MediaType("image", "apng", compressible = false, binary = true, List("apng"))
+
+ lazy val `fits`: MediaType =
+ new MediaType("image", "fits", compressible = false, binary = true, List("fits"))
+
+ lazy val `vnd.fpx`: MediaType =
+ new MediaType("image", "vnd.fpx", compressible = false, binary = true, List("fpx"))
+
+ lazy val `prs.btif`: MediaType =
+ new MediaType("image", "prs.btif", compressible = false, binary = true, List("btif", "btf"))
+
+ lazy val `x-portable-bitmap`: MediaType =
+ new MediaType("image", "x-portable-bitmap", compressible = false, binary = true, List("pbm"))
+
+ lazy val `vnd.valve.source.texture`: MediaType =
+ new MediaType("image", "vnd.valve.source.texture", compressible = false, binary = true, List("vtf"))
+
+ lazy val `bmp`: MediaType =
+ new MediaType("image", "bmp", compressible = true, binary = true, List("bmp", "dib"))
+
+ lazy val `jxsi`: MediaType =
+ new MediaType("image", "jxsi", compressible = false, binary = true, List("jxsi"))
+
+ lazy val `vnd.sealedmedia.softseal.gif`: MediaType =
+ new MediaType("image", "vnd.sealedmedia.softseal.gif", compressible = false, binary = true)
+
+ lazy val `vnd.dxf`: MediaType =
+ new MediaType("image", "vnd.dxf", compressible = false, binary = true, List("dxf"))
+
+ lazy val `vnd.wap.wbmp`: MediaType =
+ new MediaType("image", "vnd.wap.wbmp", compressible = false, binary = true, List("wbmp"))
+
+ lazy val `jxrs`: MediaType =
+ new MediaType("image", "jxrs", compressible = false, binary = true, List("jxrs"))
+
+ lazy val `x-icon`: MediaType =
+ new MediaType("image", "x-icon", compressible = true, binary = true, List("ico"))
+
+ lazy val `dpx`: MediaType =
+ new MediaType("image", "dpx", compressible = false, binary = true, List("dpx"))
+
+ lazy val `tiff`: MediaType =
+ new MediaType("image", "tiff", compressible = false, binary = true, List("tif", "tiff"))
+
+ lazy val `jphc`: MediaType =
+ new MediaType("image", "jphc", compressible = false, binary = true, List("jhc"))
+
+ lazy val `jpm`: MediaType =
+ new MediaType("image", "jpm", compressible = false, binary = true, List("jpm", "jpgm"))
+
+ lazy val `jp2`: MediaType =
+ new MediaType("image", "jp2", compressible = false, binary = true, List("jp2", "jpg2"))
+
+ lazy val `heif`: MediaType =
+ new MediaType("image", "heif", compressible = false, binary = true, List("heif"))
+
+ lazy val `jxs`: MediaType =
+ new MediaType("image", "jxs", compressible = false, binary = true, List("jxs"))
+
+ lazy val `heif-sequence`: MediaType =
+ new MediaType("image", "heif-sequence", compressible = false, binary = true, List("heifs"))
+
+ lazy val `vnd.fastbidsheet`: MediaType =
+ new MediaType("image", "vnd.fastbidsheet", compressible = false, binary = true, List("fbs"))
+
+ lazy val `avci`: MediaType =
+ new MediaType("image", "avci", compressible = false, binary = true, List("avci"))
+
+ lazy val `x-cmu-raster`: MediaType =
+ new MediaType("image", "x-cmu-raster", compressible = false, binary = true, List("ras"))
+
+ lazy val `vnd.adobe.photoshop`: MediaType =
+ new MediaType("image", "vnd.adobe.photoshop", compressible = true, binary = true, List("psd"))
+
+ lazy val `ktx`: MediaType =
+ new MediaType("image", "ktx", compressible = false, binary = true, List("ktx"))
+
+ lazy val `heic-sequence`: MediaType =
+ new MediaType("image", "heic-sequence", compressible = false, binary = true, List("heics"))
+
+ lazy val `vnd.dece.graphic`: MediaType =
+ new MediaType(
+ "image",
+ "vnd.dece.graphic",
+ compressible = false,
+ binary = true,
+ List("uvi", "uvvi", "uvg", "uvvg"),
)
- lazy val `xml-dtd`: MediaType =
- new MediaType("application", "xml-dtd", Compressible, NotBinary, List("dtd"))
- lazy val `xml-external-parsed-entity`: MediaType =
- new MediaType("application", "xml-external-parsed-entity", Compressible, NotBinary)
- lazy val `xml-patch+xml`: MediaType =
- new MediaType("application", "xml-patch+xml", Compressible, NotBinary)
- lazy val `xmpp+xml`: MediaType =
- new MediaType("application", "xmpp+xml", Compressible, NotBinary)
- lazy val `xop+xml`: MediaType =
- new MediaType("application", "xop+xml", Compressible, NotBinary, List("xop"))
- lazy val `xproc+xml`: MediaType =
- new MediaType("application", "xproc+xml", Compressible, NotBinary, List("xpl"))
- lazy val `xslt+xml`: MediaType =
- new MediaType("application", "xslt+xml", Compressible, NotBinary, List("xsl", "xslt"))
- lazy val `xspf+xml`: MediaType =
- new MediaType("application", "xspf+xml", Compressible, NotBinary, List("xspf"))
- lazy val `xv+xml`: MediaType = new MediaType(
- "application",
- "xv+xml",
- Compressible,
- NotBinary,
- List("mxml", "xhvml", "xvml", "xvm"),
+
+ lazy val `pwg-raster`: MediaType =
+ new MediaType("image", "pwg-raster", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.subtitle`: MediaType =
+ new MediaType("image", "vnd.dvb.subtitle", compressible = false, binary = true, List("sub"))
+
+ lazy val `vnd.ms-photo`: MediaType =
+ new MediaType("image", "vnd.ms-photo", compressible = false, binary = true, List("wdp"))
+
+ lazy val `jph`: MediaType =
+ new MediaType("image", "jph", compressible = false, binary = true, List("jph"))
+
+ lazy val `sgi`: MediaType =
+ new MediaType("image", "sgi", compressible = false, binary = true, List("sgi"))
+
+ lazy val `x-xbitmap`: MediaType =
+ new MediaType("image", "x-xbitmap", compressible = false, binary = true, List("xbm"))
+
+ lazy val `prs.pti`: MediaType =
+ new MediaType("image", "prs.pti", compressible = false, binary = true, List("pti"))
+
+ lazy val `aces`: MediaType =
+ new MediaType("image", "aces", compressible = false, binary = true, List("exr"))
+
+ lazy val `vnd.ms-dds`: MediaType =
+ new MediaType("image", "vnd.ms-dds", compressible = true, binary = true, List("dds"))
+
+ lazy val `vnd.fujixerox.edmics-mmr`: MediaType =
+ new MediaType("image", "vnd.fujixerox.edmics-mmr", compressible = false, binary = true, List("mmr"))
+
+ lazy val `x-jng`: MediaType =
+ new MediaType("image", "x-jng", compressible = false, binary = true, List("jng"))
+
+ lazy val `png`: MediaType =
+ new MediaType("image", "png", compressible = false, binary = true, List("png"))
+
+ lazy val `x-pict`: MediaType =
+ new MediaType("image", "x-pict", compressible = false, binary = true, List("pic", "pct"))
+
+ lazy val `vnd.sealed.png`: MediaType =
+ new MediaType("image", "vnd.sealed.png", compressible = false, binary = true)
+
+ lazy val `x-freehand`: MediaType =
+ new MediaType("image", "x-freehand", compressible = false, binary = true, List("fh", "fhc", "fh4", "fh5", "fh7"))
+
+ lazy val `x-portable-anymap`: MediaType =
+ new MediaType("image", "x-portable-anymap", compressible = false, binary = true, List("pnm"))
+
+ lazy val `jpx`: MediaType =
+ new MediaType("image", "jpx", compressible = false, binary = true, List("jpx", "jpf"))
+
+ lazy val `pjpeg`: MediaType =
+ new MediaType("image", "pjpeg", compressible = false, binary = true)
+
+ lazy val `ktx2`: MediaType =
+ new MediaType("image", "ktx2", compressible = false, binary = true, List("ktx2"))
+
+ lazy val `vnd.cns.inf2`: MediaType =
+ new MediaType("image", "vnd.cns.inf2", compressible = false, binary = true)
+
+ lazy val `x-xpixmap`: MediaType =
+ new MediaType("image", "x-xpixmap", compressible = false, binary = true, List("xpm"))
+
+ lazy val `vnd.tencent.tap`: MediaType =
+ new MediaType("image", "vnd.tencent.tap", compressible = false, binary = true, List("tap"))
+
+ lazy val `x-3ds`: MediaType =
+ new MediaType("image", "x-3ds", compressible = false, binary = true, List("3ds"))
+
+ lazy val `vnd.airzip.accelerator.azv`: MediaType =
+ new MediaType("image", "vnd.airzip.accelerator.azv", compressible = false, binary = true, List("azv"))
+
+ lazy val `x-mrsid-image`: MediaType =
+ new MediaType("image", "x-mrsid-image", compressible = false, binary = true, List("sid"))
+
+ lazy val `avcs`: MediaType =
+ new MediaType("image", "avcs", compressible = false, binary = true, List("avcs"))
+
+ lazy val `x-portable-pixmap`: MediaType =
+ new MediaType("image", "x-portable-pixmap", compressible = false, binary = true, List("ppm"))
+
+ lazy val `vnd.fujixerox.edmics-rlc`: MediaType =
+ new MediaType("image", "vnd.fujixerox.edmics-rlc", compressible = false, binary = true, List("rlc"))
+
+ lazy val `vnd.xiff`: MediaType =
+ new MediaType("image", "vnd.xiff", compressible = false, binary = true, List("xif"))
+
+ lazy val `webp`: MediaType =
+ new MediaType("image", "webp", compressible = false, binary = true, List("webp"))
+
+ lazy val `vnd.pco.b16`: MediaType =
+ new MediaType("image", "vnd.pco.b16", compressible = false, binary = true, List("b16"))
+
+ lazy val `vnd.globalgraphics.pgb`: MediaType =
+ new MediaType("image", "vnd.globalgraphics.pgb", compressible = false, binary = true)
+
+ lazy val `vnd.svf`: MediaType =
+ new MediaType("image", "vnd.svf", compressible = false, binary = true)
+
+ lazy val `vnd.sealedmedia.softseal.jpg`: MediaType =
+ new MediaType("image", "vnd.sealedmedia.softseal.jpg", compressible = false, binary = true)
+
+ lazy val `hsj2`: MediaType =
+ new MediaType("image", "hsj2", compressible = false, binary = true, List("hsj2"))
+
+ lazy val `dicom-rle`: MediaType =
+ new MediaType("image", "dicom-rle", compressible = false, binary = true, List("drle"))
+
+ lazy val `vnd.zbrush.pcx`: MediaType =
+ new MediaType("image", "vnd.zbrush.pcx", compressible = false, binary = true, List("pcx"))
+
+ lazy val `emf`: MediaType =
+ new MediaType("image", "emf", compressible = false, binary = true, List("emf"))
+
+ lazy val `cgm`: MediaType =
+ new MediaType("image", "cgm", compressible = false, binary = true, List("cgm"))
+
+ lazy val `jxss`: MediaType =
+ new MediaType("image", "jxss", compressible = false, binary = true, List("jxss"))
+
+ lazy val `svg+xml`: MediaType =
+ new MediaType("image", "svg+xml", compressible = true, binary = true, List("svg", "svgz"))
+
+ lazy val `naplps`: MediaType =
+ new MediaType("image", "naplps", compressible = false, binary = true)
+
+ lazy val `hej2k`: MediaType =
+ new MediaType("image", "hej2k", compressible = false, binary = true, List("hej2"))
+
+ lazy val `jls`: MediaType =
+ new MediaType("image", "jls", compressible = false, binary = true, List("jls"))
+
+ lazy val `jxra`: MediaType =
+ new MediaType("image", "jxra", compressible = false, binary = true, List("jxra"))
+
+ lazy val `x-xwindowdump`: MediaType =
+ new MediaType("image", "x-xwindowdump", compressible = false, binary = true, List("xwd"))
+
+ lazy val `t38`: MediaType =
+ new MediaType("image", "t38", compressible = false, binary = true, List("t38"))
+
+ lazy val `vnd.fst`: MediaType =
+ new MediaType("image", "vnd.fst", compressible = false, binary = true, List("fst"))
+
+ lazy val `vnd.mozilla.apng`: MediaType =
+ new MediaType("image", "vnd.mozilla.apng", compressible = false, binary = true)
+
+ lazy val `x-tga`: MediaType =
+ new MediaType("image", "x-tga", compressible = false, binary = true, List("tga"))
+
+ lazy val `jpeg`: MediaType =
+ new MediaType("image", "jpeg", compressible = false, binary = true, List("jpeg", "jpg", "jpe"))
+
+ lazy val `vnd.dwg`: MediaType =
+ new MediaType("image", "vnd.dwg", compressible = false, binary = true, List("dwg"))
+
+ lazy val `vnd.mix`: MediaType =
+ new MediaType("image", "vnd.mix", compressible = false, binary = true)
+
+ lazy val `wmf`: MediaType =
+ new MediaType("image", "wmf", compressible = false, binary = true, List("wmf"))
+
+ lazy val `x-xcf`: MediaType =
+ new MediaType("image", "x-xcf", compressible = false, binary = true)
+
+ lazy val `x-pcx`: MediaType =
+ new MediaType("image", "x-pcx", compressible = false, binary = true, List("pcx"))
+
+ lazy val `x-portable-graymap`: MediaType =
+ new MediaType("image", "x-portable-graymap", compressible = false, binary = true, List("pgm"))
+
+ lazy val `heic`: MediaType =
+ new MediaType("image", "heic", compressible = false, binary = true, List("heic"))
+
+ lazy val `vnd.djvu`: MediaType =
+ new MediaType("image", "vnd.djvu", compressible = false, binary = true, List("djvu", "djv"))
+
+ lazy val `jxr`: MediaType =
+ new MediaType("image", "jxr", compressible = false, binary = true, List("jxr"))
+
+ lazy val `vnd.ms-modi`: MediaType =
+ new MediaType("image", "vnd.ms-modi", compressible = false, binary = true, List("mdi"))
+
+ lazy val all: List[MediaType] = List(
+ `g3fax`,
+ `vnd.radiance`,
+ `x-ms-bmp`,
+ `x-cmx`,
+ `ief`,
+ `vnd.microsoft.icon`,
+ `avif`,
+ `tiff-fx`,
+ `x-rgb`,
+ `jxsc`,
+ `gif`,
+ `vnd.net-fpx`,
+ `apng`,
+ `fits`,
+ `vnd.fpx`,
+ `prs.btif`,
+ `x-portable-bitmap`,
+ `vnd.valve.source.texture`,
+ `bmp`,
+ `jxsi`,
+ `vnd.sealedmedia.softseal.gif`,
+ `vnd.dxf`,
+ `vnd.wap.wbmp`,
+ `jxrs`,
+ `x-icon`,
+ `dpx`,
+ `tiff`,
+ `jphc`,
+ `jpm`,
+ `jp2`,
+ `heif`,
+ `jxs`,
+ `heif-sequence`,
+ `vnd.fastbidsheet`,
+ `avci`,
+ `x-cmu-raster`,
+ `vnd.adobe.photoshop`,
+ `ktx`,
+ `heic-sequence`,
+ `vnd.dece.graphic`,
+ `pwg-raster`,
+ `vnd.dvb.subtitle`,
+ `vnd.ms-photo`,
+ `jph`,
+ `sgi`,
+ `x-xbitmap`,
+ `prs.pti`,
+ `aces`,
+ `vnd.ms-dds`,
+ `vnd.fujixerox.edmics-mmr`,
+ `x-jng`,
+ `png`,
+ `x-pict`,
+ `vnd.sealed.png`,
+ `x-freehand`,
+ `x-portable-anymap`,
+ `jpx`,
+ `pjpeg`,
+ `ktx2`,
+ `vnd.cns.inf2`,
+ `x-xpixmap`,
+ `vnd.tencent.tap`,
+ `x-3ds`,
+ `vnd.airzip.accelerator.azv`,
+ `x-mrsid-image`,
+ `avcs`,
+ `x-portable-pixmap`,
+ `vnd.fujixerox.edmics-rlc`,
+ `vnd.xiff`,
+ `webp`,
+ `vnd.pco.b16`,
+ `vnd.globalgraphics.pgb`,
+ `vnd.svf`,
+ `vnd.sealedmedia.softseal.jpg`,
+ `hsj2`,
+ `dicom-rle`,
+ `vnd.zbrush.pcx`,
+ `emf`,
+ `cgm`,
+ `jxss`,
+ `svg+xml`,
+ `naplps`,
+ `hej2k`,
+ `jls`,
+ `jxra`,
+ `x-xwindowdump`,
+ `t38`,
+ `vnd.fst`,
+ `vnd.mozilla.apng`,
+ `x-tga`,
+ `jpeg`,
+ `vnd.dwg`,
+ `vnd.mix`,
+ `wmf`,
+ `x-xcf`,
+ `x-pcx`,
+ `x-portable-graymap`,
+ `heic`,
+ `vnd.djvu`,
+ `jxr`,
+ `vnd.ms-modi`,
+ )
+ lazy val any: MediaType = new MediaType("image", "*")
+ }
+
+ object text {
+
+ lazy val `vnd.wap.wmlscript`: MediaType =
+ new MediaType("text", "vnd.wap.wmlscript", compressible = false, binary = false, List("wmls"))
+
+ lazy val `ulpfec`: MediaType =
+ new MediaType("text", "ulpfec", compressible = false, binary = false)
+
+ lazy val `vnd.radisys.msml-basic-layout`: MediaType =
+ new MediaType("text", "vnd.radisys.msml-basic-layout", compressible = false, binary = false)
+
+ lazy val `shex`: MediaType =
+ new MediaType("text", "shex", compressible = false, binary = false, List("shex"))
+
+ lazy val `shaclc`: MediaType =
+ new MediaType("text", "shaclc", compressible = false, binary = false)
+
+ lazy val `vnd.curl.dcurl`: MediaType =
+ new MediaType("text", "vnd.curl.dcurl", compressible = false, binary = false, List("dcurl"))
+
+ lazy val `xml-external-parsed-entity`: MediaType =
+ new MediaType("text", "xml-external-parsed-entity", compressible = false, binary = false)
+
+ lazy val `fhirpath`: MediaType =
+ new MediaType("text", "fhirpath", compressible = false, binary = false)
+
+ lazy val `turtle`: MediaType =
+ new MediaType("text", "turtle", compressible = false, binary = false, List("ttl"))
+
+ lazy val `vnd.sun.j2me.app-descriptor`: MediaType =
+ new MediaType("text", "vnd.sun.j2me.app-descriptor", compressible = false, binary = false, List("jad"))
+
+ lazy val `x-sass`: MediaType =
+ new MediaType("text", "x-sass", compressible = false, binary = false, List("sass"))
+
+ lazy val `x-vcard`: MediaType =
+ new MediaType("text", "x-vcard", compressible = false, binary = false, List("vcf"))
+
+ lazy val `vnd.a`: MediaType =
+ new MediaType("text", "vnd.a", compressible = false, binary = false)
+
+ lazy val `uri-list`: MediaType =
+ new MediaType("text", "uri-list", compressible = true, binary = false, List("uri", "uris", "urls"))
+
+ lazy val `calender`: MediaType =
+ new MediaType("text", "calender", compressible = true, binary = false)
+
+ lazy val `markdown`: MediaType =
+ new MediaType("text", "markdown", compressible = true, binary = false, List("md", "markdown"))
+
+ lazy val `vnd.dvb.subtitle`: MediaType =
+ new MediaType("text", "vnd.dvb.subtitle", compressible = false, binary = false, List("sub"))
+
+ lazy val `ecmascript`: MediaType =
+ new MediaType("text", "ecmascript", compressible = false, binary = false)
+
+ lazy val `x-processing`: MediaType =
+ new MediaType("text", "x-processing", compressible = true, binary = false, List("pde"))
+
+ lazy val `cmd`: MediaType =
+ new MediaType("text", "cmd", compressible = true, binary = false)
+
+ lazy val `tab-separated-values`: MediaType =
+ new MediaType("text", "tab-separated-values", compressible = true, binary = false, List("tsv"))
+
+ lazy val `less`: MediaType =
+ new MediaType("text", "less", compressible = true, binary = false, List("less"))
+
+ lazy val `cache-manifest`: MediaType =
+ new MediaType("text", "cache-manifest", compressible = true, binary = false, List("appcache", "manifest"))
+
+ lazy val `vnd.wap.sl`: MediaType =
+ new MediaType("text", "vnd.wap.sl", compressible = false, binary = false)
+
+ lazy val `dns`: MediaType =
+ new MediaType("text", "dns", compressible = false, binary = false)
+
+ lazy val `strings`: MediaType =
+ new MediaType("text", "strings", compressible = false, binary = false)
+
+ lazy val `csv`: MediaType =
+ new MediaType("text", "csv", compressible = true, binary = false, List("csv"))
+
+ lazy val `vnd.gml`: MediaType =
+ new MediaType("text", "vnd.gml", compressible = false, binary = false)
+
+ lazy val `x-setext`: MediaType =
+ new MediaType("text", "x-setext", compressible = false, binary = false, List("etx"))
+
+ lazy val `x-lua`: MediaType =
+ new MediaType("text", "x-lua", compressible = false, binary = false, List("lua"))
+
+ lazy val `x-vcalendar`: MediaType =
+ new MediaType("text", "x-vcalendar", compressible = false, binary = false, List("vcs"))
+
+ lazy val `vnd.exchangeable`: MediaType =
+ new MediaType("text", "vnd.exchangeable", compressible = false, binary = false)
+
+ lazy val `wgsl`: MediaType =
+ new MediaType("text", "wgsl", compressible = false, binary = false, List("wgsl"))
+
+ lazy val `rfc822-headers`: MediaType =
+ new MediaType("text", "rfc822-headers", compressible = false, binary = false)
+
+ lazy val `vnd.graphviz`: MediaType =
+ new MediaType("text", "vnd.graphviz", compressible = false, binary = false, List("gv"))
+
+ lazy val `red`: MediaType =
+ new MediaType("text", "red", compressible = false, binary = false)
+
+ lazy val `x-fortran`: MediaType =
+ new MediaType("text", "x-fortran", compressible = false, binary = false, List("f", "for", "f77", "f90"))
+
+ lazy val `cql`: MediaType =
+ new MediaType("text", "cql", compressible = false, binary = false)
+
+ lazy val `vnd.esmertec.theme-descriptor`: MediaType =
+ new MediaType("text", "vnd.esmertec.theme-descriptor", compressible = false, binary = false)
+
+ lazy val `directory`: MediaType =
+ new MediaType("text", "directory", compressible = false, binary = false)
+
+ lazy val `css`: MediaType =
+ new MediaType("text", "css", compressible = true, binary = false, List("css"))
+
+ lazy val `vnd.latex-z`: MediaType =
+ new MediaType("text", "vnd.latex-z", compressible = false, binary = false)
+
+ lazy val `vnd.fly`: MediaType =
+ new MediaType("text", "vnd.fly", compressible = false, binary = false, List("fly"))
+
+ lazy val `vnd.senx.warpscript`: MediaType =
+ new MediaType("text", "vnd.senx.warpscript", compressible = false, binary = false)
+
+ lazy val `vnd.sosi`: MediaType =
+ new MediaType("text", "vnd.sosi", compressible = false, binary = false)
+
+ lazy val `parameters`: MediaType =
+ new MediaType("text", "parameters", compressible = false, binary = false)
+
+ lazy val `provenance-notation`: MediaType =
+ new MediaType("text", "provenance-notation", compressible = false, binary = false)
+
+ lazy val `x-markdown`: MediaType =
+ new MediaType("text", "x-markdown", compressible = true, binary = false, List("mkd"))
+
+ lazy val `x-handlebars-template`: MediaType =
+ new MediaType("text", "x-handlebars-template", compressible = false, binary = false, List("hbs"))
+
+ lazy val `csv-schema`: MediaType =
+ new MediaType("text", "csv-schema", compressible = false, binary = false)
+
+ lazy val `rtp-enc-aescm128`: MediaType =
+ new MediaType("text", "rtp-enc-aescm128", compressible = false, binary = false)
+
+ lazy val `jcr-cnd`: MediaType =
+ new MediaType("text", "jcr-cnd", compressible = false, binary = false)
+
+ lazy val `vnd.hans`: MediaType =
+ new MediaType("text", "vnd.hans", compressible = false, binary = false)
+
+ lazy val `x-java-source`: MediaType =
+ new MediaType("text", "x-java-source", compressible = false, binary = false, List("java"))
+
+ lazy val `vnd.curl.scurl`: MediaType =
+ new MediaType("text", "vnd.curl.scurl", compressible = false, binary = false, List("scurl"))
+
+ lazy val `encaprtp`: MediaType =
+ new MediaType("text", "encaprtp", compressible = false, binary = false)
+
+ lazy val `vnd.iptc.newsml`: MediaType =
+ new MediaType("text", "vnd.iptc.newsml", compressible = false, binary = false)
+
+ lazy val `vnd.fmi.flexstor`: MediaType =
+ new MediaType("text", "vnd.fmi.flexstor", compressible = false, binary = false, List("flx"))
+
+ lazy val `vnd.wap.wml`: MediaType =
+ new MediaType("text", "vnd.wap.wml", compressible = false, binary = false, List("wml"))
+
+ lazy val `cql-identifier`: MediaType =
+ new MediaType("text", "cql-identifier", compressible = false, binary = false)
+
+ lazy val `vcard`: MediaType =
+ new MediaType("text", "vcard", compressible = true, binary = false, List("vcard"))
+
+ lazy val `rtploopback`: MediaType =
+ new MediaType("text", "rtploopback", compressible = false, binary = false)
+
+ lazy val `cql-expression`: MediaType =
+ new MediaType("text", "cql-expression", compressible = false, binary = false)
+
+ lazy val `x-opml`: MediaType =
+ new MediaType("text", "x-opml", compressible = false, binary = false, List("opml"))
+
+ lazy val `event-stream`: MediaType =
+ new MediaType("text", "event-stream", compressible = true, binary = false)
+
+ lazy val `slim`: MediaType =
+ new MediaType("text", "slim", compressible = false, binary = false, List("slim", "slm"))
+
+ lazy val `x-pascal`: MediaType =
+ new MediaType("text", "x-pascal", compressible = false, binary = false, List("p", "pas"))
+
+ lazy val `parityfec`: MediaType =
+ new MediaType("text", "parityfec", compressible = false, binary = false)
+
+ lazy val `prs.prop.logic`: MediaType =
+ new MediaType("text", "prs.prop.logic", compressible = false, binary = false)
+
+ lazy val `t140`: MediaType =
+ new MediaType("text", "t140", compressible = false, binary = false)
+
+ lazy val `javascript`: MediaType =
+ new MediaType("text", "javascript", compressible = true, binary = false, List("js", "mjs"))
+
+ lazy val `vnd.dmclientscript`: MediaType =
+ new MediaType("text", "vnd.dmclientscript", compressible = false, binary = false)
+
+ lazy val `x-sfv`: MediaType =
+ new MediaType("text", "x-sfv", compressible = false, binary = false, List("sfv"))
+
+ lazy val `flexfec`: MediaType =
+ new MediaType("text", "flexfec", compressible = false, binary = false)
+
+ lazy val `spdx`: MediaType =
+ new MediaType("text", "spdx", compressible = false, binary = false, List("spdx"))
+
+ lazy val `stylus`: MediaType =
+ new MediaType("text", "stylus", compressible = false, binary = false, List("stylus", "styl"))
+
+ lazy val `coffeescript`: MediaType =
+ new MediaType("text", "coffeescript", compressible = false, binary = false, List("coffee", "litcoffee"))
+
+ lazy val `yaml`: MediaType =
+ new MediaType("text", "yaml", compressible = true, binary = false, List("yaml", "yml"))
+
+ lazy val `vnd.familysearch.gedcom`: MediaType =
+ new MediaType("text", "vnd.familysearch.gedcom", compressible = false, binary = false, List("ged"))
+
+ lazy val `vnd.in3d.3dml`: MediaType =
+ new MediaType("text", "vnd.in3d.3dml", compressible = false, binary = false, List("3dml"))
+
+ lazy val `x-c`: MediaType =
+ new MediaType(
+ "text",
+ "x-c",
+ compressible = false,
+ binary = false,
+ List("c", "cc", "cxx", "cpp", "h", "hh", "dic"),
)
- lazy val `yang`: MediaType =
- new MediaType("application", "yang", Compressible, NotBinary, List("yang"))
- lazy val `yang-data+json`: MediaType =
- new MediaType("application", "yang-data+json", Compressible, NotBinary)
- lazy val `yang-data+xml`: MediaType =
- new MediaType("application", "yang-data+xml", Compressible, NotBinary)
- lazy val `yang-patch+json`: MediaType =
- new MediaType("application", "yang-patch+json", Compressible, NotBinary)
- lazy val `yang-patch+xml`: MediaType =
- new MediaType("application", "yang-patch+xml", Compressible, NotBinary)
- lazy val `yin+xml`: MediaType =
- new MediaType("application", "yin+xml", Compressible, NotBinary, List("yin"))
- lazy val `zip`: MediaType =
- new MediaType("application", "zip", Uncompressible, Binary, List("zip"))
- lazy val `zlib`: MediaType = new MediaType("application", "zlib", Compressible, NotBinary)
- lazy val `zstd`: MediaType = new MediaType("application", "zstd", Compressible, NotBinary)
- lazy val part_3: List[MediaType] = List(
- `x-csh`,
- `x-deb`,
- `x-debian-package`,
- `x-dgc-compressed`,
- `x-director`,
- `x-doom`,
- `x-dtbncx+xml`,
- `x-dtbook+xml`,
- `x-dtbresource+xml`,
- `x-dvi`,
- `x-envoy`,
- `x-eva`,
- `x-font-bdf`,
- `x-font-dos`,
- `x-font-framemaker`,
- `x-font-ghostscript`,
- `x-font-libgrx`,
- `x-font-linux-psf`,
- `x-font-pcf`,
- `x-font-snf`,
- `x-font-speedo`,
- `x-font-sunos-news`,
- `x-font-type1`,
- `x-font-vfont`,
- `x-freearc`,
- `x-futuresplash`,
- `x-gca-compressed`,
- `x-glulx`,
- `x-gnumeric`,
- `x-gramps-xml`,
- `x-gtar`,
- `x-gzip`,
- `x-hdf`,
- `x-httpd-php`,
- `x-install-instructions`,
- `x-iso9660-image`,
- `x-java-archive-diff`,
- `x-java-jnlp-file`,
- `x-javascript`,
- `x-keepass2`,
- `x-latex`,
- `x-lua-bytecode`,
- `x-lzh-compressed`,
- `x-makeself`,
- `x-mie`,
- `x-mobipocket-ebook`,
- `x-mpegurl`,
- `x-ms-application`,
- `x-ms-shortcut`,
- `x-ms-wmd`,
- `x-ms-wmz`,
- `x-ms-xbap`,
- `x-msaccess`,
- `x-msbinder`,
- `x-mscardfile`,
- `x-msclip`,
- `x-msdos-program`,
- `x-msdownload`,
- `x-msmediaview`,
- `x-msmetafile`,
- `x-msmoney`,
- `x-mspublisher`,
- `x-msschedule`,
- `x-msterminal`,
- `x-mswrite`,
- `x-netcdf`,
- `x-ns-proxy-autoconfig`,
- `x-nzb`,
- `x-perl`,
- `x-pilot`,
- `x-pkcs12`,
- `x-pkcs7-certificates`,
- `x-pkcs7-certreqresp`,
- `x-pki-message`,
- `x-rar-compressed`,
- `x-redhat-package-manager`,
- `x-research-info-systems`,
- `x-sea`,
- `x-sh`,
- `x-shar`,
- `x-shockwave-flash`,
- `x-silverlight-app`,
- `x-sql`,
- `x-stuffit`,
- `x-stuffitx`,
- `x-subrip`,
- `x-sv4cpio`,
- `x-sv4crc`,
- `x-t3vm-image`,
- `x-tads`,
- `x-tar`,
- `x-tcl`,
- `x-tex`,
- `x-tex-tfm`,
- `x-texinfo`,
- `x-tgif`,
- `x-ustar`,
- `x-virtualbox-hdd`,
- `x-virtualbox-ova`,
- `x-virtualbox-ovf`,
- `x-virtualbox-vbox`,
- `x-virtualbox-vbox-extpack`,
- `x-virtualbox-vdi`,
- `x-virtualbox-vhd`,
- `x-virtualbox-vmdk`,
- `x-wais-source`,
- `x-web-app-manifest+json`,
- `x-www-form-urlencoded`,
- `x-x509-ca-cert`,
- `x-x509-ca-ra-cert`,
- `x-x509-next-ca-cert`,
- `x-xfig`,
- `x-xliff+xml`,
- `x-xpinstall`,
- `x-xz`,
- `x-zmachine`,
- `x400-bp`,
- `xacml+xml`,
- `xaml+xml`,
- `xcap-att+xml`,
- `xcap-caps+xml`,
- `xcap-diff+xml`,
- `xcap-el+xml`,
- `xcap-error+xml`,
- `xcap-ns+xml`,
- `xcon-conference-info+xml`,
- `xcon-conference-info-diff+xml`,
- `xenc+xml`,
- `xhtml+xml`,
- `xhtml-voice+xml`,
- `xliff+xml`,
- `xml`,
- `xml-dtd`,
- `xml-external-parsed-entity`,
- `xml-patch+xml`,
- `xmpp+xml`,
- `xop+xml`,
- `xproc+xml`,
- `xslt+xml`,
- `xspf+xml`,
- `xv+xml`,
- `yang`,
- `yang-data+json`,
- `yang-data+xml`,
- `yang-patch+json`,
- `yang-patch+xml`,
- `yin+xml`,
- `zip`,
- `zlib`,
- `zstd`,
+
+ lazy val `x-gwt-rpc`: MediaType =
+ new MediaType("text", "x-gwt-rpc", compressible = true, binary = false)
+
+ lazy val `grammar-ref-list`: MediaType =
+ new MediaType("text", "grammar-ref-list", compressible = false, binary = false)
+
+ lazy val `plain`: MediaType =
+ new MediaType(
+ "text",
+ "plain",
+ compressible = true,
+ binary = false,
+ List("txt", "text", "conf", "def", "list", "log", "in", "ini"),
)
- }
+
+ lazy val `vnd.in3d.spot`: MediaType =
+ new MediaType("text", "vnd.in3d.spot", compressible = false, binary = false, List("spot"))
+
+ lazy val `x-asm`: MediaType =
+ new MediaType("text", "x-asm", compressible = false, binary = false, List("s", "asm"))
+
+ lazy val `x-scss`: MediaType =
+ new MediaType("text", "x-scss", compressible = false, binary = false, List("scss"))
+
+ lazy val `gff3`: MediaType =
+ new MediaType("text", "gff3", compressible = false, binary = false)
+
+ lazy val `vnd.trolltech.linguist`: MediaType =
+ new MediaType("text", "vnd.trolltech.linguist", compressible = false, binary = false)
+
+ lazy val `jsx`: MediaType =
+ new MediaType("text", "jsx", compressible = true, binary = false, List("jsx"))
+
+ lazy val `vnd.debian.copyright`: MediaType =
+ new MediaType("text", "vnd.debian.copyright", compressible = false, binary = false)
+
+ lazy val `enriched`: MediaType =
+ new MediaType("text", "enriched", compressible = false, binary = false)
+
+ lazy val `vnd.curl`: MediaType =
+ new MediaType("text", "vnd.curl", compressible = false, binary = false, List("curl"))
+
+ lazy val `x-component`: MediaType =
+ new MediaType("text", "x-component", compressible = false, binary = false, List("htc"))
+
+ lazy val `mdx`: MediaType =
+ new MediaType("text", "mdx", compressible = true, binary = false, List("mdx"))
+
+ lazy val `jade`: MediaType =
+ new MediaType("text", "jade", compressible = false, binary = false, List("jade"))
+
+ lazy val `hl7v2`: MediaType =
+ new MediaType("text", "hl7v2", compressible = false, binary = false)
+
+ lazy val `x-suse-ymp`: MediaType =
+ new MediaType("text", "x-suse-ymp", compressible = true, binary = false, List("ymp"))
+
+ lazy val `rtx`: MediaType =
+ new MediaType("text", "rtx", compressible = false, binary = false)
+
+ lazy val `vnd.ficlab.flt`: MediaType =
+ new MediaType("text", "vnd.ficlab.flt", compressible = false, binary = false)
+
+ lazy val `html`: MediaType =
+ new MediaType("text", "html", compressible = true, binary = false, List("html", "htm", "shtml"))
+
+ lazy val `1d-interleaved-parityfec`: MediaType =
+ new MediaType("text", "1d-interleaved-parityfec", compressible = false, binary = false)
+
+ lazy val `vnd.ascii-art`: MediaType =
+ new MediaType("text", "vnd.ascii-art", compressible = false, binary = false)
+
+ lazy val `x-nfo`: MediaType =
+ new MediaType("text", "x-nfo", compressible = false, binary = false, List("nfo"))
+
+ lazy val `mizar`: MediaType =
+ new MediaType("text", "mizar", compressible = false, binary = false)
+
+ lazy val `sgml`: MediaType =
+ new MediaType("text", "sgml", compressible = false, binary = false, List("sgml", "sgm"))
+
+ lazy val `vnd.motorola.reflex`: MediaType =
+ new MediaType("text", "vnd.motorola.reflex", compressible = false, binary = false)
+
+ lazy val `vnd.hgl`: MediaType =
+ new MediaType("text", "vnd.hgl", compressible = false, binary = false)
+
+ lazy val `vnd.abc`: MediaType =
+ new MediaType("text", "vnd.abc", compressible = false, binary = false)
+
+ lazy val `vnd.net2phone.commcenter.command`: MediaType =
+ new MediaType("text", "vnd.net2phone.commcenter.command", compressible = false, binary = false)
+
+ lazy val `prs.lines.tag`: MediaType =
+ new MediaType("text", "prs.lines.tag", compressible = false, binary = false, List("dsc"))
+
+ lazy val `vnd.iptc.nitf`: MediaType =
+ new MediaType("text", "vnd.iptc.nitf", compressible = false, binary = false)
+
+ lazy val `vnd.wap.si`: MediaType =
+ new MediaType("text", "vnd.wap.si", compressible = false, binary = false)
+
+ lazy val `richtext`: MediaType =
+ new MediaType("text", "richtext", compressible = true, binary = false, List("rtx"))
+
+ lazy val `vnd.curl.mcurl`: MediaType =
+ new MediaType("text", "vnd.curl.mcurl", compressible = false, binary = false, List("mcurl"))
+
+ lazy val `vnd.ms-mediapackage`: MediaType =
+ new MediaType("text", "vnd.ms-mediapackage", compressible = false, binary = false)
+
+ lazy val `n3`: MediaType =
+ new MediaType("text", "n3", compressible = true, binary = false, List("n3"))
+
+ lazy val `vtt`: MediaType =
+ new MediaType("text", "vtt", compressible = true, binary = false, List("vtt"))
+
+ lazy val `fwdred`: MediaType =
+ new MediaType("text", "fwdred", compressible = false, binary = false)
+
+ lazy val `prs.fallenstein.rst`: MediaType =
+ new MediaType("text", "prs.fallenstein.rst", compressible = false, binary = false)
+
+ lazy val `mathml`: MediaType =
+ new MediaType("text", "mathml", compressible = false, binary = false, List("mml"))
+
+ lazy val `vnd.si.uricatalogue`: MediaType =
+ new MediaType("text", "vnd.si.uricatalogue", compressible = false, binary = false)
+
+ lazy val `xml`: MediaType =
+ new MediaType("text", "xml", compressible = true, binary = false, List("xml"))
+
+ lazy val `rtf`: MediaType =
+ new MediaType("text", "rtf", compressible = true, binary = false, List("rtf"))
+
+ lazy val `x-uuencode`: MediaType =
+ new MediaType("text", "x-uuencode", compressible = false, binary = false, List("uu"))
+
+ lazy val `troff`: MediaType =
+ new MediaType("text", "troff", compressible = false, binary = false, List("t", "tr", "roff", "man", "me", "ms"))
+
+ lazy val `x-jquery-tmpl`: MediaType =
+ new MediaType("text", "x-jquery-tmpl", compressible = true, binary = false)
+
+ lazy val `x-org`: MediaType =
+ new MediaType("text", "x-org", compressible = true, binary = false, List("org"))
+
+ lazy val `calendar`: MediaType =
+ new MediaType("text", "calendar", compressible = false, binary = false, List("ics", "ifb"))
+
+ lazy val `raptorfec`: MediaType =
+ new MediaType("text", "raptorfec", compressible = false, binary = false)
+
+ lazy val all: List[MediaType] = List(
+ `vnd.wap.wmlscript`,
+ `ulpfec`,
+ `vnd.radisys.msml-basic-layout`,
+ `shex`,
+ `shaclc`,
+ `vnd.curl.dcurl`,
+ `xml-external-parsed-entity`,
+ `fhirpath`,
+ `turtle`,
+ `vnd.sun.j2me.app-descriptor`,
+ `x-sass`,
+ `x-vcard`,
+ `vnd.a`,
+ `uri-list`,
+ `calender`,
+ `markdown`,
+ `vnd.dvb.subtitle`,
+ `ecmascript`,
+ `x-processing`,
+ `cmd`,
+ `tab-separated-values`,
+ `less`,
+ `cache-manifest`,
+ `vnd.wap.sl`,
+ `dns`,
+ `strings`,
+ `csv`,
+ `vnd.gml`,
+ `x-setext`,
+ `x-lua`,
+ `x-vcalendar`,
+ `vnd.exchangeable`,
+ `wgsl`,
+ `rfc822-headers`,
+ `vnd.graphviz`,
+ `red`,
+ `x-fortran`,
+ `cql`,
+ `vnd.esmertec.theme-descriptor`,
+ `directory`,
+ `css`,
+ `vnd.latex-z`,
+ `vnd.fly`,
+ `vnd.senx.warpscript`,
+ `vnd.sosi`,
+ `parameters`,
+ `provenance-notation`,
+ `x-markdown`,
+ `x-handlebars-template`,
+ `csv-schema`,
+ `rtp-enc-aescm128`,
+ `jcr-cnd`,
+ `vnd.hans`,
+ `x-java-source`,
+ `vnd.curl.scurl`,
+ `encaprtp`,
+ `vnd.iptc.newsml`,
+ `vnd.fmi.flexstor`,
+ `vnd.wap.wml`,
+ `cql-identifier`,
+ `vcard`,
+ `rtploopback`,
+ `cql-expression`,
+ `x-opml`,
+ `event-stream`,
+ `slim`,
+ `x-pascal`,
+ `parityfec`,
+ `prs.prop.logic`,
+ `t140`,
+ `javascript`,
+ `vnd.dmclientscript`,
+ `x-sfv`,
+ `flexfec`,
+ `spdx`,
+ `stylus`,
+ `coffeescript`,
+ `yaml`,
+ `vnd.familysearch.gedcom`,
+ `vnd.in3d.3dml`,
+ `x-c`,
+ `x-gwt-rpc`,
+ `grammar-ref-list`,
+ `plain`,
+ `vnd.in3d.spot`,
+ `x-asm`,
+ `x-scss`,
+ `gff3`,
+ `vnd.trolltech.linguist`,
+ `jsx`,
+ `vnd.debian.copyright`,
+ `enriched`,
+ `vnd.curl`,
+ `x-component`,
+ `mdx`,
+ `jade`,
+ `hl7v2`,
+ `x-suse-ymp`,
+ `rtx`,
+ `vnd.ficlab.flt`,
+ `html`,
+ `1d-interleaved-parityfec`,
+ `vnd.ascii-art`,
+ `x-nfo`,
+ `mizar`,
+ `sgml`,
+ `vnd.motorola.reflex`,
+ `vnd.hgl`,
+ `vnd.abc`,
+ `vnd.net2phone.commcenter.command`,
+ `prs.lines.tag`,
+ `vnd.iptc.nitf`,
+ `vnd.wap.si`,
+ `richtext`,
+ `vnd.curl.mcurl`,
+ `vnd.ms-mediapackage`,
+ `n3`,
+ `vtt`,
+ `fwdred`,
+ `prs.fallenstein.rst`,
+ `mathml`,
+ `vnd.si.uricatalogue`,
+ `xml`,
+ `rtf`,
+ `x-uuencode`,
+ `troff`,
+ `x-jquery-tmpl`,
+ `x-org`,
+ `calendar`,
+ `raptorfec`,
+ )
+ lazy val any: MediaType = new MediaType("text", "*")
}
- object application
- extends application_parts.application_0
- with application_parts.application_1
- with application_parts.application_2
- with application_parts.application_3 {
- lazy val all: List[MediaType] = Nil ++ part_0 ++ part_1 ++ part_2 ++ part_3
- lazy val any: MediaType = new MediaType("application", "*")
+
+ object font {
+
+ lazy val `woff`: MediaType =
+ new MediaType("font", "woff", compressible = false, binary = true, List("woff"))
+
+ lazy val `ttf`: MediaType =
+ new MediaType("font", "ttf", compressible = true, binary = true, List("ttf"))
+
+ lazy val `otf`: MediaType =
+ new MediaType("font", "otf", compressible = true, binary = true, List("otf"))
+
+ lazy val `woff2`: MediaType =
+ new MediaType("font", "woff2", compressible = false, binary = true, List("woff2"))
+
+ lazy val `collection`: MediaType =
+ new MediaType("font", "collection", compressible = false, binary = true, List("ttc"))
+
+ lazy val `sfnt`: MediaType =
+ new MediaType("font", "sfnt", compressible = false, binary = true)
+
+ lazy val all: List[MediaType] = List(`woff`, `ttf`, `otf`, `woff2`, `collection`, `sfnt`)
+ lazy val any: MediaType = new MediaType("font", "*")
}
- object audio {
+
+ object video {
+
+ lazy val `vnd.dlna.mpeg-tts`: MediaType =
+ new MediaType("video", "vnd.dlna.mpeg-tts", compressible = false, binary = true)
+
+ lazy val `vnd.dece.video`: MediaType =
+ new MediaType("video", "vnd.dece.video", compressible = false, binary = true, List("uvv", "uvvv"))
+
lazy val `1d-interleaved-parityfec`: MediaType =
- new MediaType("audio", "1d-interleaved-parityfec", Compressible, Binary)
- lazy val `32kadpcm`: MediaType = new MediaType("audio", "32kadpcm", Compressible, Binary)
- lazy val `3gpp`: MediaType =
- new MediaType("audio", "3gpp", Uncompressible, Binary, List("3gpp"))
- lazy val `3gpp2`: MediaType = new MediaType("audio", "3gpp2", Compressible, Binary)
- lazy val `aac`: MediaType = new MediaType("audio", "aac", Compressible, Binary)
- lazy val `ac3`: MediaType = new MediaType("audio", "ac3", Compressible, Binary)
- lazy val `adpcm`: MediaType = new MediaType("audio", "adpcm", Compressible, Binary, List("adp"))
- lazy val `amr`: MediaType = new MediaType("audio", "amr", Compressible, Binary, List("amr"))
- lazy val `amr-wb`: MediaType = new MediaType("audio", "amr-wb", Compressible, Binary)
- lazy val `amr-wb+` : MediaType = new MediaType("audio", "amr-wb+", Compressible, Binary)
- lazy val `aptx`: MediaType = new MediaType("audio", "aptx", Compressible, Binary)
- lazy val `asc`: MediaType = new MediaType("audio", "asc", Compressible, Binary)
- lazy val `atrac-advanced-lossless`: MediaType =
- new MediaType("audio", "atrac-advanced-lossless", Compressible, Binary)
- lazy val `atrac-x`: MediaType = new MediaType("audio", "atrac-x", Compressible, Binary)
- lazy val `atrac3`: MediaType = new MediaType("audio", "atrac3", Compressible, Binary)
- lazy val `basic`: MediaType =
- new MediaType("audio", "basic", Uncompressible, Binary, List("au", "snd"))
- lazy val `bv16`: MediaType = new MediaType("audio", "bv16", Compressible, Binary)
- lazy val `bv32`: MediaType = new MediaType("audio", "bv32", Compressible, Binary)
- lazy val `clearmode`: MediaType = new MediaType("audio", "clearmode", Compressible, Binary)
- lazy val `cn`: MediaType = new MediaType("audio", "cn", Compressible, Binary)
- lazy val `dat12`: MediaType = new MediaType("audio", "dat12", Compressible, Binary)
- lazy val `dls`: MediaType = new MediaType("audio", "dls", Compressible, Binary)
- lazy val `dsr-es201108`: MediaType =
- new MediaType("audio", "dsr-es201108", Compressible, Binary)
- lazy val `dsr-es202050`: MediaType =
- new MediaType("audio", "dsr-es202050", Compressible, Binary)
- lazy val `dsr-es202211`: MediaType =
- new MediaType("audio", "dsr-es202211", Compressible, Binary)
- lazy val `dsr-es202212`: MediaType =
- new MediaType("audio", "dsr-es202212", Compressible, Binary)
- lazy val `dv`: MediaType = new MediaType("audio", "dv", Compressible, Binary)
- lazy val `dvi4`: MediaType = new MediaType("audio", "dvi4", Compressible, Binary)
- lazy val `eac3`: MediaType = new MediaType("audio", "eac3", Compressible, Binary)
- lazy val `encaprtp`: MediaType = new MediaType("audio", "encaprtp", Compressible, Binary)
- lazy val `evrc`: MediaType = new MediaType("audio", "evrc", Compressible, Binary)
- lazy val `evrc-qcp`: MediaType = new MediaType("audio", "evrc-qcp", Compressible, Binary)
- lazy val `evrc0`: MediaType = new MediaType("audio", "evrc0", Compressible, Binary)
- lazy val `evrc1`: MediaType = new MediaType("audio", "evrc1", Compressible, Binary)
- lazy val `evrcb`: MediaType = new MediaType("audio", "evrcb", Compressible, Binary)
- lazy val `evrcb0`: MediaType = new MediaType("audio", "evrcb0", Compressible, Binary)
- lazy val `evrcb1`: MediaType = new MediaType("audio", "evrcb1", Compressible, Binary)
- lazy val `evrcnw`: MediaType = new MediaType("audio", "evrcnw", Compressible, Binary)
- lazy val `evrcnw0`: MediaType = new MediaType("audio", "evrcnw0", Compressible, Binary)
- lazy val `evrcnw1`: MediaType = new MediaType("audio", "evrcnw1", Compressible, Binary)
- lazy val `evrcwb`: MediaType = new MediaType("audio", "evrcwb", Compressible, Binary)
- lazy val `evrcwb0`: MediaType = new MediaType("audio", "evrcwb0", Compressible, Binary)
- lazy val `evrcwb1`: MediaType = new MediaType("audio", "evrcwb1", Compressible, Binary)
- lazy val `evs`: MediaType = new MediaType("audio", "evs", Compressible, Binary)
- lazy val `flexfec`: MediaType = new MediaType("audio", "flexfec", Compressible, Binary)
- lazy val `fwdred`: MediaType = new MediaType("audio", "fwdred", Compressible, Binary)
- lazy val `g711-0`: MediaType = new MediaType("audio", "g711-0", Compressible, Binary)
- lazy val `g719`: MediaType = new MediaType("audio", "g719", Compressible, Binary)
- lazy val `g722`: MediaType = new MediaType("audio", "g722", Compressible, Binary)
- lazy val `g7221`: MediaType = new MediaType("audio", "g7221", Compressible, Binary)
- lazy val `g723`: MediaType = new MediaType("audio", "g723", Compressible, Binary)
- lazy val `g726-16`: MediaType = new MediaType("audio", "g726-16", Compressible, Binary)
- lazy val `g726-24`: MediaType = new MediaType("audio", "g726-24", Compressible, Binary)
- lazy val `g726-32`: MediaType = new MediaType("audio", "g726-32", Compressible, Binary)
- lazy val `g726-40`: MediaType = new MediaType("audio", "g726-40", Compressible, Binary)
- lazy val `g728`: MediaType = new MediaType("audio", "g728", Compressible, Binary)
- lazy val `g729`: MediaType = new MediaType("audio", "g729", Compressible, Binary)
- lazy val `g7291`: MediaType = new MediaType("audio", "g7291", Compressible, Binary)
- lazy val `g729d`: MediaType = new MediaType("audio", "g729d", Compressible, Binary)
- lazy val `g729e`: MediaType = new MediaType("audio", "g729e", Compressible, Binary)
- lazy val `gsm`: MediaType = new MediaType("audio", "gsm", Compressible, Binary)
- lazy val `gsm-efr`: MediaType = new MediaType("audio", "gsm-efr", Compressible, Binary)
- lazy val `gsm-hr-08`: MediaType = new MediaType("audio", "gsm-hr-08", Compressible, Binary)
- lazy val `ilbc`: MediaType = new MediaType("audio", "ilbc", Compressible, Binary)
- lazy val `ip-mr_v2.5`: MediaType = new MediaType("audio", "ip-mr_v2.5", Compressible, Binary)
- lazy val `isac`: MediaType = new MediaType("audio", "isac", Compressible, Binary)
- lazy val `l16`: MediaType = new MediaType("audio", "l16", Compressible, Binary)
- lazy val `l20`: MediaType = new MediaType("audio", "l20", Compressible, Binary)
- lazy val `l24`: MediaType = new MediaType("audio", "l24", Uncompressible, Binary)
- lazy val `l8`: MediaType = new MediaType("audio", "l8", Compressible, Binary)
- lazy val `lpc`: MediaType = new MediaType("audio", "lpc", Compressible, Binary)
- lazy val `melp`: MediaType = new MediaType("audio", "melp", Compressible, Binary)
- lazy val `melp1200`: MediaType = new MediaType("audio", "melp1200", Compressible, Binary)
- lazy val `melp2400`: MediaType = new MediaType("audio", "melp2400", Compressible, Binary)
- lazy val `melp600`: MediaType = new MediaType("audio", "melp600", Compressible, Binary)
- lazy val `mhas`: MediaType = new MediaType("audio", "mhas", Compressible, Binary)
- lazy val `midi`: MediaType =
- new MediaType("audio", "midi", Compressible, Binary, List("mid", "midi", "kar", "rmi"))
- lazy val `mobile-xmf`: MediaType =
- new MediaType("audio", "mobile-xmf", Compressible, Binary, List("mxmf"))
- lazy val `mp3`: MediaType = new MediaType("audio", "mp3", Uncompressible, Binary, List("mp3"))
- lazy val `mp4`: MediaType =
- new MediaType("audio", "mp4", Uncompressible, Binary, List("m4a", "mp4a"))
- lazy val `mp4a-latm`: MediaType = new MediaType("audio", "mp4a-latm", Compressible, Binary)
- lazy val `mpa`: MediaType = new MediaType("audio", "mpa", Compressible, Binary)
- lazy val `mpa-robust`: MediaType = new MediaType("audio", "mpa-robust", Compressible, Binary)
- lazy val `mpeg`: MediaType = new MediaType(
- "audio",
- "mpeg",
- Uncompressible,
- Binary,
- List("mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"),
- )
- lazy val `mpeg4-generic`: MediaType =
- new MediaType("audio", "mpeg4-generic", Compressible, Binary)
- lazy val `musepack`: MediaType = new MediaType("audio", "musepack", Compressible, Binary)
- lazy val `ogg`: MediaType =
- new MediaType("audio", "ogg", Uncompressible, Binary, List("oga", "ogg", "spx", "opus"))
- lazy val `opus`: MediaType = new MediaType("audio", "opus", Compressible, Binary)
- lazy val `parityfec`: MediaType = new MediaType("audio", "parityfec", Compressible, Binary)
- lazy val `pcma`: MediaType = new MediaType("audio", "pcma", Compressible, Binary)
- lazy val `pcma-wb`: MediaType = new MediaType("audio", "pcma-wb", Compressible, Binary)
- lazy val `pcmu`: MediaType = new MediaType("audio", "pcmu", Compressible, Binary)
- lazy val `pcmu-wb`: MediaType = new MediaType("audio", "pcmu-wb", Compressible, Binary)
- lazy val `prs.sid`: MediaType = new MediaType("audio", "prs.sid", Compressible, Binary)
- lazy val `qcelp`: MediaType = new MediaType("audio", "qcelp", Compressible, Binary)
- lazy val `raptorfec`: MediaType = new MediaType("audio", "raptorfec", Compressible, Binary)
- lazy val `red`: MediaType = new MediaType("audio", "red", Compressible, Binary)
- lazy val `rtp-enc-aescm128`: MediaType =
- new MediaType("audio", "rtp-enc-aescm128", Compressible, Binary)
- lazy val `rtp-midi`: MediaType = new MediaType("audio", "rtp-midi", Compressible, Binary)
- lazy val `rtploopback`: MediaType = new MediaType("audio", "rtploopback", Compressible, Binary)
- lazy val `rtx`: MediaType = new MediaType("audio", "rtx", Compressible, Binary)
- lazy val `s3m`: MediaType = new MediaType("audio", "s3m", Compressible, Binary, List("s3m"))
- lazy val `scip`: MediaType = new MediaType("audio", "scip", Compressible, Binary)
- lazy val `silk`: MediaType = new MediaType("audio", "silk", Compressible, Binary, List("sil"))
- lazy val `smv`: MediaType = new MediaType("audio", "smv", Compressible, Binary)
- lazy val `smv-qcp`: MediaType = new MediaType("audio", "smv-qcp", Compressible, Binary)
- lazy val `smv0`: MediaType = new MediaType("audio", "smv0", Compressible, Binary)
- lazy val `sofa`: MediaType = new MediaType("audio", "sofa", Compressible, Binary)
- lazy val `sp-midi`: MediaType = new MediaType("audio", "sp-midi", Compressible, Binary)
- lazy val `speex`: MediaType = new MediaType("audio", "speex", Compressible, Binary)
- lazy val `t140c`: MediaType = new MediaType("audio", "t140c", Compressible, Binary)
- lazy val `t38`: MediaType = new MediaType("audio", "t38", Compressible, Binary)
- lazy val `telephone-event`: MediaType =
- new MediaType("audio", "telephone-event", Compressible, Binary)
- lazy val `tetra_acelp`: MediaType = new MediaType("audio", "tetra_acelp", Compressible, Binary)
- lazy val `tetra_acelp_bb`: MediaType =
- new MediaType("audio", "tetra_acelp_bb", Compressible, Binary)
- lazy val `tone`: MediaType = new MediaType("audio", "tone", Compressible, Binary)
- lazy val `tsvcis`: MediaType = new MediaType("audio", "tsvcis", Compressible, Binary)
- lazy val `uemclip`: MediaType = new MediaType("audio", "uemclip", Compressible, Binary)
- lazy val `ulpfec`: MediaType = new MediaType("audio", "ulpfec", Compressible, Binary)
- lazy val `usac`: MediaType = new MediaType("audio", "usac", Compressible, Binary)
- lazy val `vdvi`: MediaType = new MediaType("audio", "vdvi", Compressible, Binary)
- lazy val `vmr-wb`: MediaType = new MediaType("audio", "vmr-wb", Compressible, Binary)
- lazy val `vnd.3gpp.iufp`: MediaType =
- new MediaType("audio", "vnd.3gpp.iufp", Compressible, Binary)
- lazy val `vnd.4sb`: MediaType = new MediaType("audio", "vnd.4sb", Compressible, Binary)
- lazy val `vnd.audiokoz`: MediaType =
- new MediaType("audio", "vnd.audiokoz", Compressible, Binary)
- lazy val `vnd.celp`: MediaType = new MediaType("audio", "vnd.celp", Compressible, Binary)
- lazy val `vnd.cisco.nse`: MediaType =
- new MediaType("audio", "vnd.cisco.nse", Compressible, Binary)
- lazy val `vnd.cmles.radio-events`: MediaType =
- new MediaType("audio", "vnd.cmles.radio-events", Compressible, Binary)
- lazy val `vnd.cns.anp1`: MediaType =
- new MediaType("audio", "vnd.cns.anp1", Compressible, Binary)
- lazy val `vnd.cns.inf1`: MediaType =
- new MediaType("audio", "vnd.cns.inf1", Compressible, Binary)
- lazy val `vnd.dece.audio`: MediaType =
- new MediaType("audio", "vnd.dece.audio", Compressible, Binary, List("uva", "uvva"))
- lazy val `vnd.digital-winds`: MediaType =
- new MediaType("audio", "vnd.digital-winds", Compressible, Binary, List("eol"))
- lazy val `vnd.dlna.adts`: MediaType =
- new MediaType("audio", "vnd.dlna.adts", Compressible, Binary)
- lazy val `vnd.dolby.heaac.1`: MediaType =
- new MediaType("audio", "vnd.dolby.heaac.1", Compressible, Binary)
- lazy val `vnd.dolby.heaac.2`: MediaType =
- new MediaType("audio", "vnd.dolby.heaac.2", Compressible, Binary)
- lazy val `vnd.dolby.mlp`: MediaType =
- new MediaType("audio", "vnd.dolby.mlp", Compressible, Binary)
- lazy val `vnd.dolby.mps`: MediaType =
- new MediaType("audio", "vnd.dolby.mps", Compressible, Binary)
- lazy val `vnd.dolby.pl2`: MediaType =
- new MediaType("audio", "vnd.dolby.pl2", Compressible, Binary)
- lazy val `vnd.dolby.pl2x`: MediaType =
- new MediaType("audio", "vnd.dolby.pl2x", Compressible, Binary)
- lazy val `vnd.dolby.pl2z`: MediaType =
- new MediaType("audio", "vnd.dolby.pl2z", Compressible, Binary)
- lazy val `vnd.dolby.pulse.1`: MediaType =
- new MediaType("audio", "vnd.dolby.pulse.1", Compressible, Binary)
- lazy val `vnd.dra`: MediaType =
- new MediaType("audio", "vnd.dra", Compressible, Binary, List("dra"))
- lazy val `vnd.dts`: MediaType =
- new MediaType("audio", "vnd.dts", Compressible, Binary, List("dts"))
- lazy val `vnd.dts.hd`: MediaType =
- new MediaType("audio", "vnd.dts.hd", Compressible, Binary, List("dtshd"))
- lazy val `vnd.dts.uhd`: MediaType = new MediaType("audio", "vnd.dts.uhd", Compressible, Binary)
- lazy val `vnd.dvb.file`: MediaType =
- new MediaType("audio", "vnd.dvb.file", Compressible, Binary)
- lazy val `vnd.everad.plj`: MediaType =
- new MediaType("audio", "vnd.everad.plj", Compressible, Binary)
- lazy val `vnd.hns.audio`: MediaType =
- new MediaType("audio", "vnd.hns.audio", Compressible, Binary)
- lazy val `vnd.lucent.voice`: MediaType =
- new MediaType("audio", "vnd.lucent.voice", Compressible, Binary, List("lvp"))
- lazy val `vnd.ms-playready.media.pya`: MediaType =
- new MediaType("audio", "vnd.ms-playready.media.pya", Compressible, Binary, List("pya"))
- lazy val `vnd.nokia.mobile-xmf`: MediaType =
- new MediaType("audio", "vnd.nokia.mobile-xmf", Compressible, Binary)
- lazy val `vnd.nortel.vbk`: MediaType =
- new MediaType("audio", "vnd.nortel.vbk", Compressible, Binary)
- lazy val `vnd.nuera.ecelp4800`: MediaType =
- new MediaType("audio", "vnd.nuera.ecelp4800", Compressible, Binary, List("ecelp4800"))
- lazy val `vnd.nuera.ecelp7470`: MediaType =
- new MediaType("audio", "vnd.nuera.ecelp7470", Compressible, Binary, List("ecelp7470"))
- lazy val `vnd.nuera.ecelp9600`: MediaType =
- new MediaType("audio", "vnd.nuera.ecelp9600", Compressible, Binary, List("ecelp9600"))
- lazy val `vnd.octel.sbc`: MediaType =
- new MediaType("audio", "vnd.octel.sbc", Compressible, Binary)
- lazy val `vnd.presonus.multitrack`: MediaType =
- new MediaType("audio", "vnd.presonus.multitrack", Compressible, Binary)
- lazy val `vnd.qcelp`: MediaType = new MediaType("audio", "vnd.qcelp", Compressible, Binary)
- lazy val `vnd.rhetorex.32kadpcm`: MediaType =
- new MediaType("audio", "vnd.rhetorex.32kadpcm", Compressible, Binary)
- lazy val `vnd.rip`: MediaType =
- new MediaType("audio", "vnd.rip", Compressible, Binary, List("rip"))
- lazy val `vnd.rn-realaudio`: MediaType =
- new MediaType("audio", "vnd.rn-realaudio", Uncompressible, Binary)
- lazy val `vnd.sealedmedia.softseal.mpeg`: MediaType =
- new MediaType("audio", "vnd.sealedmedia.softseal.mpeg", Compressible, Binary)
- lazy val `vnd.vmx.cvsd`: MediaType =
- new MediaType("audio", "vnd.vmx.cvsd", Compressible, Binary)
- lazy val `vnd.wave`: MediaType = new MediaType("audio", "vnd.wave", Uncompressible, Binary)
- lazy val `vorbis`: MediaType = new MediaType("audio", "vorbis", Uncompressible, Binary)
- lazy val `vorbis-config`: MediaType =
- new MediaType("audio", "vorbis-config", Compressible, Binary)
- lazy val `wav`: MediaType = new MediaType("audio", "wav", Uncompressible, Binary, List("wav"))
- lazy val `wave`: MediaType = new MediaType("audio", "wave", Uncompressible, Binary, List("wav"))
- lazy val `webm`: MediaType =
- new MediaType("audio", "webm", Uncompressible, Binary, List("weba"))
- lazy val `x-aac`: MediaType =
- new MediaType("audio", "x-aac", Uncompressible, Binary, List("aac"))
- lazy val `x-aiff`: MediaType =
- new MediaType("audio", "x-aiff", Compressible, Binary, List("aif", "aiff", "aifc"))
- lazy val `x-caf`: MediaType =
- new MediaType("audio", "x-caf", Uncompressible, Binary, List("caf"))
- lazy val `x-flac`: MediaType =
- new MediaType("audio", "x-flac", Compressible, Binary, List("flac"))
- lazy val `x-m4a`: MediaType = new MediaType("audio", "x-m4a", Compressible, Binary, List("m4a"))
- lazy val `x-matroska`: MediaType =
- new MediaType("audio", "x-matroska", Compressible, Binary, List("mka"))
- lazy val `x-mpegurl`: MediaType =
- new MediaType("audio", "x-mpegurl", Compressible, Binary, List("m3u"))
- lazy val `x-ms-wax`: MediaType =
- new MediaType("audio", "x-ms-wax", Compressible, Binary, List("wax"))
- lazy val `x-ms-wma`: MediaType =
- new MediaType("audio", "x-ms-wma", Compressible, Binary, List("wma"))
- lazy val `x-pn-realaudio`: MediaType =
- new MediaType("audio", "x-pn-realaudio", Compressible, Binary, List("ram", "ra"))
- lazy val `x-pn-realaudio-plugin`: MediaType =
- new MediaType("audio", "x-pn-realaudio-plugin", Compressible, Binary, List("rmp"))
- lazy val `x-realaudio`: MediaType =
- new MediaType("audio", "x-realaudio", Compressible, Binary, List("ra"))
- lazy val `x-tta`: MediaType = new MediaType("audio", "x-tta", Compressible, Binary)
- lazy val `x-wav`: MediaType = new MediaType("audio", "x-wav", Compressible, Binary, List("wav"))
- lazy val `xm`: MediaType = new MediaType("audio", "xm", Compressible, Binary, List("xm"))
- lazy val all: List[MediaType] = List(
+ new MediaType("video", "1d-interleaved-parityfec", compressible = false, binary = true)
+
+ lazy val `nv`: MediaType =
+ new MediaType("video", "nv", compressible = false, binary = true)
+
+ lazy val `vnd.directv.mpeg-tts`: MediaType =
+ new MediaType("video", "vnd.directv.mpeg-tts", compressible = false, binary = true)
+
+ lazy val `bmpeg`: MediaType =
+ new MediaType("video", "bmpeg", compressible = false, binary = true)
+
+ lazy val `quicktime`: MediaType =
+ new MediaType("video", "quicktime", compressible = false, binary = true, List("qt", "mov"))
+
+ lazy val `h264`: MediaType =
+ new MediaType("video", "h264", compressible = false, binary = true, List("h264"))
+
+ lazy val `vnd.ms-playready.media.pyv`: MediaType =
+ new MediaType("video", "vnd.ms-playready.media.pyv", compressible = false, binary = true, List("pyv"))
+
+ lazy val `rtp-enc-aescm128`: MediaType =
+ new MediaType("video", "rtp-enc-aescm128", compressible = false, binary = true)
+
+ lazy val `x-mng`: MediaType =
+ new MediaType("video", "x-mng", compressible = false, binary = true, List("mng"))
+
+ lazy val `celb`: MediaType =
+ new MediaType("video", "celb", compressible = false, binary = true)
+
+ lazy val `raptorfec`: MediaType =
+ new MediaType("video", "raptorfec", compressible = false, binary = true)
+
+ lazy val `vnd.dece.pd`: MediaType =
+ new MediaType("video", "vnd.dece.pd", compressible = false, binary = true, List("uvp", "uvvp"))
+
+ lazy val `mpeg`: MediaType =
+ new MediaType("video", "mpeg", compressible = false, binary = true, List("mpeg", "mpg", "mpe", "m1v", "m2v"))
+
+ lazy val `smpte291`: MediaType =
+ new MediaType("video", "smpte291", compressible = false, binary = true)
+
+ lazy val `vnd.dece.mp4`: MediaType =
+ new MediaType("video", "vnd.dece.mp4", compressible = false, binary = true)
+
+ lazy val `encaprtp`: MediaType =
+ new MediaType("video", "encaprtp", compressible = false, binary = true)
+
+ lazy val `vnd.dece.hd`: MediaType =
+ new MediaType("video", "vnd.dece.hd", compressible = false, binary = true, List("uvh", "uvvh"))
+
+ lazy val `h263-2000`: MediaType =
+ new MediaType("video", "h263-2000", compressible = false, binary = true)
+
+ lazy val `vnd.iptvforum.2dparityfec-1010`: MediaType =
+ new MediaType("video", "vnd.iptvforum.2dparityfec-1010", compressible = false, binary = true)
+
+ lazy val `vnd.mpegurl`: MediaType =
+ new MediaType("video", "vnd.mpegurl", compressible = false, binary = true, List("mxu", "m4u"))
+
+ lazy val `jxsv`: MediaType =
+ new MediaType("video", "jxsv", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.interleaved-multimedia`: MediaType =
+ new MediaType("video", "vnd.nokia.interleaved-multimedia", compressible = false, binary = true)
+
+ lazy val `bt656`: MediaType =
+ new MediaType("video", "bt656", compressible = false, binary = true)
+
+ lazy val `x-sgi-movie`: MediaType =
+ new MediaType("video", "x-sgi-movie", compressible = false, binary = true, List("movie"))
+
+ lazy val `x-fli`: MediaType =
+ new MediaType("video", "x-fli", compressible = false, binary = true, List("fli"))
+
+ lazy val `vnd.youtube.yt`: MediaType =
+ new MediaType("video", "vnd.youtube.yt", compressible = false, binary = true)
+
+ lazy val `vnd.iptvforum.ttsavc`: MediaType =
+ new MediaType("video", "vnd.iptvforum.ttsavc", compressible = false, binary = true)
+
+ lazy val `h261`: MediaType =
+ new MediaType("video", "h261", compressible = false, binary = true, List("h261"))
+
+ lazy val `parityfec`: MediaType =
+ new MediaType("video", "parityfec", compressible = false, binary = true)
+
+ lazy val `3gpp-tt`: MediaType =
+ new MediaType("video", "3gpp-tt", compressible = false, binary = true)
+
+ lazy val `3gpp2`: MediaType =
+ new MediaType("video", "3gpp2", compressible = false, binary = true, List("3g2"))
+
+ lazy val `x-ms-wmv`: MediaType =
+ new MediaType("video", "x-ms-wmv", compressible = false, binary = true, List("wmv"))
+
+ lazy val `vnd.nokia.mp4vr`: MediaType =
+ new MediaType("video", "vnd.nokia.mp4vr", compressible = false, binary = true)
+
+ lazy val `h265`: MediaType =
+ new MediaType("video", "h265", compressible = false, binary = true)
+
+ lazy val `vnd.dece.sd`: MediaType =
+ new MediaType("video", "vnd.dece.sd", compressible = false, binary = true, List("uvs", "uvvs"))
+
+ lazy val `x-ms-wm`: MediaType =
+ new MediaType("video", "x-ms-wm", compressible = false, binary = true, List("wm"))
+
+ lazy val `vnd.iptvforum.ttsmpeg2`: MediaType =
+ new MediaType("video", "vnd.iptvforum.ttsmpeg2", compressible = false, binary = true)
+
+ lazy val `vnd.sealedmedia.softseal.mov`: MediaType =
+ new MediaType("video", "vnd.sealedmedia.softseal.mov", compressible = false, binary = true)
+
+ lazy val `vnd.sealed.swf`: MediaType =
+ new MediaType("video", "vnd.sealed.swf", compressible = false, binary = true)
+
+ lazy val `ffv1`: MediaType =
+ new MediaType("video", "ffv1", compressible = false, binary = true)
+
+ lazy val `ogg`: MediaType =
+ new MediaType("video", "ogg", compressible = false, binary = true, List("ogv"))
+
+ lazy val `vnd.cctv`: MediaType =
+ new MediaType("video", "vnd.cctv", compressible = false, binary = true)
+
+ lazy val `iso.segment`: MediaType =
+ new MediaType("video", "iso.segment", compressible = false, binary = true, List("m4s"))
+
+ lazy val `x-ms-vob`: MediaType =
+ new MediaType("video", "x-ms-vob", compressible = false, binary = true, List("vob"))
+
+ lazy val `vp9`: MediaType =
+ new MediaType("video", "vp9", compressible = false, binary = true)
+
+ lazy val `vnd.iptvforum.2dparityfec-2005`: MediaType =
+ new MediaType("video", "vnd.iptvforum.2dparityfec-2005", compressible = false, binary = true)
+
+ lazy val `rtx`: MediaType =
+ new MediaType("video", "rtx", compressible = false, binary = true)
+
+ lazy val `scip`: MediaType =
+ new MediaType("video", "scip", compressible = false, binary = true)
+
+ lazy val `vnd.fvt`: MediaType =
+ new MediaType("video", "vnd.fvt", compressible = false, binary = true, List("fvt"))
+
+ lazy val `mpv`: MediaType =
+ new MediaType("video", "mpv", compressible = false, binary = true)
+
+ lazy val `vnd.uvvu.mp4`: MediaType =
+ new MediaType("video", "vnd.uvvu.mp4", compressible = false, binary = true, List("uvu", "uvvu"))
+
+ lazy val `ulpfec`: MediaType =
+ new MediaType("video", "ulpfec", compressible = false, binary = true)
+
+ lazy val `av1`: MediaType =
+ new MediaType("video", "av1", compressible = false, binary = true)
+
+ lazy val `vnd.motorola.video`: MediaType =
+ new MediaType("video", "vnd.motorola.video", compressible = false, binary = true)
+
+ lazy val `vnd.hns.video`: MediaType =
+ new MediaType("video", "vnd.hns.video", compressible = false, binary = true)
+
+ lazy val `mp2p`: MediaType =
+ new MediaType("video", "mp2p", compressible = false, binary = true)
+
+ lazy val `h266`: MediaType =
+ new MediaType("video", "h266", compressible = false, binary = true)
+
+ lazy val `rtploopback`: MediaType =
+ new MediaType("video", "rtploopback", compressible = false, binary = true)
+
+ lazy val `h263-1998`: MediaType =
+ new MediaType("video", "h263-1998", compressible = false, binary = true)
+
+ lazy val `vnd.radgamettools.smacker`: MediaType =
+ new MediaType("video", "vnd.radgamettools.smacker", compressible = false, binary = true)
+
+ lazy val `smpte292m`: MediaType =
+ new MediaType("video", "smpte292m", compressible = false, binary = true)
+
+ lazy val `x-matroska`: MediaType =
+ new MediaType("video", "x-matroska", compressible = false, binary = true, List("mkv", "mk3d", "mks"))
+
+ lazy val `vnd.directv.mpeg`: MediaType =
+ new MediaType("video", "vnd.directv.mpeg", compressible = false, binary = true)
+
+ lazy val `x-msvideo`: MediaType =
+ new MediaType("video", "x-msvideo", compressible = false, binary = true, List("avi"))
+
+ lazy val `flexfec`: MediaType =
+ new MediaType("video", "flexfec", compressible = false, binary = true)
+
+ lazy val `webm`: MediaType =
+ new MediaType("video", "webm", compressible = false, binary = true, List("webm"))
+
+ lazy val `raw`: MediaType =
+ new MediaType("video", "raw", compressible = false, binary = true)
+
+ lazy val `vnd.iptvforum.1dparityfec-1010`: MediaType =
+ new MediaType("video", "vnd.iptvforum.1dparityfec-1010", compressible = false, binary = true)
+
+ lazy val `h264-svc`: MediaType =
+ new MediaType("video", "h264-svc", compressible = false, binary = true)
+
+ lazy val `x-f4v`: MediaType =
+ new MediaType("video", "x-f4v", compressible = false, binary = true, List("f4v"))
+
+ lazy val `vnd.radgamettools.bink`: MediaType =
+ new MediaType("video", "vnd.radgamettools.bink", compressible = false, binary = true)
+
+ lazy val `vnd.iptvforum.1dparityfec-2005`: MediaType =
+ new MediaType("video", "vnd.iptvforum.1dparityfec-2005", compressible = false, binary = true)
+
+ lazy val `h263`: MediaType =
+ new MediaType("video", "h263", compressible = false, binary = true, List("h263"))
+
+ lazy val `vnd.sealed.mpeg1`: MediaType =
+ new MediaType("video", "vnd.sealed.mpeg1", compressible = false, binary = true)
+
+ lazy val `vnd.objectvideo`: MediaType =
+ new MediaType("video", "vnd.objectvideo", compressible = false, binary = true)
+
+ lazy val `mj2`: MediaType =
+ new MediaType("video", "mj2", compressible = false, binary = true, List("mj2", "mjp2"))
+
+ lazy val `x-ms-asf`: MediaType =
+ new MediaType("video", "x-ms-asf", compressible = false, binary = true, List("asf", "asx"))
+
+ lazy val `x-smv`: MediaType =
+ new MediaType("video", "x-smv", compressible = false, binary = true, List("smv"))
+
+ lazy val `3gpp`: MediaType =
+ new MediaType("video", "3gpp", compressible = false, binary = true, List("3gp", "3gpp"))
+
+ lazy val `vc2`: MediaType =
+ new MediaType("video", "vc2", compressible = false, binary = true)
+
+ lazy val `vnd.sealed.mpeg4`: MediaType =
+ new MediaType("video", "vnd.sealed.mpeg4", compressible = false, binary = true)
+
+ lazy val `vnd.vivo`: MediaType =
+ new MediaType("video", "vnd.vivo", compressible = false, binary = true, List("viv"))
+
+ lazy val `vnd.dece.mobile`: MediaType =
+ new MediaType("video", "vnd.dece.mobile", compressible = false, binary = true, List("uvm", "uvvm"))
+
+ lazy val `pointer`: MediaType =
+ new MediaType("video", "pointer", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.videovoip`: MediaType =
+ new MediaType("video", "vnd.nokia.videovoip", compressible = false, binary = true)
+
+ lazy val `vc1`: MediaType =
+ new MediaType("video", "vc1", compressible = false, binary = true)
+
+ lazy val `jpm`: MediaType =
+ new MediaType("video", "jpm", compressible = false, binary = true, List("jpm", "jpgm"))
+
+ lazy val `mp4v-es`: MediaType =
+ new MediaType("video", "mp4v-es", compressible = false, binary = true)
+
+ lazy val `x-ms-wmx`: MediaType =
+ new MediaType("video", "x-ms-wmx", compressible = false, binary = true, List("wmx"))
+
+ lazy val `h264-rcdo`: MediaType =
+ new MediaType("video", "h264-rcdo", compressible = false, binary = true)
+
+ lazy val `mpeg4-generic`: MediaType =
+ new MediaType("video", "mpeg4-generic", compressible = false, binary = true)
+
+ lazy val `mp2t`: MediaType =
+ new MediaType("video", "mp2t", compressible = false, binary = true, List("ts"))
+
+ lazy val `dv`: MediaType =
+ new MediaType("video", "dv", compressible = false, binary = true)
+
+ lazy val `vnd.motorola.videop`: MediaType =
+ new MediaType("video", "vnd.motorola.videop", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.file`: MediaType =
+ new MediaType("video", "vnd.dvb.file", compressible = false, binary = true, List("dvb"))
+
+ lazy val `jpeg2000`: MediaType =
+ new MediaType("video", "jpeg2000", compressible = false, binary = true)
+
+ lazy val `vp8`: MediaType =
+ new MediaType("video", "vp8", compressible = false, binary = true)
+
+ lazy val `jpeg`: MediaType =
+ new MediaType("video", "jpeg", compressible = false, binary = true, List("jpgv"))
+
+ lazy val `x-m4v`: MediaType =
+ new MediaType("video", "x-m4v", compressible = false, binary = true, List("m4v"))
+
+ lazy val `mp1s`: MediaType =
+ new MediaType("video", "mp1s", compressible = false, binary = true)
+
+ lazy val `x-ms-wvx`: MediaType =
+ new MediaType("video", "x-ms-wvx", compressible = false, binary = true, List("wvx"))
+
+ lazy val `x-flv`: MediaType =
+ new MediaType("video", "x-flv", compressible = false, binary = true, List("flv"))
+
+ lazy val `mp4`: MediaType =
+ new MediaType("video", "mp4", compressible = false, binary = true, List("mp4", "mp4v", "mpg4"))
+
+ lazy val all: List[MediaType] = List(
+ `vnd.dlna.mpeg-tts`,
+ `vnd.dece.video`,
`1d-interleaved-parityfec`,
- `32kadpcm`,
- `3gpp`,
- `3gpp2`,
- `aac`,
- `ac3`,
- `adpcm`,
- `amr`,
- `amr-wb`,
- `amr-wb+`,
- `aptx`,
- `asc`,
- `atrac-advanced-lossless`,
- `atrac-x`,
- `atrac3`,
- `basic`,
- `bv16`,
- `bv32`,
- `clearmode`,
- `cn`,
- `dat12`,
- `dls`,
- `dsr-es201108`,
- `dsr-es202050`,
- `dsr-es202211`,
- `dsr-es202212`,
- `dv`,
- `dvi4`,
- `eac3`,
- `encaprtp`,
- `evrc`,
- `evrc-qcp`,
- `evrc0`,
- `evrc1`,
- `evrcb`,
- `evrcb0`,
- `evrcb1`,
- `evrcnw`,
- `evrcnw0`,
- `evrcnw1`,
- `evrcwb`,
- `evrcwb0`,
- `evrcwb1`,
- `evs`,
- `flexfec`,
- `fwdred`,
- `g711-0`,
- `g719`,
- `g722`,
- `g7221`,
- `g723`,
- `g726-16`,
- `g726-24`,
- `g726-32`,
- `g726-40`,
- `g728`,
- `g729`,
- `g7291`,
- `g729d`,
- `g729e`,
- `gsm`,
- `gsm-efr`,
- `gsm-hr-08`,
- `ilbc`,
- `ip-mr_v2.5`,
- `isac`,
- `l16`,
- `l20`,
- `l24`,
- `l8`,
- `lpc`,
- `melp`,
- `melp1200`,
- `melp2400`,
- `melp600`,
- `mhas`,
- `midi`,
- `mobile-xmf`,
- `mp3`,
- `mp4`,
- `mp4a-latm`,
- `mpa`,
- `mpa-robust`,
+ `nv`,
+ `vnd.directv.mpeg-tts`,
+ `bmpeg`,
+ `quicktime`,
+ `h264`,
+ `vnd.ms-playready.media.pyv`,
+ `rtp-enc-aescm128`,
+ `x-mng`,
+ `celb`,
+ `raptorfec`,
+ `vnd.dece.pd`,
`mpeg`,
- `mpeg4-generic`,
- `musepack`,
+ `smpte291`,
+ `vnd.dece.mp4`,
+ `encaprtp`,
+ `vnd.dece.hd`,
+ `h263-2000`,
+ `vnd.iptvforum.2dparityfec-1010`,
+ `vnd.mpegurl`,
+ `jxsv`,
+ `vnd.nokia.interleaved-multimedia`,
+ `bt656`,
+ `x-sgi-movie`,
+ `x-fli`,
+ `vnd.youtube.yt`,
+ `vnd.iptvforum.ttsavc`,
+ `h261`,
+ `parityfec`,
+ `3gpp-tt`,
+ `3gpp2`,
+ `x-ms-wmv`,
+ `vnd.nokia.mp4vr`,
+ `h265`,
+ `vnd.dece.sd`,
+ `x-ms-wm`,
+ `vnd.iptvforum.ttsmpeg2`,
+ `vnd.sealedmedia.softseal.mov`,
+ `vnd.sealed.swf`,
+ `ffv1`,
`ogg`,
- `opus`,
- `parityfec`,
- `pcma`,
- `pcma-wb`,
- `pcmu`,
- `pcmu-wb`,
- `prs.sid`,
- `qcelp`,
- `raptorfec`,
- `red`,
- `rtp-enc-aescm128`,
- `rtp-midi`,
- `rtploopback`,
+ `vnd.cctv`,
+ `iso.segment`,
+ `x-ms-vob`,
+ `vp9`,
+ `vnd.iptvforum.2dparityfec-2005`,
`rtx`,
- `s3m`,
`scip`,
- `silk`,
- `smv`,
- `smv-qcp`,
- `smv0`,
- `sofa`,
- `sp-midi`,
- `speex`,
- `t140c`,
- `t38`,
- `telephone-event`,
- `tetra_acelp`,
- `tetra_acelp_bb`,
- `tone`,
- `tsvcis`,
- `uemclip`,
+ `vnd.fvt`,
+ `mpv`,
+ `vnd.uvvu.mp4`,
`ulpfec`,
- `usac`,
- `vdvi`,
- `vmr-wb`,
- `vnd.3gpp.iufp`,
- `vnd.4sb`,
- `vnd.audiokoz`,
- `vnd.celp`,
- `vnd.cisco.nse`,
- `vnd.cmles.radio-events`,
- `vnd.cns.anp1`,
- `vnd.cns.inf1`,
- `vnd.dece.audio`,
- `vnd.digital-winds`,
- `vnd.dlna.adts`,
- `vnd.dolby.heaac.1`,
- `vnd.dolby.heaac.2`,
- `vnd.dolby.mlp`,
- `vnd.dolby.mps`,
- `vnd.dolby.pl2`,
- `vnd.dolby.pl2x`,
- `vnd.dolby.pl2z`,
- `vnd.dolby.pulse.1`,
- `vnd.dra`,
- `vnd.dts`,
- `vnd.dts.hd`,
- `vnd.dts.uhd`,
- `vnd.dvb.file`,
- `vnd.everad.plj`,
- `vnd.hns.audio`,
- `vnd.lucent.voice`,
- `vnd.ms-playready.media.pya`,
- `vnd.nokia.mobile-xmf`,
- `vnd.nortel.vbk`,
- `vnd.nuera.ecelp4800`,
- `vnd.nuera.ecelp7470`,
- `vnd.nuera.ecelp9600`,
- `vnd.octel.sbc`,
- `vnd.presonus.multitrack`,
- `vnd.qcelp`,
- `vnd.rhetorex.32kadpcm`,
- `vnd.rip`,
- `vnd.rn-realaudio`,
- `vnd.sealedmedia.softseal.mpeg`,
- `vnd.vmx.cvsd`,
- `vnd.wave`,
- `vorbis`,
- `vorbis-config`,
- `wav`,
- `wave`,
- `webm`,
- `x-aac`,
- `x-aiff`,
- `x-caf`,
- `x-flac`,
- `x-m4a`,
+ `av1`,
+ `vnd.motorola.video`,
+ `vnd.hns.video`,
+ `mp2p`,
+ `h266`,
+ `rtploopback`,
+ `h263-1998`,
+ `vnd.radgamettools.smacker`,
+ `smpte292m`,
`x-matroska`,
- `x-mpegurl`,
- `x-ms-wax`,
- `x-ms-wma`,
- `x-pn-realaudio`,
- `x-pn-realaudio-plugin`,
- `x-realaudio`,
- `x-tta`,
- `x-wav`,
- `xm`,
- )
- lazy val any: MediaType = new MediaType("audio", "*")
- }
- object chemical {
- lazy val `x-cdx`: MediaType =
- new MediaType("chemical", "x-cdx", Compressible, NotBinary, List("cdx"))
- lazy val `x-cif`: MediaType =
- new MediaType("chemical", "x-cif", Compressible, NotBinary, List("cif"))
- lazy val `x-cmdf`: MediaType =
- new MediaType("chemical", "x-cmdf", Compressible, NotBinary, List("cmdf"))
- lazy val `x-cml`: MediaType =
- new MediaType("chemical", "x-cml", Compressible, NotBinary, List("cml"))
- lazy val `x-csml`: MediaType =
- new MediaType("chemical", "x-csml", Compressible, NotBinary, List("csml"))
- lazy val `x-pdb`: MediaType = new MediaType("chemical", "x-pdb", Compressible, NotBinary)
- lazy val `x-xyz`: MediaType =
- new MediaType("chemical", "x-xyz", Compressible, NotBinary, List("xyz"))
- lazy val all: List[MediaType] =
- List(`x-cdx`, `x-cif`, `x-cmdf`, `x-cml`, `x-csml`, `x-pdb`, `x-xyz`)
- lazy val any: MediaType = new MediaType("chemical", "*")
- }
- object font {
- lazy val `collection`: MediaType =
- new MediaType("font", "collection", Compressible, NotBinary, List("ttc"))
- lazy val `otf`: MediaType = new MediaType("font", "otf", Compressible, NotBinary, List("otf"))
- lazy val `sfnt`: MediaType = new MediaType("font", "sfnt", Compressible, NotBinary)
- lazy val `ttf`: MediaType = new MediaType("font", "ttf", Compressible, NotBinary, List("ttf"))
- lazy val `woff`: MediaType =
- new MediaType("font", "woff", Compressible, NotBinary, List("woff"))
- lazy val `woff2`: MediaType =
- new MediaType("font", "woff2", Compressible, NotBinary, List("woff2"))
- lazy val all: List[MediaType] = List(`collection`, `otf`, `sfnt`, `ttf`, `woff`, `woff2`)
- lazy val any: MediaType = new MediaType("font", "*")
- }
- object image {
- lazy val `aces`: MediaType = new MediaType("image", "aces", Compressible, Binary, List("exr"))
- lazy val `apng`: MediaType =
- new MediaType("image", "apng", Uncompressible, Binary, List("apng"))
- lazy val `avci`: MediaType = new MediaType("image", "avci", Compressible, Binary)
- lazy val `avcs`: MediaType = new MediaType("image", "avcs", Compressible, Binary)
- lazy val `avif`: MediaType =
- new MediaType("image", "avif", Uncompressible, Binary, List("avif"))
- lazy val `bmp`: MediaType = new MediaType("image", "bmp", Compressible, Binary, List("bmp"))
- lazy val `cgm`: MediaType = new MediaType("image", "cgm", Compressible, Binary, List("cgm"))
- lazy val `dicom-rle`: MediaType =
- new MediaType("image", "dicom-rle", Compressible, Binary, List("drle"))
- lazy val `emf`: MediaType = new MediaType("image", "emf", Compressible, Binary, List("emf"))
- lazy val `fits`: MediaType = new MediaType("image", "fits", Compressible, Binary, List("fits"))
- lazy val `g3fax`: MediaType = new MediaType("image", "g3fax", Compressible, Binary, List("g3"))
- lazy val `gif`: MediaType = new MediaType("image", "gif", Uncompressible, Binary, List("gif"))
- lazy val `heic`: MediaType = new MediaType("image", "heic", Compressible, Binary, List("heic"))
- lazy val `heic-sequence`: MediaType =
- new MediaType("image", "heic-sequence", Compressible, Binary, List("heics"))
- lazy val `heif`: MediaType = new MediaType("image", "heif", Compressible, Binary, List("heif"))
- lazy val `heif-sequence`: MediaType =
- new MediaType("image", "heif-sequence", Compressible, Binary, List("heifs"))
- lazy val `hej2k`: MediaType =
- new MediaType("image", "hej2k", Compressible, Binary, List("hej2"))
- lazy val `hsj2`: MediaType = new MediaType("image", "hsj2", Compressible, Binary, List("hsj2"))
- lazy val `ief`: MediaType = new MediaType("image", "ief", Compressible, Binary, List("ief"))
- lazy val `jls`: MediaType = new MediaType("image", "jls", Compressible, Binary, List("jls"))
- lazy val `jp2`: MediaType =
- new MediaType("image", "jp2", Uncompressible, Binary, List("jp2", "jpg2"))
- lazy val `jpeg`: MediaType =
- new MediaType("image", "jpeg", Uncompressible, Binary, List("jpeg", "jpg", "jpe"))
- lazy val `jph`: MediaType = new MediaType("image", "jph", Compressible, Binary, List("jph"))
- lazy val `jphc`: MediaType = new MediaType("image", "jphc", Compressible, Binary, List("jhc"))
- lazy val `jpm`: MediaType = new MediaType("image", "jpm", Uncompressible, Binary, List("jpm"))
- lazy val `jpx`: MediaType =
- new MediaType("image", "jpx", Uncompressible, Binary, List("jpx", "jpf"))
- lazy val `jxr`: MediaType = new MediaType("image", "jxr", Compressible, Binary, List("jxr"))
- lazy val `jxra`: MediaType = new MediaType("image", "jxra", Compressible, Binary, List("jxra"))
- lazy val `jxrs`: MediaType = new MediaType("image", "jxrs", Compressible, Binary, List("jxrs"))
- lazy val `jxs`: MediaType = new MediaType("image", "jxs", Compressible, Binary, List("jxs"))
- lazy val `jxsc`: MediaType = new MediaType("image", "jxsc", Compressible, Binary, List("jxsc"))
- lazy val `jxsi`: MediaType = new MediaType("image", "jxsi", Compressible, Binary, List("jxsi"))
- lazy val `jxss`: MediaType = new MediaType("image", "jxss", Compressible, Binary, List("jxss"))
- lazy val `ktx`: MediaType = new MediaType("image", "ktx", Compressible, Binary, List("ktx"))
- lazy val `ktx2`: MediaType = new MediaType("image", "ktx2", Compressible, Binary, List("ktx2"))
- lazy val `naplps`: MediaType = new MediaType("image", "naplps", Compressible, Binary)
- lazy val `pjpeg`: MediaType = new MediaType("image", "pjpeg", Uncompressible, Binary)
- lazy val `png`: MediaType = new MediaType("image", "png", Uncompressible, Binary, List("png"))
- lazy val `prs.btif`: MediaType =
- new MediaType("image", "prs.btif", Compressible, Binary, List("btif"))
- lazy val `prs.pti`: MediaType =
- new MediaType("image", "prs.pti", Compressible, Binary, List("pti"))
- lazy val `pwg-raster`: MediaType = new MediaType("image", "pwg-raster", Compressible, Binary)
- lazy val `sgi`: MediaType = new MediaType("image", "sgi", Compressible, Binary, List("sgi"))
- lazy val `svg+xml`: MediaType =
- new MediaType("image", "svg+xml", Compressible, Binary, List("svg", "svgz"))
- lazy val `t38`: MediaType = new MediaType("image", "t38", Compressible, Binary, List("t38"))
- lazy val `tiff`: MediaType =
- new MediaType("image", "tiff", Uncompressible, Binary, List("tif", "tiff"))
- lazy val `tiff-fx`: MediaType =
- new MediaType("image", "tiff-fx", Compressible, Binary, List("tfx"))
- lazy val `vnd.adobe.photoshop`: MediaType =
- new MediaType("image", "vnd.adobe.photoshop", Compressible, Binary, List("psd"))
- lazy val `vnd.airzip.accelerator.azv`: MediaType =
- new MediaType("image", "vnd.airzip.accelerator.azv", Compressible, Binary, List("azv"))
- lazy val `vnd.cns.inf2`: MediaType =
- new MediaType("image", "vnd.cns.inf2", Compressible, Binary)
- lazy val `vnd.dece.graphic`: MediaType = new MediaType(
- "image",
- "vnd.dece.graphic",
- Compressible,
- Binary,
- List("uvi", "uvvi", "uvg", "uvvg"),
- )
- lazy val `vnd.djvu`: MediaType =
- new MediaType("image", "vnd.djvu", Compressible, Binary, List("djvu", "djv"))
- lazy val `vnd.dvb.subtitle`: MediaType =
- new MediaType("image", "vnd.dvb.subtitle", Compressible, Binary, List("sub"))
- lazy val `vnd.dwg`: MediaType =
- new MediaType("image", "vnd.dwg", Compressible, Binary, List("dwg"))
- lazy val `vnd.dxf`: MediaType =
- new MediaType("image", "vnd.dxf", Compressible, Binary, List("dxf"))
- lazy val `vnd.fastbidsheet`: MediaType =
- new MediaType("image", "vnd.fastbidsheet", Compressible, Binary, List("fbs"))
- lazy val `vnd.fpx`: MediaType =
- new MediaType("image", "vnd.fpx", Compressible, Binary, List("fpx"))
- lazy val `vnd.fst`: MediaType =
- new MediaType("image", "vnd.fst", Compressible, Binary, List("fst"))
- lazy val `vnd.fujixerox.edmics-mmr`: MediaType =
- new MediaType("image", "vnd.fujixerox.edmics-mmr", Compressible, Binary, List("mmr"))
- lazy val `vnd.fujixerox.edmics-rlc`: MediaType =
- new MediaType("image", "vnd.fujixerox.edmics-rlc", Compressible, Binary, List("rlc"))
- lazy val `vnd.globalgraphics.pgb`: MediaType =
- new MediaType("image", "vnd.globalgraphics.pgb", Compressible, Binary)
- lazy val `vnd.microsoft.icon`: MediaType =
- new MediaType("image", "vnd.microsoft.icon", Compressible, Binary, List("ico"))
- lazy val `vnd.mix`: MediaType = new MediaType("image", "vnd.mix", Compressible, Binary)
- lazy val `vnd.mozilla.apng`: MediaType =
- new MediaType("image", "vnd.mozilla.apng", Compressible, Binary)
- lazy val `vnd.ms-dds`: MediaType =
- new MediaType("image", "vnd.ms-dds", Compressible, Binary, List("dds"))
- lazy val `vnd.ms-modi`: MediaType =
- new MediaType("image", "vnd.ms-modi", Compressible, Binary, List("mdi"))
- lazy val `vnd.ms-photo`: MediaType =
- new MediaType("image", "vnd.ms-photo", Compressible, Binary, List("wdp"))
- lazy val `vnd.net-fpx`: MediaType =
- new MediaType("image", "vnd.net-fpx", Compressible, Binary, List("npx"))
- lazy val `vnd.pco.b16`: MediaType =
- new MediaType("image", "vnd.pco.b16", Compressible, Binary, List("b16"))
- lazy val `vnd.radiance`: MediaType =
- new MediaType("image", "vnd.radiance", Compressible, Binary)
- lazy val `vnd.sealed.png`: MediaType =
- new MediaType("image", "vnd.sealed.png", Compressible, Binary)
- lazy val `vnd.sealedmedia.softseal.gif`: MediaType =
- new MediaType("image", "vnd.sealedmedia.softseal.gif", Compressible, Binary)
- lazy val `vnd.sealedmedia.softseal.jpg`: MediaType =
- new MediaType("image", "vnd.sealedmedia.softseal.jpg", Compressible, Binary)
- lazy val `vnd.svf`: MediaType = new MediaType("image", "vnd.svf", Compressible, Binary)
- lazy val `vnd.tencent.tap`: MediaType =
- new MediaType("image", "vnd.tencent.tap", Compressible, Binary, List("tap"))
- lazy val `vnd.valve.source.texture`: MediaType =
- new MediaType("image", "vnd.valve.source.texture", Compressible, Binary, List("vtf"))
- lazy val `vnd.wap.wbmp`: MediaType =
- new MediaType("image", "vnd.wap.wbmp", Compressible, Binary, List("wbmp"))
- lazy val `vnd.xiff`: MediaType =
- new MediaType("image", "vnd.xiff", Compressible, Binary, List("xif"))
- lazy val `vnd.zbrush.pcx`: MediaType =
- new MediaType("image", "vnd.zbrush.pcx", Compressible, Binary, List("pcx"))
- lazy val `webp`: MediaType = new MediaType("image", "webp", Compressible, Binary, List("webp"))
- lazy val `wmf`: MediaType = new MediaType("image", "wmf", Compressible, Binary, List("wmf"))
- lazy val `x-3ds`: MediaType = new MediaType("image", "x-3ds", Compressible, Binary, List("3ds"))
- lazy val `x-cmu-raster`: MediaType =
- new MediaType("image", "x-cmu-raster", Compressible, Binary, List("ras"))
- lazy val `x-cmx`: MediaType = new MediaType("image", "x-cmx", Compressible, Binary, List("cmx"))
- lazy val `x-freehand`: MediaType = new MediaType(
- "image",
- "x-freehand",
- Compressible,
- Binary,
- List("fh", "fhc", "fh4", "fh5", "fh7"),
- )
- lazy val `x-icon`: MediaType =
- new MediaType("image", "x-icon", Compressible, Binary, List("ico"))
- lazy val `x-jng`: MediaType = new MediaType("image", "x-jng", Compressible, Binary, List("jng"))
- lazy val `x-mrsid-image`: MediaType =
- new MediaType("image", "x-mrsid-image", Compressible, Binary, List("sid"))
- lazy val `x-ms-bmp`: MediaType =
- new MediaType("image", "x-ms-bmp", Compressible, Binary, List("bmp"))
- lazy val `x-pcx`: MediaType = new MediaType("image", "x-pcx", Compressible, Binary, List("pcx"))
- lazy val `x-pict`: MediaType =
- new MediaType("image", "x-pict", Compressible, Binary, List("pic", "pct"))
- lazy val `x-portable-anymap`: MediaType =
- new MediaType("image", "x-portable-anymap", Compressible, Binary, List("pnm"))
- lazy val `x-portable-bitmap`: MediaType =
- new MediaType("image", "x-portable-bitmap", Compressible, Binary, List("pbm"))
- lazy val `x-portable-graymap`: MediaType =
- new MediaType("image", "x-portable-graymap", Compressible, Binary, List("pgm"))
- lazy val `x-portable-pixmap`: MediaType =
- new MediaType("image", "x-portable-pixmap", Compressible, Binary, List("ppm"))
- lazy val `x-rgb`: MediaType = new MediaType("image", "x-rgb", Compressible, Binary, List("rgb"))
- lazy val `x-tga`: MediaType = new MediaType("image", "x-tga", Compressible, Binary, List("tga"))
- lazy val `x-xbitmap`: MediaType =
- new MediaType("image", "x-xbitmap", Compressible, Binary, List("xbm"))
- lazy val `x-xcf`: MediaType = new MediaType("image", "x-xcf", Uncompressible, Binary)
- lazy val `x-xpixmap`: MediaType =
- new MediaType("image", "x-xpixmap", Compressible, Binary, List("xpm"))
- lazy val `x-xwindowdump`: MediaType =
- new MediaType("image", "x-xwindowdump", Compressible, Binary, List("xwd"))
- lazy val all: List[MediaType] = List(
- `aces`,
- `apng`,
- `avci`,
- `avcs`,
- `avif`,
- `bmp`,
- `cgm`,
- `dicom-rle`,
- `emf`,
- `fits`,
- `g3fax`,
- `gif`,
- `heic`,
- `heic-sequence`,
- `heif`,
- `heif-sequence`,
- `hej2k`,
- `hsj2`,
- `ief`,
- `jls`,
- `jp2`,
- `jpeg`,
- `jph`,
- `jphc`,
+ `vnd.directv.mpeg`,
+ `x-msvideo`,
+ `flexfec`,
+ `webm`,
+ `raw`,
+ `vnd.iptvforum.1dparityfec-1010`,
+ `h264-svc`,
+ `x-f4v`,
+ `vnd.radgamettools.bink`,
+ `vnd.iptvforum.1dparityfec-2005`,
+ `h263`,
+ `vnd.sealed.mpeg1`,
+ `vnd.objectvideo`,
+ `mj2`,
+ `x-ms-asf`,
+ `x-smv`,
+ `3gpp`,
+ `vc2`,
+ `vnd.sealed.mpeg4`,
+ `vnd.vivo`,
+ `vnd.dece.mobile`,
+ `pointer`,
+ `vnd.nokia.videovoip`,
+ `vc1`,
`jpm`,
- `jpx`,
- `jxr`,
- `jxra`,
- `jxrs`,
- `jxs`,
- `jxsc`,
- `jxsi`,
- `jxss`,
- `ktx`,
- `ktx2`,
- `naplps`,
- `pjpeg`,
- `png`,
- `prs.btif`,
- `prs.pti`,
- `pwg-raster`,
- `sgi`,
- `svg+xml`,
- `t38`,
- `tiff`,
- `tiff-fx`,
- `vnd.adobe.photoshop`,
- `vnd.airzip.accelerator.azv`,
- `vnd.cns.inf2`,
- `vnd.dece.graphic`,
- `vnd.djvu`,
- `vnd.dvb.subtitle`,
- `vnd.dwg`,
- `vnd.dxf`,
- `vnd.fastbidsheet`,
- `vnd.fpx`,
- `vnd.fst`,
- `vnd.fujixerox.edmics-mmr`,
- `vnd.fujixerox.edmics-rlc`,
- `vnd.globalgraphics.pgb`,
- `vnd.microsoft.icon`,
- `vnd.mix`,
- `vnd.mozilla.apng`,
- `vnd.ms-dds`,
- `vnd.ms-modi`,
- `vnd.ms-photo`,
- `vnd.net-fpx`,
- `vnd.pco.b16`,
- `vnd.radiance`,
- `vnd.sealed.png`,
- `vnd.sealedmedia.softseal.gif`,
- `vnd.sealedmedia.softseal.jpg`,
- `vnd.svf`,
- `vnd.tencent.tap`,
- `vnd.valve.source.texture`,
- `vnd.wap.wbmp`,
- `vnd.xiff`,
- `vnd.zbrush.pcx`,
- `webp`,
- `wmf`,
- `x-3ds`,
- `x-cmu-raster`,
- `x-cmx`,
- `x-freehand`,
- `x-icon`,
- `x-jng`,
- `x-mrsid-image`,
- `x-ms-bmp`,
- `x-pcx`,
- `x-pict`,
- `x-portable-anymap`,
- `x-portable-bitmap`,
- `x-portable-graymap`,
- `x-portable-pixmap`,
- `x-rgb`,
- `x-tga`,
- `x-xbitmap`,
- `x-xcf`,
- `x-xpixmap`,
- `x-xwindowdump`,
+ `mp4v-es`,
+ `x-ms-wmx`,
+ `h264-rcdo`,
+ `mpeg4-generic`,
+ `mp2t`,
+ `dv`,
+ `vnd.motorola.videop`,
+ `vnd.dvb.file`,
+ `jpeg2000`,
+ `vp8`,
+ `jpeg`,
+ `x-m4v`,
+ `mp1s`,
+ `x-ms-wvx`,
+ `x-flv`,
+ `mp4`,
)
- lazy val any: MediaType = new MediaType("image", "*")
+ lazy val any: MediaType = new MediaType("video", "*")
}
- object message {
- lazy val `cpim`: MediaType = new MediaType("message", "cpim", Compressible, NotBinary)
- lazy val `delivery-status`: MediaType =
- new MediaType("message", "delivery-status", Compressible, NotBinary)
- lazy val `disposition-notification`: MediaType = new MediaType(
- "message",
- "disposition-notification",
- Compressible,
- NotBinary,
- List("disposition-notification"),
- )
- lazy val `external-body`: MediaType =
- new MediaType("message", "external-body", Compressible, NotBinary)
- lazy val `feedback-report`: MediaType =
- new MediaType("message", "feedback-report", Compressible, NotBinary)
- lazy val `global`: MediaType =
- new MediaType("message", "global", Compressible, NotBinary, List("u8msg"))
- lazy val `global-delivery-status`: MediaType =
- new MediaType("message", "global-delivery-status", Compressible, NotBinary, List("u8dsn"))
- lazy val `global-disposition-notification`: MediaType = new MediaType(
- "message",
- "global-disposition-notification",
- Compressible,
- NotBinary,
- List("u8mdn"),
- )
- lazy val `global-headers`: MediaType =
- new MediaType("message", "global-headers", Compressible, NotBinary, List("u8hdr"))
- lazy val `http`: MediaType = new MediaType("message", "http", Uncompressible, NotBinary)
- lazy val `imdn+xml`: MediaType = new MediaType("message", "imdn+xml", Compressible, NotBinary)
- lazy val `news`: MediaType = new MediaType("message", "news", Compressible, NotBinary)
- lazy val `partial`: MediaType = new MediaType("message", "partial", Uncompressible, NotBinary)
- lazy val `rfc822`: MediaType =
- new MediaType("message", "rfc822", Compressible, NotBinary, List("eml", "mime"))
- lazy val `s-http`: MediaType = new MediaType("message", "s-http", Compressible, NotBinary)
- lazy val `sip`: MediaType = new MediaType("message", "sip", Compressible, NotBinary)
- lazy val `sipfrag`: MediaType = new MediaType("message", "sipfrag", Compressible, NotBinary)
+
+ object message {
+
+ lazy val `rfc822`: MediaType =
+ new MediaType("message", "rfc822", compressible = true, binary = false, List("eml", "mime"))
+
+ lazy val `http`: MediaType =
+ new MediaType("message", "http", compressible = false, binary = true)
+
+ lazy val `disposition-notification`: MediaType =
+ new MediaType(
+ "message",
+ "disposition-notification",
+ compressible = false,
+ binary = true,
+ List("disposition-notification"),
+ )
+
lazy val `tracking-status`: MediaType =
- new MediaType("message", "tracking-status", Compressible, NotBinary)
- lazy val `vnd.si.simp`: MediaType =
- new MediaType("message", "vnd.si.simp", Compressible, NotBinary)
- lazy val `vnd.wfa.wsc`: MediaType =
- new MediaType("message", "vnd.wfa.wsc", Compressible, NotBinary, List("wsc"))
- lazy val all: List[MediaType] = List(
- `cpim`,
- `delivery-status`,
+ new MediaType("message", "tracking-status", compressible = false, binary = true)
+
+ lazy val `s-http`: MediaType =
+ new MediaType("message", "s-http", compressible = false, binary = true)
+
+ lazy val `global-headers`: MediaType =
+ new MediaType("message", "global-headers", compressible = false, binary = true, List("u8hdr"))
+
+ lazy val `imdn+xml`: MediaType =
+ new MediaType("message", "imdn+xml", compressible = true, binary = false)
+
+ lazy val `vnd.si.simp`: MediaType =
+ new MediaType("message", "vnd.si.simp", compressible = false, binary = true)
+
+ lazy val `sip`: MediaType =
+ new MediaType("message", "sip", compressible = false, binary = true)
+
+ lazy val `feedback-report`: MediaType =
+ new MediaType("message", "feedback-report", compressible = false, binary = true)
+
+ lazy val `sipfrag`: MediaType =
+ new MediaType("message", "sipfrag", compressible = false, binary = true)
+
+ lazy val `global-disposition-notification`: MediaType =
+ new MediaType("message", "global-disposition-notification", compressible = false, binary = true, List("u8mdn"))
+
+ lazy val `delivery-status`: MediaType =
+ new MediaType("message", "delivery-status", compressible = false, binary = true)
+
+ lazy val `external-body`: MediaType =
+ new MediaType("message", "external-body", compressible = false, binary = true)
+
+ lazy val `partial`: MediaType =
+ new MediaType("message", "partial", compressible = false, binary = true)
+
+ lazy val `bhttp`: MediaType =
+ new MediaType("message", "bhttp", compressible = false, binary = true)
+
+ lazy val `global-delivery-status`: MediaType =
+ new MediaType("message", "global-delivery-status", compressible = false, binary = true, List("u8dsn"))
+
+ lazy val `vnd.wfa.wsc`: MediaType =
+ new MediaType("message", "vnd.wfa.wsc", compressible = false, binary = true, List("wsc"))
+
+ lazy val `global`: MediaType =
+ new MediaType("message", "global", compressible = false, binary = true, List("u8msg"))
+
+ lazy val `cpim`: MediaType =
+ new MediaType("message", "cpim", compressible = false, binary = true)
+
+ lazy val `news`: MediaType =
+ new MediaType("message", "news", compressible = false, binary = true)
+
+ lazy val all: List[MediaType] = List(
+ `rfc822`,
+ `http`,
`disposition-notification`,
- `external-body`,
- `feedback-report`,
- `global`,
- `global-delivery-status`,
- `global-disposition-notification`,
+ `tracking-status`,
+ `s-http`,
`global-headers`,
- `http`,
`imdn+xml`,
- `news`,
- `partial`,
- `rfc822`,
- `s-http`,
+ `vnd.si.simp`,
`sip`,
+ `feedback-report`,
`sipfrag`,
- `tracking-status`,
- `vnd.si.simp`,
+ `global-disposition-notification`,
+ `delivery-status`,
+ `external-body`,
+ `partial`,
+ `bhttp`,
+ `global-delivery-status`,
`vnd.wfa.wsc`,
+ `global`,
+ `cpim`,
+ `news`,
)
- lazy val any: MediaType = new MediaType("message", "*")
- }
- object model {
- lazy val `3mf`: MediaType = new MediaType("model", "3mf", Compressible, NotBinary, List("3mf"))
- lazy val `e57`: MediaType = new MediaType("model", "e57", Compressible, NotBinary)
- lazy val `gltf+json`: MediaType =
- new MediaType("model", "gltf+json", Compressible, NotBinary, List("gltf"))
- lazy val `gltf-binary`: MediaType =
- new MediaType("model", "gltf-binary", Compressible, NotBinary, List("glb"))
- lazy val `iges`: MediaType =
- new MediaType("model", "iges", Uncompressible, NotBinary, List("igs", "iges"))
- lazy val `mesh`: MediaType =
- new MediaType("model", "mesh", Uncompressible, NotBinary, List("msh", "mesh", "silo"))
- lazy val `mtl`: MediaType = new MediaType("model", "mtl", Compressible, NotBinary, List("mtl"))
- lazy val `obj`: MediaType = new MediaType("model", "obj", Compressible, NotBinary, List("obj"))
- lazy val `stl`: MediaType = new MediaType("model", "stl", Compressible, NotBinary, List("stl"))
- lazy val `vnd.collada+xml`: MediaType =
- new MediaType("model", "vnd.collada+xml", Compressible, NotBinary, List("dae"))
- lazy val `vnd.dwf`: MediaType =
- new MediaType("model", "vnd.dwf", Compressible, NotBinary, List("dwf"))
- lazy val `vnd.flatland.3dml`: MediaType =
- new MediaType("model", "vnd.flatland.3dml", Compressible, NotBinary)
- lazy val `vnd.gdl`: MediaType =
- new MediaType("model", "vnd.gdl", Compressible, NotBinary, List("gdl"))
- lazy val `vnd.gs-gdl`: MediaType = new MediaType("model", "vnd.gs-gdl", Compressible, NotBinary)
- lazy val `vnd.gs.gdl`: MediaType = new MediaType("model", "vnd.gs.gdl", Compressible, NotBinary)
- lazy val `vnd.gtw`: MediaType =
- new MediaType("model", "vnd.gtw", Compressible, NotBinary, List("gtw"))
- lazy val `vnd.moml+xml`: MediaType =
- new MediaType("model", "vnd.moml+xml", Compressible, NotBinary)
- lazy val `vnd.mts`: MediaType =
- new MediaType("model", "vnd.mts", Compressible, NotBinary, List("mts"))
- lazy val `vnd.opengex`: MediaType =
- new MediaType("model", "vnd.opengex", Compressible, NotBinary, List("ogex"))
- lazy val `vnd.parasolid.transmit.binary`: MediaType =
- new MediaType("model", "vnd.parasolid.transmit.binary", Compressible, NotBinary, List("x_b"))
- lazy val `vnd.parasolid.transmit.text`: MediaType =
- new MediaType("model", "vnd.parasolid.transmit.text", Compressible, NotBinary, List("x_t"))
- lazy val `vnd.pytha.pyox`: MediaType =
- new MediaType("model", "vnd.pytha.pyox", Compressible, NotBinary)
- lazy val `vnd.rosette.annotated-data-model`: MediaType =
- new MediaType("model", "vnd.rosette.annotated-data-model", Compressible, NotBinary)
- lazy val `vnd.sap.vds`: MediaType =
- new MediaType("model", "vnd.sap.vds", Compressible, NotBinary, List("vds"))
- lazy val `vnd.usdz+zip`: MediaType =
- new MediaType("model", "vnd.usdz+zip", Uncompressible, NotBinary, List("usdz"))
- lazy val `vnd.valve.source.compiled-map`: MediaType =
- new MediaType("model", "vnd.valve.source.compiled-map", Compressible, NotBinary, List("bsp"))
- lazy val `vnd.vtu`: MediaType =
- new MediaType("model", "vnd.vtu", Compressible, NotBinary, List("vtu"))
- lazy val `vrml`: MediaType =
- new MediaType("model", "vrml", Uncompressible, NotBinary, List("wrl", "vrml"))
- lazy val `x3d+binary`: MediaType =
- new MediaType("model", "x3d+binary", Uncompressible, NotBinary, List("x3db", "x3dbz"))
- lazy val `x3d+fastinfoset`: MediaType =
- new MediaType("model", "x3d+fastinfoset", Compressible, NotBinary, List("x3db"))
- lazy val `x3d+vrml`: MediaType =
- new MediaType("model", "x3d+vrml", Uncompressible, NotBinary, List("x3dv", "x3dvz"))
- lazy val `x3d+xml`: MediaType =
- new MediaType("model", "x3d+xml", Compressible, NotBinary, List("x3d", "x3dz"))
- lazy val `x3d-vrml`: MediaType =
- new MediaType("model", "x3d-vrml", Compressible, NotBinary, List("x3dv"))
- lazy val all: List[MediaType] = List(
- `3mf`,
- `e57`,
- `gltf+json`,
- `gltf-binary`,
- `iges`,
- `mesh`,
- `mtl`,
- `obj`,
- `stl`,
- `vnd.collada+xml`,
- `vnd.dwf`,
- `vnd.flatland.3dml`,
- `vnd.gdl`,
- `vnd.gs-gdl`,
- `vnd.gs.gdl`,
- `vnd.gtw`,
- `vnd.moml+xml`,
- `vnd.mts`,
- `vnd.opengex`,
- `vnd.parasolid.transmit.binary`,
- `vnd.parasolid.transmit.text`,
- `vnd.pytha.pyox`,
- `vnd.rosette.annotated-data-model`,
- `vnd.sap.vds`,
- `vnd.usdz+zip`,
- `vnd.valve.source.compiled-map`,
- `vnd.vtu`,
- `vrml`,
- `x3d+binary`,
- `x3d+fastinfoset`,
- `x3d+vrml`,
- `x3d+xml`,
- `x3d-vrml`,
- )
- lazy val any: MediaType = new MediaType("model", "*")
- }
- object multipart {
- lazy val `alternative`: MediaType =
- new MediaType("multipart", "alternative", Uncompressible, NotBinary)
- lazy val `appledouble`: MediaType =
- new MediaType("multipart", "appledouble", Compressible, NotBinary)
- lazy val `byteranges`: MediaType =
- new MediaType("multipart", "byteranges", Compressible, NotBinary)
- lazy val `digest`: MediaType = new MediaType("multipart", "digest", Compressible, NotBinary)
- lazy val `encrypted`: MediaType =
- new MediaType("multipart", "encrypted", Uncompressible, NotBinary)
- lazy val `form-data`: MediaType =
- new MediaType("multipart", "form-data", Uncompressible, NotBinary)
- lazy val `header-set`: MediaType =
- new MediaType("multipart", "header-set", Compressible, NotBinary)
- lazy val `mixed`: MediaType = new MediaType("multipart", "mixed", Compressible, NotBinary)
- lazy val `multilingual`: MediaType =
- new MediaType("multipart", "multilingual", Compressible, NotBinary)
- lazy val `parallel`: MediaType = new MediaType("multipart", "parallel", Compressible, NotBinary)
- lazy val `related`: MediaType = new MediaType("multipart", "related", Uncompressible, NotBinary)
- lazy val `report`: MediaType = new MediaType("multipart", "report", Compressible, NotBinary)
- lazy val `signed`: MediaType = new MediaType("multipart", "signed", Uncompressible, NotBinary)
- lazy val `vnd.bint.med-plus`: MediaType =
- new MediaType("multipart", "vnd.bint.med-plus", Compressible, NotBinary)
- lazy val `voice-message`: MediaType =
- new MediaType("multipart", "voice-message", Compressible, NotBinary)
- lazy val `x-mixed-replace`: MediaType =
- new MediaType("multipart", "x-mixed-replace", Compressible, NotBinary)
- lazy val all: List[MediaType] = List(
- `alternative`,
- `appledouble`,
- `byteranges`,
- `digest`,
- `encrypted`,
- `form-data`,
- `header-set`,
- `mixed`,
- `multilingual`,
- `parallel`,
- `related`,
- `report`,
- `signed`,
- `vnd.bint.med-plus`,
- `voice-message`,
- `x-mixed-replace`,
- )
- lazy val any: MediaType = new MediaType("multipart", "*")
+ lazy val any: MediaType = new MediaType("message", "*")
}
- object text {
+
+ object audio {
+
+ lazy val `vnd.4sb`: MediaType =
+ new MediaType("audio", "vnd.4sb", compressible = false, binary = true)
+
+ lazy val `evrc1`: MediaType =
+ new MediaType("audio", "evrc1", compressible = false, binary = true)
+
+ lazy val `dsr-es201108`: MediaType =
+ new MediaType("audio", "dsr-es201108", compressible = false, binary = true)
+
+ lazy val `vnd.everad.plj`: MediaType =
+ new MediaType("audio", "vnd.everad.plj", compressible = false, binary = true)
+
+ lazy val `vnd.dece.audio`: MediaType =
+ new MediaType("audio", "vnd.dece.audio", compressible = false, binary = true, List("uva", "uvva"))
+
+ lazy val `rtx`: MediaType =
+ new MediaType("audio", "rtx", compressible = false, binary = true)
+
+ lazy val `vnd.ms-playready.media.pya`: MediaType =
+ new MediaType("audio", "vnd.ms-playready.media.pya", compressible = false, binary = true, List("pya"))
+
+ lazy val `evrcnw1`: MediaType =
+ new MediaType("audio", "evrcnw1", compressible = false, binary = true)
+
+ lazy val `flexfec`: MediaType =
+ new MediaType("audio", "flexfec", compressible = false, binary = true)
+
+ lazy val `red`: MediaType =
+ new MediaType("audio", "red", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.heaac.1`: MediaType =
+ new MediaType("audio", "vnd.dolby.heaac.1", compressible = false, binary = true)
+
lazy val `1d-interleaved-parityfec`: MediaType =
- new MediaType("text", "1d-interleaved-parityfec", Compressible, NotBinary)
- lazy val `cache-manifest`: MediaType =
- new MediaType("text", "cache-manifest", Compressible, NotBinary, List("appcache", "manifest"))
- lazy val `calendar`: MediaType =
- new MediaType("text", "calendar", Compressible, NotBinary, List("ics", "ifb"))
- lazy val `calender`: MediaType = new MediaType("text", "calender", Compressible, NotBinary)
- lazy val `cmd`: MediaType = new MediaType("text", "cmd", Compressible, NotBinary)
- lazy val `coffeescript`: MediaType =
- new MediaType("text", "coffeescript", Compressible, NotBinary, List("coffee", "litcoffee"))
- lazy val `cql`: MediaType = new MediaType("text", "cql", Compressible, NotBinary)
- lazy val `cql-expression`: MediaType =
- new MediaType("text", "cql-expression", Compressible, NotBinary)
- lazy val `cql-identifier`: MediaType =
- new MediaType("text", "cql-identifier", Compressible, NotBinary)
- lazy val `css`: MediaType = new MediaType("text", "css", Compressible, NotBinary, List("css"))
- lazy val `csv`: MediaType = new MediaType("text", "csv", Compressible, NotBinary, List("csv"))
- lazy val `csv-schema`: MediaType = new MediaType("text", "csv-schema", Compressible, NotBinary)
- lazy val `directory`: MediaType = new MediaType("text", "directory", Compressible, NotBinary)
- lazy val `dns`: MediaType = new MediaType("text", "dns", Compressible, NotBinary)
- lazy val `ecmascript`: MediaType = new MediaType("text", "ecmascript", Compressible, NotBinary)
- lazy val `encaprtp`: MediaType = new MediaType("text", "encaprtp", Compressible, NotBinary)
- lazy val `enriched`: MediaType = new MediaType("text", "enriched", Compressible, NotBinary)
- lazy val `event-stream`: MediaType = new MediaType("text", "event-stream", Compressible, NotBinary)
- lazy val `fhirpath`: MediaType = new MediaType("text", "fhirpath", Compressible, NotBinary)
- lazy val `flexfec`: MediaType = new MediaType("text", "flexfec", Compressible, NotBinary)
- lazy val `fwdred`: MediaType = new MediaType("text", "fwdred", Compressible, NotBinary)
- lazy val `gff3`: MediaType = new MediaType("text", "gff3", Compressible, NotBinary)
- lazy val `grammar-ref-list`: MediaType =
- new MediaType("text", "grammar-ref-list", Compressible, NotBinary)
- lazy val `html`: MediaType =
- new MediaType("text", "html", Compressible, NotBinary, List("html", "htm", "shtml"))
- lazy val `jade`: MediaType =
- new MediaType("text", "jade", Compressible, NotBinary, List("jade"))
- lazy val `javascript`: MediaType = new MediaType("text", "javascript", Compressible, NotBinary)
- lazy val `jcr-cnd`: MediaType = new MediaType("text", "jcr-cnd", Compressible, NotBinary)
- lazy val `jsx`: MediaType = new MediaType("text", "jsx", Compressible, NotBinary, List("jsx"))
- lazy val `less`: MediaType =
- new MediaType("text", "less", Compressible, NotBinary, List("less"))
- lazy val `markdown`: MediaType =
- new MediaType("text", "markdown", Compressible, NotBinary, List("markdown", "md"))
- lazy val `mathml`: MediaType =
- new MediaType("text", "mathml", Compressible, NotBinary, List("mml"))
- lazy val `mdx`: MediaType = new MediaType("text", "mdx", Compressible, NotBinary, List("mdx"))
- lazy val `mizar`: MediaType = new MediaType("text", "mizar", Compressible, NotBinary)
- lazy val `n3`: MediaType = new MediaType("text", "n3", Compressible, NotBinary, List("n3"))
- lazy val `parameters`: MediaType = new MediaType("text", "parameters", Compressible, NotBinary)
- lazy val `parityfec`: MediaType = new MediaType("text", "parityfec", Compressible, NotBinary)
- lazy val `plain`: MediaType = new MediaType(
- "text",
- "plain",
- Compressible,
- NotBinary,
- List("txt", "text", "conf", "def", "list", "log", "in", "ini"),
- )
- lazy val `provenance-notation`: MediaType =
- new MediaType("text", "provenance-notation", Compressible, NotBinary)
- lazy val `prs.fallenstein.rst`: MediaType =
- new MediaType("text", "prs.fallenstein.rst", Compressible, NotBinary)
- lazy val `prs.lines.tag`: MediaType =
- new MediaType("text", "prs.lines.tag", Compressible, NotBinary, List("dsc"))
- lazy val `prs.prop.logic`: MediaType =
- new MediaType("text", "prs.prop.logic", Compressible, NotBinary)
- lazy val `raptorfec`: MediaType = new MediaType("text", "raptorfec", Compressible, NotBinary)
- lazy val `red`: MediaType = new MediaType("text", "red", Compressible, NotBinary)
- lazy val `rfc822-headers`: MediaType =
- new MediaType("text", "rfc822-headers", Compressible, NotBinary)
- lazy val `richtext`: MediaType =
- new MediaType("text", "richtext", Compressible, NotBinary, List("rtx"))
- lazy val `rtf`: MediaType = new MediaType("text", "rtf", Compressible, NotBinary, List("rtf"))
- lazy val `rtp-enc-aescm128`: MediaType =
- new MediaType("text", "rtp-enc-aescm128", Compressible, NotBinary)
- lazy val `rtploopback`: MediaType =
- new MediaType("text", "rtploopback", Compressible, NotBinary)
- lazy val `rtx`: MediaType = new MediaType("text", "rtx", Compressible, NotBinary)
- lazy val `sgml`: MediaType =
- new MediaType("text", "sgml", Compressible, NotBinary, List("sgml", "sgm"))
- lazy val `shaclc`: MediaType = new MediaType("text", "shaclc", Compressible, NotBinary)
- lazy val `shex`: MediaType =
- new MediaType("text", "shex", Compressible, NotBinary, List("shex"))
- lazy val `slim`: MediaType =
- new MediaType("text", "slim", Compressible, NotBinary, List("slim", "slm"))
- lazy val `spdx`: MediaType =
- new MediaType("text", "spdx", Compressible, NotBinary, List("spdx"))
- lazy val `strings`: MediaType = new MediaType("text", "strings", Compressible, NotBinary)
- lazy val `stylus`: MediaType =
- new MediaType("text", "stylus", Compressible, NotBinary, List("stylus", "styl"))
- lazy val `t140`: MediaType = new MediaType("text", "t140", Compressible, NotBinary)
- lazy val `tab-separated-values`: MediaType =
- new MediaType("text", "tab-separated-values", Compressible, NotBinary, List("tsv"))
- lazy val `troff`: MediaType = new MediaType(
- "text",
- "troff",
- Compressible,
- NotBinary,
- List("t", "tr", "roff", "man", "me", "ms"),
- )
- lazy val `turtle`: MediaType =
- new MediaType("text", "turtle", Compressible, NotBinary, List("ttl"))
- lazy val `ulpfec`: MediaType = new MediaType("text", "ulpfec", Compressible, NotBinary)
- lazy val `uri-list`: MediaType =
- new MediaType("text", "uri-list", Compressible, NotBinary, List("uri", "uris", "urls"))
- lazy val `vcard`: MediaType =
- new MediaType("text", "vcard", Compressible, NotBinary, List("vcard"))
- lazy val `vnd.a`: MediaType = new MediaType("text", "vnd.a", Compressible, NotBinary)
- lazy val `vnd.abc`: MediaType = new MediaType("text", "vnd.abc", Compressible, NotBinary)
- lazy val `vnd.ascii-art`: MediaType =
- new MediaType("text", "vnd.ascii-art", Compressible, NotBinary)
- lazy val `vnd.curl`: MediaType =
- new MediaType("text", "vnd.curl", Compressible, NotBinary, List("curl"))
- lazy val `vnd.curl.dcurl`: MediaType =
- new MediaType("text", "vnd.curl.dcurl", Compressible, NotBinary, List("dcurl"))
- lazy val `vnd.curl.mcurl`: MediaType =
- new MediaType("text", "vnd.curl.mcurl", Compressible, NotBinary, List("mcurl"))
- lazy val `vnd.curl.scurl`: MediaType =
- new MediaType("text", "vnd.curl.scurl", Compressible, NotBinary, List("scurl"))
- lazy val `vnd.debian.copyright`: MediaType =
- new MediaType("text", "vnd.debian.copyright", Compressible, NotBinary)
- lazy val `vnd.dmclientscript`: MediaType =
- new MediaType("text", "vnd.dmclientscript", Compressible, NotBinary)
- lazy val `vnd.dvb.subtitle`: MediaType =
- new MediaType("text", "vnd.dvb.subtitle", Compressible, NotBinary, List("sub"))
- lazy val `vnd.esmertec.theme-descriptor`: MediaType =
- new MediaType("text", "vnd.esmertec.theme-descriptor", Compressible, NotBinary)
- lazy val `vnd.ficlab.flt`: MediaType =
- new MediaType("text", "vnd.ficlab.flt", Compressible, NotBinary)
- lazy val `vnd.fly`: MediaType =
- new MediaType("text", "vnd.fly", Compressible, NotBinary, List("fly"))
- lazy val `vnd.fmi.flexstor`: MediaType =
- new MediaType("text", "vnd.fmi.flexstor", Compressible, NotBinary, List("flx"))
- lazy val `vnd.gml`: MediaType = new MediaType("text", "vnd.gml", Compressible, NotBinary)
- lazy val `vnd.graphviz`: MediaType =
- new MediaType("text", "vnd.graphviz", Compressible, NotBinary, List("gv"))
- lazy val `vnd.hans`: MediaType = new MediaType("text", "vnd.hans", Compressible, NotBinary)
- lazy val `vnd.hgl`: MediaType = new MediaType("text", "vnd.hgl", Compressible, NotBinary)
- lazy val `vnd.in3d.3dml`: MediaType =
- new MediaType("text", "vnd.in3d.3dml", Compressible, NotBinary, List("3dml"))
- lazy val `vnd.in3d.spot`: MediaType =
- new MediaType("text", "vnd.in3d.spot", Compressible, NotBinary, List("spot"))
- lazy val `vnd.iptc.newsml`: MediaType =
- new MediaType("text", "vnd.iptc.newsml", Compressible, NotBinary)
- lazy val `vnd.iptc.nitf`: MediaType =
- new MediaType("text", "vnd.iptc.nitf", Compressible, NotBinary)
- lazy val `vnd.latex-z`: MediaType =
- new MediaType("text", "vnd.latex-z", Compressible, NotBinary)
- lazy val `vnd.motorola.reflex`: MediaType =
- new MediaType("text", "vnd.motorola.reflex", Compressible, NotBinary)
- lazy val `vnd.ms-mediapackage`: MediaType =
- new MediaType("text", "vnd.ms-mediapackage", Compressible, NotBinary)
- lazy val `vnd.net2phone.commcenter.command`: MediaType =
- new MediaType("text", "vnd.net2phone.commcenter.command", Compressible, NotBinary)
- lazy val `vnd.radisys.msml-basic-layout`: MediaType =
- new MediaType("text", "vnd.radisys.msml-basic-layout", Compressible, NotBinary)
- lazy val `vnd.senx.warpscript`: MediaType =
- new MediaType("text", "vnd.senx.warpscript", Compressible, NotBinary)
- lazy val `vnd.si.uricatalogue`: MediaType =
- new MediaType("text", "vnd.si.uricatalogue", Compressible, NotBinary)
- lazy val `vnd.sosi`: MediaType = new MediaType("text", "vnd.sosi", Compressible, NotBinary)
- lazy val `vnd.sun.j2me.app-descriptor`: MediaType =
- new MediaType("text", "vnd.sun.j2me.app-descriptor", Compressible, NotBinary, List("jad"))
- lazy val `vnd.trolltech.linguist`: MediaType =
- new MediaType("text", "vnd.trolltech.linguist", Compressible, NotBinary)
- lazy val `vnd.wap.si`: MediaType = new MediaType("text", "vnd.wap.si", Compressible, NotBinary)
- lazy val `vnd.wap.sl`: MediaType = new MediaType("text", "vnd.wap.sl", Compressible, NotBinary)
- lazy val `vnd.wap.wml`: MediaType =
- new MediaType("text", "vnd.wap.wml", Compressible, NotBinary, List("wml"))
- lazy val `vnd.wap.wmlscript`: MediaType =
- new MediaType("text", "vnd.wap.wmlscript", Compressible, NotBinary, List("wmls"))
- lazy val `vtt`: MediaType = new MediaType("text", "vtt", Compressible, NotBinary, List("vtt"))
- lazy val `x-asm`: MediaType =
- new MediaType("text", "x-asm", Compressible, NotBinary, List("s", "asm"))
- lazy val `x-c`: MediaType = new MediaType(
- "text",
- "x-c",
- Compressible,
- NotBinary,
- List("c", "cc", "cxx", "cpp", "h", "hh", "dic"),
- )
- lazy val `x-component`: MediaType =
- new MediaType("text", "x-component", Compressible, NotBinary, List("htc"))
- lazy val `x-fortran`: MediaType =
- new MediaType("text", "x-fortran", Compressible, NotBinary, List("f", "for", "f77", "f90"))
- lazy val `x-gwt-rpc`: MediaType = new MediaType("text", "x-gwt-rpc", Compressible, NotBinary)
- lazy val `x-handlebars-template`: MediaType =
- new MediaType("text", "x-handlebars-template", Compressible, NotBinary, List("hbs"))
- lazy val `x-java-source`: MediaType =
- new MediaType("text", "x-java-source", Compressible, NotBinary, List("java"))
- lazy val `x-jquery-tmpl`: MediaType =
- new MediaType("text", "x-jquery-tmpl", Compressible, NotBinary)
- lazy val `x-lua`: MediaType =
- new MediaType("text", "x-lua", Compressible, NotBinary, List("lua"))
- lazy val `x-markdown`: MediaType =
- new MediaType("text", "x-markdown", Compressible, NotBinary, List("mkd"))
- lazy val `x-nfo`: MediaType =
- new MediaType("text", "x-nfo", Compressible, NotBinary, List("nfo"))
- lazy val `x-opml`: MediaType =
- new MediaType("text", "x-opml", Compressible, NotBinary, List("opml"))
- lazy val `x-org`: MediaType =
- new MediaType("text", "x-org", Compressible, NotBinary, List("org"))
- lazy val `x-pascal`: MediaType =
- new MediaType("text", "x-pascal", Compressible, NotBinary, List("p", "pas"))
- lazy val `x-processing`: MediaType =
- new MediaType("text", "x-processing", Compressible, NotBinary, List("pde"))
- lazy val `x-sass`: MediaType =
- new MediaType("text", "x-sass", Compressible, NotBinary, List("sass"))
- lazy val `x-scss`: MediaType =
- new MediaType("text", "x-scss", Compressible, NotBinary, List("scss"))
- lazy val `x-setext`: MediaType =
- new MediaType("text", "x-setext", Compressible, NotBinary, List("etx"))
- lazy val `x-sfv`: MediaType =
- new MediaType("text", "x-sfv", Compressible, NotBinary, List("sfv"))
- lazy val `x-suse-ymp`: MediaType =
- new MediaType("text", "x-suse-ymp", Compressible, NotBinary, List("ymp"))
- lazy val `x-uuencode`: MediaType =
- new MediaType("text", "x-uuencode", Compressible, NotBinary, List("uu"))
- lazy val `x-vcalendar`: MediaType =
- new MediaType("text", "x-vcalendar", Compressible, NotBinary, List("vcs"))
- lazy val `x-vcard`: MediaType =
- new MediaType("text", "x-vcard", Compressible, NotBinary, List("vcf"))
- lazy val `xml`: MediaType = new MediaType("text", "xml", Compressible, NotBinary, List("xml"))
- lazy val `xml-external-parsed-entity`: MediaType =
- new MediaType("text", "xml-external-parsed-entity", Compressible, NotBinary)
- lazy val `yaml`: MediaType =
- new MediaType("text", "yaml", Compressible, NotBinary, List("yaml", "yml"))
- lazy val all: List[MediaType] = List(
- `1d-interleaved-parityfec`,
- `cache-manifest`,
- `calendar`,
- `calender`,
- `cmd`,
- `coffeescript`,
- `cql`,
- `cql-expression`,
- `cql-identifier`,
- `css`,
- `csv`,
- `csv-schema`,
- `directory`,
- `dns`,
- `ecmascript`,
- `encaprtp`,
- `enriched`,
- `event-stream`,
- `fhirpath`,
+ new MediaType("audio", "1d-interleaved-parityfec", compressible = false, binary = true)
+
+ lazy val `vnd.nuera.ecelp9600`: MediaType =
+ new MediaType("audio", "vnd.nuera.ecelp9600", compressible = false, binary = true, List("ecelp9600"))
+
+ lazy val `silk`: MediaType =
+ new MediaType("audio", "silk", compressible = false, binary = true, List("sil"))
+
+ lazy val `pcmu-wb`: MediaType =
+ new MediaType("audio", "pcmu-wb", compressible = false, binary = true)
+
+ lazy val `vnd.dts`: MediaType =
+ new MediaType("audio", "vnd.dts", compressible = false, binary = true, List("dts"))
+
+ lazy val `vnd.dolby.pl2x`: MediaType =
+ new MediaType("audio", "vnd.dolby.pl2x", compressible = false, binary = true)
+
+ lazy val `encaprtp`: MediaType =
+ new MediaType("audio", "encaprtp", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.mps`: MediaType =
+ new MediaType("audio", "vnd.dolby.mps", compressible = false, binary = true)
+
+ lazy val `evrcb1`: MediaType =
+ new MediaType("audio", "evrcb1", compressible = false, binary = true)
+
+ lazy val `parityfec`: MediaType =
+ new MediaType("audio", "parityfec", compressible = false, binary = true)
+
+ lazy val `x-matroska`: MediaType =
+ new MediaType("audio", "x-matroska", compressible = false, binary = true, List("mka"))
+
+ lazy val `x-realaudio`: MediaType =
+ new MediaType("audio", "x-realaudio", compressible = false, binary = true, List("ra"))
+
+ lazy val `vnd.nuera.ecelp4800`: MediaType =
+ new MediaType("audio", "vnd.nuera.ecelp4800", compressible = false, binary = true, List("ecelp4800"))
+
+ lazy val `vnd.digital-winds`: MediaType =
+ new MediaType("audio", "vnd.digital-winds", compressible = false, binary = true, List("eol"))
+
+ lazy val `smv`: MediaType =
+ new MediaType("audio", "smv", compressible = false, binary = true)
+
+ lazy val `g7221`: MediaType =
+ new MediaType("audio", "g7221", compressible = false, binary = true)
+
+ lazy val `vmr-wb`: MediaType =
+ new MediaType("audio", "vmr-wb", compressible = false, binary = true)
+
+ lazy val `vnd.celp`: MediaType =
+ new MediaType("audio", "vnd.celp", compressible = false, binary = true)
+
+ lazy val `g726-40`: MediaType =
+ new MediaType("audio", "g726-40", compressible = false, binary = true)
+
+ lazy val `g722`: MediaType =
+ new MediaType("audio", "g722", compressible = false, binary = true)
+
+ lazy val `vnd.dra`: MediaType =
+ new MediaType("audio", "vnd.dra", compressible = false, binary = true, List("dra"))
+
+ lazy val `pcmu`: MediaType =
+ new MediaType("audio", "pcmu", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.pulse.1`: MediaType =
+ new MediaType("audio", "vnd.dolby.pulse.1", compressible = false, binary = true)
+
+ lazy val `lpc`: MediaType =
+ new MediaType("audio", "lpc", compressible = false, binary = true)
+
+ lazy val `melp600`: MediaType =
+ new MediaType("audio", "melp600", compressible = false, binary = true)
+
+ lazy val `x-wav`: MediaType =
+ new MediaType("audio", "x-wav", compressible = false, binary = true, List("wav"))
+
+ lazy val `l20`: MediaType =
+ new MediaType("audio", "l20", compressible = false, binary = true)
+
+ lazy val `basic`: MediaType =
+ new MediaType("audio", "basic", compressible = false, binary = true, List("au", "snd"))
+
+ lazy val `asc`: MediaType =
+ new MediaType("audio", "asc", compressible = false, binary = true)
+
+ lazy val `speex`: MediaType =
+ new MediaType("audio", "speex", compressible = false, binary = true)
+
+ lazy val `raptorfec`: MediaType =
+ new MediaType("audio", "raptorfec", compressible = false, binary = true)
+
+ lazy val `vnd.cns.anp1`: MediaType =
+ new MediaType("audio", "vnd.cns.anp1", compressible = false, binary = true)
+
+ lazy val `evrcwb1`: MediaType =
+ new MediaType("audio", "evrcwb1", compressible = false, binary = true)
+
+ lazy val `mpeg`: MediaType =
+ new MediaType(
+ "audio",
+ "mpeg",
+ compressible = false,
+ binary = true,
+ List("mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"),
+ )
+
+ lazy val `atrac-x`: MediaType =
+ new MediaType("audio", "atrac-x", compressible = false, binary = true)
+
+ lazy val `midi`: MediaType =
+ new MediaType("audio", "midi", compressible = false, binary = true, List("mid", "midi", "kar", "rmi"))
+
+ lazy val `smv-qcp`: MediaType =
+ new MediaType("audio", "smv-qcp", compressible = false, binary = true)
+
+ lazy val `t38`: MediaType =
+ new MediaType("audio", "t38", compressible = false, binary = true)
+
+ lazy val `scip`: MediaType =
+ new MediaType("audio", "scip", compressible = false, binary = true)
+
+ lazy val `rtp-enc-aescm128`: MediaType =
+ new MediaType("audio", "rtp-enc-aescm128", compressible = false, binary = true)
+
+ lazy val `vnd.nuera.ecelp7470`: MediaType =
+ new MediaType("audio", "vnd.nuera.ecelp7470", compressible = false, binary = true, List("ecelp7470"))
+
+ lazy val `evrc-qcp`: MediaType =
+ new MediaType("audio", "evrc-qcp", compressible = false, binary = true)
+
+ lazy val `prs.sid`: MediaType =
+ new MediaType("audio", "prs.sid", compressible = false, binary = true)
+
+ lazy val `dsr-es202050`: MediaType =
+ new MediaType("audio", "dsr-es202050", compressible = false, binary = true)
+
+ lazy val `vnd.lucent.voice`: MediaType =
+ new MediaType("audio", "vnd.lucent.voice", compressible = false, binary = true, List("lvp"))
+
+ lazy val `g726-32`: MediaType =
+ new MediaType("audio", "g726-32", compressible = false, binary = true)
+
+ lazy val `g7291`: MediaType =
+ new MediaType("audio", "g7291", compressible = false, binary = true)
+
+ lazy val `webm`: MediaType =
+ new MediaType("audio", "webm", compressible = false, binary = true, List("weba"))
+
+ lazy val `melp2400`: MediaType =
+ new MediaType("audio", "melp2400", compressible = false, binary = true)
+
+ lazy val `cn`: MediaType =
+ new MediaType("audio", "cn", compressible = false, binary = true)
+
+ lazy val `l8`: MediaType =
+ new MediaType("audio", "l8", compressible = false, binary = true)
+
+ lazy val `vnd.wave`: MediaType =
+ new MediaType("audio", "vnd.wave", compressible = false, binary = true)
+
+ lazy val `xm`: MediaType =
+ new MediaType("audio", "xm", compressible = false, binary = true, List("xm"))
+
+ lazy val `atrac3`: MediaType =
+ new MediaType("audio", "atrac3", compressible = false, binary = true)
+
+ lazy val `pcma`: MediaType =
+ new MediaType("audio", "pcma", compressible = false, binary = true)
+
+ lazy val `tetra_acelp_bb`: MediaType =
+ new MediaType("audio", "tetra_acelp_bb", compressible = false, binary = true)
+
+ lazy val `vnd.dts.hd`: MediaType =
+ new MediaType("audio", "vnd.dts.hd", compressible = false, binary = true, List("dtshd"))
+
+ lazy val `x-caf`: MediaType =
+ new MediaType("audio", "x-caf", compressible = false, binary = true, List("caf"))
+
+ lazy val `amr`: MediaType =
+ new MediaType("audio", "amr", compressible = false, binary = true, List("amr"))
+
+ lazy val `gsm`: MediaType =
+ new MediaType("audio", "gsm", compressible = false, binary = true)
+
+ lazy val `ulpfec`: MediaType =
+ new MediaType("audio", "ulpfec", compressible = false, binary = true)
+
+ lazy val `aac`: MediaType =
+ new MediaType("audio", "aac", compressible = false, binary = true, List("adts", "aac"))
+
+ lazy val `wave`: MediaType =
+ new MediaType("audio", "wave", compressible = false, binary = true, List("wav"))
+
+ lazy val `sp-midi`: MediaType =
+ new MediaType("audio", "sp-midi", compressible = false, binary = true)
+
+ lazy val `vnd.nortel.vbk`: MediaType =
+ new MediaType("audio", "vnd.nortel.vbk", compressible = false, binary = true)
+
+ lazy val `uemclip`: MediaType =
+ new MediaType("audio", "uemclip", compressible = false, binary = true)
+
+ lazy val `mpa`: MediaType =
+ new MediaType("audio", "mpa", compressible = false, binary = true)
+
+ lazy val `x-flac`: MediaType =
+ new MediaType("audio", "x-flac", compressible = false, binary = true, List("flac"))
+
+ lazy val `vnd.rn-realaudio`: MediaType =
+ new MediaType("audio", "vnd.rn-realaudio", compressible = false, binary = true)
+
+ lazy val `g723`: MediaType =
+ new MediaType("audio", "g723", compressible = false, binary = true)
+
+ lazy val `g726-24`: MediaType =
+ new MediaType("audio", "g726-24", compressible = false, binary = true)
+
+ lazy val `tsvcis`: MediaType =
+ new MediaType("audio", "tsvcis", compressible = false, binary = true)
+
+ lazy val `vnd.rip`: MediaType =
+ new MediaType("audio", "vnd.rip", compressible = false, binary = true, List("rip"))
+
+ lazy val `mpa-robust`: MediaType =
+ new MediaType("audio", "mpa-robust", compressible = false, binary = true)
+
+ lazy val `vnd.sealedmedia.softseal.mpeg`: MediaType =
+ new MediaType("audio", "vnd.sealedmedia.softseal.mpeg", compressible = false, binary = true)
+
+ lazy val `s3m`: MediaType =
+ new MediaType("audio", "s3m", compressible = false, binary = true, List("s3m"))
+
+ lazy val `adpcm`: MediaType =
+ new MediaType("audio", "adpcm", compressible = false, binary = true, List("adp"))
+
+ lazy val `g711-0`: MediaType =
+ new MediaType("audio", "g711-0", compressible = false, binary = true)
+
+ lazy val `fwdred`: MediaType =
+ new MediaType("audio", "fwdred", compressible = false, binary = true)
+
+ lazy val `x-m4a`: MediaType =
+ new MediaType("audio", "x-m4a", compressible = false, binary = true, List("m4a"))
+
+ lazy val `evs`: MediaType =
+ new MediaType("audio", "evs", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.mlp`: MediaType =
+ new MediaType("audio", "vnd.dolby.mlp", compressible = false, binary = true)
+
+ lazy val `vnd.rhetorex.32kadpcm`: MediaType =
+ new MediaType("audio", "vnd.rhetorex.32kadpcm", compressible = false, binary = true)
+
+ lazy val `vorbis`: MediaType =
+ new MediaType("audio", "vorbis", compressible = false, binary = true)
+
+ lazy val `dat12`: MediaType =
+ new MediaType("audio", "dat12", compressible = false, binary = true)
+
+ lazy val `clearmode`: MediaType =
+ new MediaType("audio", "clearmode", compressible = false, binary = true)
+
+ lazy val `x-mpegurl`: MediaType =
+ new MediaType("audio", "x-mpegurl", compressible = false, binary = true, List("m3u"))
+
+ lazy val `vnd.audiokoz`: MediaType =
+ new MediaType("audio", "vnd.audiokoz", compressible = false, binary = true)
+
+ lazy val `musepack`: MediaType =
+ new MediaType("audio", "musepack", compressible = false, binary = true)
+
+ lazy val `usac`: MediaType =
+ new MediaType("audio", "usac", compressible = false, binary = true)
+
+ lazy val `vnd.nokia.mobile-xmf`: MediaType =
+ new MediaType("audio", "vnd.nokia.mobile-xmf", compressible = false, binary = true)
+
+ lazy val `dv`: MediaType =
+ new MediaType("audio", "dv", compressible = false, binary = true)
+
+ lazy val `g728`: MediaType =
+ new MediaType("audio", "g728", compressible = false, binary = true)
+
+ lazy val `evrcwb`: MediaType =
+ new MediaType("audio", "evrcwb", compressible = false, binary = true)
+
+ lazy val `vnd.presonus.multitrack`: MediaType =
+ new MediaType("audio", "vnd.presonus.multitrack", compressible = false, binary = true)
+
+ lazy val `g726-16`: MediaType =
+ new MediaType("audio", "g726-16", compressible = false, binary = true)
+
+ lazy val `mpeg4-generic`: MediaType =
+ new MediaType("audio", "mpeg4-generic", compressible = false, binary = true)
+
+ lazy val `ilbc`: MediaType =
+ new MediaType("audio", "ilbc", compressible = false, binary = true)
+
+ lazy val `mp4`: MediaType =
+ new MediaType("audio", "mp4", compressible = false, binary = true, List("m4a", "mp4a"))
+
+ lazy val `x-aiff`: MediaType =
+ new MediaType("audio", "x-aiff", compressible = false, binary = true, List("aif", "aiff", "aifc"))
+
+ lazy val `x-pn-realaudio`: MediaType =
+ new MediaType("audio", "x-pn-realaudio", compressible = false, binary = true, List("ram", "ra"))
+
+ lazy val `x-aac`: MediaType =
+ new MediaType("audio", "x-aac", compressible = false, binary = true, List("aac"))
+
+ lazy val `vnd.dolby.heaac.2`: MediaType =
+ new MediaType("audio", "vnd.dolby.heaac.2", compressible = false, binary = true)
+
+ lazy val `amr-wb+` : MediaType =
+ new MediaType("audio", "amr-wb+", compressible = false, binary = true)
+
+ lazy val `dsr-es202211`: MediaType =
+ new MediaType("audio", "dsr-es202211", compressible = false, binary = true)
+
+ lazy val `smv0`: MediaType =
+ new MediaType("audio", "smv0", compressible = false, binary = true)
+
+ lazy val `bv16`: MediaType =
+ new MediaType("audio", "bv16", compressible = false, binary = true)
+
+ lazy val `g729`: MediaType =
+ new MediaType("audio", "g729", compressible = false, binary = true)
+
+ lazy val `x-tta`: MediaType =
+ new MediaType("audio", "x-tta", compressible = false, binary = true)
+
+ lazy val `g729e`: MediaType =
+ new MediaType("audio", "g729e", compressible = false, binary = true)
+
+ lazy val `melp`: MediaType =
+ new MediaType("audio", "melp", compressible = false, binary = true)
+
+ lazy val `mobile-xmf`: MediaType =
+ new MediaType("audio", "mobile-xmf", compressible = false, binary = true, List("mxmf"))
+
+ lazy val `dls`: MediaType =
+ new MediaType("audio", "dls", compressible = false, binary = true)
+
+ lazy val `evrc0`: MediaType =
+ new MediaType("audio", "evrc0", compressible = false, binary = true)
+
+ lazy val `vorbis-config`: MediaType =
+ new MediaType("audio", "vorbis-config", compressible = false, binary = true)
+
+ lazy val `gsm-efr`: MediaType =
+ new MediaType("audio", "gsm-efr", compressible = false, binary = true)
+
+ lazy val `rtp-midi`: MediaType =
+ new MediaType("audio", "rtp-midi", compressible = false, binary = true)
+
+ lazy val `vnd.dlna.adts`: MediaType =
+ new MediaType("audio", "vnd.dlna.adts", compressible = false, binary = true)
+
+ lazy val `vnd.vmx.cvsd`: MediaType =
+ new MediaType("audio", "vnd.vmx.cvsd", compressible = false, binary = true)
+
+ lazy val `vnd.dvb.file`: MediaType =
+ new MediaType("audio", "vnd.dvb.file", compressible = false, binary = true)
+
+ lazy val `isac`: MediaType =
+ new MediaType("audio", "isac", compressible = false, binary = true)
+
+ lazy val `telephone-event`: MediaType =
+ new MediaType("audio", "telephone-event", compressible = false, binary = true)
+
+ lazy val `l16`: MediaType =
+ new MediaType("audio", "l16", compressible = false, binary = true)
+
+ lazy val `3gpp2`: MediaType =
+ new MediaType("audio", "3gpp2", compressible = false, binary = true)
+
+ lazy val `melp1200`: MediaType =
+ new MediaType("audio", "melp1200", compressible = false, binary = true)
+
+ lazy val `vnd.cns.inf1`: MediaType =
+ new MediaType("audio", "vnd.cns.inf1", compressible = false, binary = true)
+
+ lazy val `wav`: MediaType =
+ new MediaType("audio", "wav", compressible = false, binary = true, List("wav"))
+
+ lazy val `bv32`: MediaType =
+ new MediaType("audio", "bv32", compressible = false, binary = true)
+
+ lazy val `pcma-wb`: MediaType =
+ new MediaType("audio", "pcma-wb", compressible = false, binary = true)
+
+ lazy val `ac3`: MediaType =
+ new MediaType("audio", "ac3", compressible = false, binary = true)
+
+ lazy val `vnd.qcelp`: MediaType =
+ new MediaType("audio", "vnd.qcelp", compressible = false, binary = true)
+
+ lazy val `vnd.octel.sbc`: MediaType =
+ new MediaType("audio", "vnd.octel.sbc", compressible = false, binary = true)
+
+ lazy val `atrac-advanced-lossless`: MediaType =
+ new MediaType("audio", "atrac-advanced-lossless", compressible = false, binary = true)
+
+ lazy val `qcelp`: MediaType =
+ new MediaType("audio", "qcelp", compressible = false, binary = true)
+
+ lazy val `x-pn-realaudio-plugin`: MediaType =
+ new MediaType("audio", "x-pn-realaudio-plugin", compressible = false, binary = true, List("rmp"))
+
+ lazy val `g719`: MediaType =
+ new MediaType("audio", "g719", compressible = false, binary = true)
+
+ lazy val `tone`: MediaType =
+ new MediaType("audio", "tone", compressible = false, binary = true)
+
+ lazy val `dvi4`: MediaType =
+ new MediaType("audio", "dvi4", compressible = false, binary = true)
+
+ lazy val `vnd.hns.audio`: MediaType =
+ new MediaType("audio", "vnd.hns.audio", compressible = false, binary = true)
+
+ lazy val `x-ms-wax`: MediaType =
+ new MediaType("audio", "x-ms-wax", compressible = false, binary = true, List("wax"))
+
+ lazy val `g729d`: MediaType =
+ new MediaType("audio", "g729d", compressible = false, binary = true)
+
+ lazy val `t140c`: MediaType =
+ new MediaType("audio", "t140c", compressible = false, binary = true)
+
+ lazy val `32kadpcm`: MediaType =
+ new MediaType("audio", "32kadpcm", compressible = false, binary = true)
+
+ lazy val `mp3`: MediaType =
+ new MediaType("audio", "mp3", compressible = false, binary = true, List("mp3"))
+
+ lazy val `evrcnw`: MediaType =
+ new MediaType("audio", "evrcnw", compressible = false, binary = true)
+
+ lazy val `vnd.cisco.nse`: MediaType =
+ new MediaType("audio", "vnd.cisco.nse", compressible = false, binary = true)
+
+ lazy val `opus`: MediaType =
+ new MediaType("audio", "opus", compressible = false, binary = true)
+
+ lazy val `evrcb0`: MediaType =
+ new MediaType("audio", "evrcb0", compressible = false, binary = true)
+
+ lazy val `3gpp`: MediaType =
+ new MediaType("audio", "3gpp", compressible = false, binary = true, List("3gpp"))
+
+ lazy val `ogg`: MediaType =
+ new MediaType("audio", "ogg", compressible = false, binary = true, List("oga", "ogg", "spx", "opus"))
+
+ lazy val `vnd.dolby.pl2z`: MediaType =
+ new MediaType("audio", "vnd.dolby.pl2z", compressible = false, binary = true)
+
+ lazy val `vnd.cmles.radio-events`: MediaType =
+ new MediaType("audio", "vnd.cmles.radio-events", compressible = false, binary = true)
+
+ lazy val `evrc`: MediaType =
+ new MediaType("audio", "evrc", compressible = false, binary = true)
+
+ lazy val `vnd.dolby.pl2`: MediaType =
+ new MediaType("audio", "vnd.dolby.pl2", compressible = false, binary = true)
+
+ lazy val `mhas`: MediaType =
+ new MediaType("audio", "mhas", compressible = false, binary = true)
+
+ lazy val `l24`: MediaType =
+ new MediaType("audio", "l24", compressible = false, binary = true)
+
+ lazy val `vnd.dts.uhd`: MediaType =
+ new MediaType("audio", "vnd.dts.uhd", compressible = false, binary = true)
+
+ lazy val `x-ms-wma`: MediaType =
+ new MediaType("audio", "x-ms-wma", compressible = false, binary = true, List("wma"))
+
+ lazy val `tetra_acelp`: MediaType =
+ new MediaType("audio", "tetra_acelp", compressible = false, binary = true)
+
+ lazy val `gsm-hr-08`: MediaType =
+ new MediaType("audio", "gsm-hr-08", compressible = false, binary = true)
+
+ lazy val `eac3`: MediaType =
+ new MediaType("audio", "eac3", compressible = false, binary = true)
+
+ lazy val `evrcwb0`: MediaType =
+ new MediaType("audio", "evrcwb0", compressible = false, binary = true)
+
+ lazy val `vdvi`: MediaType =
+ new MediaType("audio", "vdvi", compressible = false, binary = true)
+
+ lazy val `dsr-es202212`: MediaType =
+ new MediaType("audio", "dsr-es202212", compressible = false, binary = true)
+
+ lazy val `rtploopback`: MediaType =
+ new MediaType("audio", "rtploopback", compressible = false, binary = true)
+
+ lazy val `mp4a-latm`: MediaType =
+ new MediaType("audio", "mp4a-latm", compressible = false, binary = true)
+
+ lazy val `sofa`: MediaType =
+ new MediaType("audio", "sofa", compressible = false, binary = true)
+
+ lazy val `amr-wb`: MediaType =
+ new MediaType("audio", "amr-wb", compressible = false, binary = true)
+
+ lazy val `evrcb`: MediaType =
+ new MediaType("audio", "evrcb", compressible = false, binary = true)
+
+ lazy val `ip-mr_v2.5`: MediaType =
+ new MediaType("audio", "ip-mr_v2.5", compressible = false, binary = true)
+
+ lazy val `evrcnw0`: MediaType =
+ new MediaType("audio", "evrcnw0", compressible = false, binary = true)
+
+ lazy val `vnd.3gpp.iufp`: MediaType =
+ new MediaType("audio", "vnd.3gpp.iufp", compressible = false, binary = true)
+
+ lazy val `aptx`: MediaType =
+ new MediaType("audio", "aptx", compressible = false, binary = true)
+
+ lazy val all: List[MediaType] = List(
+ `vnd.4sb`,
+ `evrc1`,
+ `dsr-es201108`,
+ `vnd.everad.plj`,
+ `vnd.dece.audio`,
+ `rtx`,
+ `vnd.ms-playready.media.pya`,
+ `evrcnw1`,
`flexfec`,
- `fwdred`,
- `gff3`,
- `grammar-ref-list`,
- `html`,
- `jade`,
- `javascript`,
- `jcr-cnd`,
- `jsx`,
- `less`,
- `markdown`,
- `mathml`,
- `mdx`,
- `mizar`,
- `n3`,
- `parameters`,
- `parityfec`,
- `plain`,
- `provenance-notation`,
- `prs.fallenstein.rst`,
- `prs.lines.tag`,
- `prs.prop.logic`,
- `raptorfec`,
`red`,
- `rfc822-headers`,
- `richtext`,
- `rtf`,
- `rtp-enc-aescm128`,
- `rtploopback`,
- `rtx`,
- `sgml`,
- `shaclc`,
- `shex`,
- `slim`,
- `spdx`,
- `strings`,
- `stylus`,
- `t140`,
- `tab-separated-values`,
- `troff`,
- `turtle`,
- `ulpfec`,
- `uri-list`,
- `vcard`,
- `vnd.a`,
- `vnd.abc`,
- `vnd.ascii-art`,
- `vnd.curl`,
- `vnd.curl.dcurl`,
- `vnd.curl.mcurl`,
- `vnd.curl.scurl`,
- `vnd.debian.copyright`,
- `vnd.dmclientscript`,
- `vnd.dvb.subtitle`,
- `vnd.esmertec.theme-descriptor`,
- `vnd.ficlab.flt`,
- `vnd.fly`,
- `vnd.fmi.flexstor`,
- `vnd.gml`,
- `vnd.graphviz`,
- `vnd.hans`,
- `vnd.hgl`,
- `vnd.in3d.3dml`,
- `vnd.in3d.spot`,
- `vnd.iptc.newsml`,
- `vnd.iptc.nitf`,
- `vnd.latex-z`,
- `vnd.motorola.reflex`,
- `vnd.ms-mediapackage`,
- `vnd.net2phone.commcenter.command`,
- `vnd.radisys.msml-basic-layout`,
- `vnd.senx.warpscript`,
- `vnd.si.uricatalogue`,
- `vnd.sosi`,
- `vnd.sun.j2me.app-descriptor`,
- `vnd.trolltech.linguist`,
- `vnd.wap.si`,
- `vnd.wap.sl`,
- `vnd.wap.wml`,
- `vnd.wap.wmlscript`,
- `vtt`,
- `x-asm`,
- `x-c`,
- `x-component`,
- `x-fortran`,
- `x-gwt-rpc`,
- `x-handlebars-template`,
- `x-java-source`,
- `x-jquery-tmpl`,
- `x-lua`,
- `x-markdown`,
- `x-nfo`,
- `x-opml`,
- `x-org`,
- `x-pascal`,
- `x-processing`,
- `x-sass`,
- `x-scss`,
- `x-setext`,
- `x-sfv`,
- `x-suse-ymp`,
- `x-uuencode`,
- `x-vcalendar`,
- `x-vcard`,
- `xml`,
- `xml-external-parsed-entity`,
- `yaml`,
- )
- lazy val any: MediaType = new MediaType("text", "*")
- }
- object video {
- lazy val `1d-interleaved-parityfec`: MediaType =
- new MediaType("video", "1d-interleaved-parityfec", Compressible, Binary)
- lazy val `3gpp`: MediaType =
- new MediaType("video", "3gpp", Compressible, Binary, List("3gp", "3gpp"))
- lazy val `3gpp-tt`: MediaType = new MediaType("video", "3gpp-tt", Compressible, Binary)
- lazy val `3gpp2`: MediaType = new MediaType("video", "3gpp2", Compressible, Binary, List("3g2"))
- lazy val `av1`: MediaType = new MediaType("video", "av1", Compressible, Binary)
- lazy val `bmpeg`: MediaType = new MediaType("video", "bmpeg", Compressible, Binary)
- lazy val `bt656`: MediaType = new MediaType("video", "bt656", Compressible, Binary)
- lazy val `celb`: MediaType = new MediaType("video", "celb", Compressible, Binary)
- lazy val `dv`: MediaType = new MediaType("video", "dv", Compressible, Binary)
- lazy val `encaprtp`: MediaType = new MediaType("video", "encaprtp", Compressible, Binary)
- lazy val `ffv1`: MediaType = new MediaType("video", "ffv1", Compressible, Binary)
- lazy val `flexfec`: MediaType = new MediaType("video", "flexfec", Compressible, Binary)
- lazy val `h261`: MediaType = new MediaType("video", "h261", Compressible, Binary, List("h261"))
- lazy val `h263`: MediaType = new MediaType("video", "h263", Compressible, Binary, List("h263"))
- lazy val `h263-1998`: MediaType = new MediaType("video", "h263-1998", Compressible, Binary)
- lazy val `h263-2000`: MediaType = new MediaType("video", "h263-2000", Compressible, Binary)
- lazy val `h264`: MediaType = new MediaType("video", "h264", Compressible, Binary, List("h264"))
- lazy val `h264-rcdo`: MediaType = new MediaType("video", "h264-rcdo", Compressible, Binary)
- lazy val `h264-svc`: MediaType = new MediaType("video", "h264-svc", Compressible, Binary)
- lazy val `h265`: MediaType = new MediaType("video", "h265", Compressible, Binary)
- lazy val `iso.segment`: MediaType =
- new MediaType("video", "iso.segment", Compressible, Binary, List("m4s"))
- lazy val `jpeg`: MediaType = new MediaType("video", "jpeg", Compressible, Binary, List("jpgv"))
- lazy val `jpeg2000`: MediaType = new MediaType("video", "jpeg2000", Compressible, Binary)
- lazy val `jpm`: MediaType =
- new MediaType("video", "jpm", Compressible, Binary, List("jpm", "jpgm"))
- lazy val `mj2`: MediaType =
- new MediaType("video", "mj2", Compressible, Binary, List("mj2", "mjp2"))
- lazy val `mp1s`: MediaType = new MediaType("video", "mp1s", Compressible, Binary)
- lazy val `mp2p`: MediaType = new MediaType("video", "mp2p", Compressible, Binary)
- lazy val `mp2t`: MediaType = new MediaType("video", "mp2t", Compressible, Binary, List("ts"))
- lazy val `mp4`: MediaType =
- new MediaType("video", "mp4", Uncompressible, Binary, List("mp4", "mp4v", "mpg4"))
- lazy val `mp4v-es`: MediaType = new MediaType("video", "mp4v-es", Compressible, Binary)
- lazy val `mpeg`: MediaType = new MediaType(
- "video",
- "mpeg",
- Uncompressible,
- Binary,
- List("mpeg", "mpg", "mpe", "m1v", "m2v"),
- )
- lazy val `mpeg4-generic`: MediaType =
- new MediaType("video", "mpeg4-generic", Compressible, Binary)
- lazy val `mpv`: MediaType = new MediaType("video", "mpv", Compressible, Binary)
- lazy val `nv`: MediaType = new MediaType("video", "nv", Compressible, Binary)
- lazy val `ogg`: MediaType = new MediaType("video", "ogg", Uncompressible, Binary, List("ogv"))
- lazy val `parityfec`: MediaType = new MediaType("video", "parityfec", Compressible, Binary)
- lazy val `pointer`: MediaType = new MediaType("video", "pointer", Compressible, Binary)
- lazy val `quicktime`: MediaType =
- new MediaType("video", "quicktime", Uncompressible, Binary, List("qt", "mov"))
- lazy val `raptorfec`: MediaType = new MediaType("video", "raptorfec", Compressible, Binary)
- lazy val `raw`: MediaType = new MediaType("video", "raw", Compressible, Binary)
- lazy val `rtp-enc-aescm128`: MediaType =
- new MediaType("video", "rtp-enc-aescm128", Compressible, Binary)
- lazy val `rtploopback`: MediaType = new MediaType("video", "rtploopback", Compressible, Binary)
- lazy val `rtx`: MediaType = new MediaType("video", "rtx", Compressible, Binary)
- lazy val `scip`: MediaType = new MediaType("video", "scip", Compressible, Binary)
- lazy val `smpte291`: MediaType = new MediaType("video", "smpte291", Compressible, Binary)
- lazy val `smpte292m`: MediaType = new MediaType("video", "smpte292m", Compressible, Binary)
- lazy val `ulpfec`: MediaType = new MediaType("video", "ulpfec", Compressible, Binary)
- lazy val `vc1`: MediaType = new MediaType("video", "vc1", Compressible, Binary)
- lazy val `vc2`: MediaType = new MediaType("video", "vc2", Compressible, Binary)
- lazy val `vnd.cctv`: MediaType = new MediaType("video", "vnd.cctv", Compressible, Binary)
- lazy val `vnd.dece.hd`: MediaType =
- new MediaType("video", "vnd.dece.hd", Compressible, Binary, List("uvh", "uvvh"))
- lazy val `vnd.dece.mobile`: MediaType =
- new MediaType("video", "vnd.dece.mobile", Compressible, Binary, List("uvm", "uvvm"))
- lazy val `vnd.dece.mp4`: MediaType =
- new MediaType("video", "vnd.dece.mp4", Compressible, Binary)
- lazy val `vnd.dece.pd`: MediaType =
- new MediaType("video", "vnd.dece.pd", Compressible, Binary, List("uvp", "uvvp"))
- lazy val `vnd.dece.sd`: MediaType =
- new MediaType("video", "vnd.dece.sd", Compressible, Binary, List("uvs", "uvvs"))
- lazy val `vnd.dece.video`: MediaType =
- new MediaType("video", "vnd.dece.video", Compressible, Binary, List("uvv", "uvvv"))
- lazy val `vnd.directv.mpeg`: MediaType =
- new MediaType("video", "vnd.directv.mpeg", Compressible, Binary)
- lazy val `vnd.directv.mpeg-tts`: MediaType =
- new MediaType("video", "vnd.directv.mpeg-tts", Compressible, Binary)
- lazy val `vnd.dlna.mpeg-tts`: MediaType =
- new MediaType("video", "vnd.dlna.mpeg-tts", Compressible, Binary)
- lazy val `vnd.dvb.file`: MediaType =
- new MediaType("video", "vnd.dvb.file", Compressible, Binary, List("dvb"))
- lazy val `vnd.fvt`: MediaType =
- new MediaType("video", "vnd.fvt", Compressible, Binary, List("fvt"))
- lazy val `vnd.hns.video`: MediaType =
- new MediaType("video", "vnd.hns.video", Compressible, Binary)
- lazy val `vnd.iptvforum.1dparityfec-1010`: MediaType =
- new MediaType("video", "vnd.iptvforum.1dparityfec-1010", Compressible, Binary)
- lazy val `vnd.iptvforum.1dparityfec-2005`: MediaType =
- new MediaType("video", "vnd.iptvforum.1dparityfec-2005", Compressible, Binary)
- lazy val `vnd.iptvforum.2dparityfec-1010`: MediaType =
- new MediaType("video", "vnd.iptvforum.2dparityfec-1010", Compressible, Binary)
- lazy val `vnd.iptvforum.2dparityfec-2005`: MediaType =
- new MediaType("video", "vnd.iptvforum.2dparityfec-2005", Compressible, Binary)
- lazy val `vnd.iptvforum.ttsavc`: MediaType =
- new MediaType("video", "vnd.iptvforum.ttsavc", Compressible, Binary)
- lazy val `vnd.iptvforum.ttsmpeg2`: MediaType =
- new MediaType("video", "vnd.iptvforum.ttsmpeg2", Compressible, Binary)
- lazy val `vnd.motorola.video`: MediaType =
- new MediaType("video", "vnd.motorola.video", Compressible, Binary)
- lazy val `vnd.motorola.videop`: MediaType =
- new MediaType("video", "vnd.motorola.videop", Compressible, Binary)
- lazy val `vnd.mpegurl`: MediaType =
- new MediaType("video", "vnd.mpegurl", Compressible, Binary, List("mxu", "m4u"))
- lazy val `vnd.ms-playready.media.pyv`: MediaType =
- new MediaType("video", "vnd.ms-playready.media.pyv", Compressible, Binary, List("pyv"))
- lazy val `vnd.nokia.interleaved-multimedia`: MediaType =
- new MediaType("video", "vnd.nokia.interleaved-multimedia", Compressible, Binary)
- lazy val `vnd.nokia.mp4vr`: MediaType =
- new MediaType("video", "vnd.nokia.mp4vr", Compressible, Binary)
- lazy val `vnd.nokia.videovoip`: MediaType =
- new MediaType("video", "vnd.nokia.videovoip", Compressible, Binary)
- lazy val `vnd.objectvideo`: MediaType =
- new MediaType("video", "vnd.objectvideo", Compressible, Binary)
- lazy val `vnd.radgamettools.bink`: MediaType =
- new MediaType("video", "vnd.radgamettools.bink", Compressible, Binary)
- lazy val `vnd.radgamettools.smacker`: MediaType =
- new MediaType("video", "vnd.radgamettools.smacker", Compressible, Binary)
- lazy val `vnd.sealed.mpeg1`: MediaType =
- new MediaType("video", "vnd.sealed.mpeg1", Compressible, Binary)
- lazy val `vnd.sealed.mpeg4`: MediaType =
- new MediaType("video", "vnd.sealed.mpeg4", Compressible, Binary)
- lazy val `vnd.sealed.swf`: MediaType =
- new MediaType("video", "vnd.sealed.swf", Compressible, Binary)
- lazy val `vnd.sealedmedia.softseal.mov`: MediaType =
- new MediaType("video", "vnd.sealedmedia.softseal.mov", Compressible, Binary)
- lazy val `vnd.uvvu.mp4`: MediaType =
- new MediaType("video", "vnd.uvvu.mp4", Compressible, Binary, List("uvu", "uvvu"))
- lazy val `vnd.vivo`: MediaType =
- new MediaType("video", "vnd.vivo", Compressible, Binary, List("viv"))
- lazy val `vnd.youtube.yt`: MediaType =
- new MediaType("video", "vnd.youtube.yt", Compressible, Binary)
- lazy val `vp8`: MediaType = new MediaType("video", "vp8", Compressible, Binary)
- lazy val `vp9`: MediaType = new MediaType("video", "vp9", Compressible, Binary)
- lazy val `webm`: MediaType =
- new MediaType("video", "webm", Uncompressible, Binary, List("webm"))
- lazy val `x-f4v`: MediaType = new MediaType("video", "x-f4v", Compressible, Binary, List("f4v"))
- lazy val `x-fli`: MediaType = new MediaType("video", "x-fli", Compressible, Binary, List("fli"))
- lazy val `x-flv`: MediaType =
- new MediaType("video", "x-flv", Uncompressible, Binary, List("flv"))
- lazy val `x-m4v`: MediaType = new MediaType("video", "x-m4v", Compressible, Binary, List("m4v"))
- lazy val `x-matroska`: MediaType =
- new MediaType("video", "x-matroska", Uncompressible, Binary, List("mkv", "mk3d", "mks"))
- lazy val `x-mng`: MediaType = new MediaType("video", "x-mng", Compressible, Binary, List("mng"))
- lazy val `x-ms-asf`: MediaType =
- new MediaType("video", "x-ms-asf", Compressible, Binary, List("asf", "asx"))
- lazy val `x-ms-vob`: MediaType =
- new MediaType("video", "x-ms-vob", Compressible, Binary, List("vob"))
- lazy val `x-ms-wm`: MediaType =
- new MediaType("video", "x-ms-wm", Compressible, Binary, List("wm"))
- lazy val `x-ms-wmv`: MediaType =
- new MediaType("video", "x-ms-wmv", Uncompressible, Binary, List("wmv"))
- lazy val `x-ms-wmx`: MediaType =
- new MediaType("video", "x-ms-wmx", Compressible, Binary, List("wmx"))
- lazy val `x-ms-wvx`: MediaType =
- new MediaType("video", "x-ms-wvx", Compressible, Binary, List("wvx"))
- lazy val `x-msvideo`: MediaType =
- new MediaType("video", "x-msvideo", Compressible, Binary, List("avi"))
- lazy val `x-sgi-movie`: MediaType =
- new MediaType("video", "x-sgi-movie", Compressible, Binary, List("movie"))
- lazy val `x-smv`: MediaType = new MediaType("video", "x-smv", Compressible, Binary, List("smv"))
- lazy val all: List[MediaType] = List(
+ `vnd.dolby.heaac.1`,
`1d-interleaved-parityfec`,
- `3gpp`,
- `3gpp-tt`,
- `3gpp2`,
- `av1`,
- `bmpeg`,
- `bt656`,
- `celb`,
- `dv`,
+ `vnd.nuera.ecelp9600`,
+ `silk`,
+ `pcmu-wb`,
+ `vnd.dts`,
+ `vnd.dolby.pl2x`,
`encaprtp`,
- `ffv1`,
- `flexfec`,
- `h261`,
- `h263`,
- `h263-1998`,
- `h263-2000`,
- `h264`,
- `h264-rcdo`,
- `h264-svc`,
- `h265`,
- `iso.segment`,
- `jpeg`,
- `jpeg2000`,
- `jpm`,
- `mj2`,
- `mp1s`,
- `mp2p`,
- `mp2t`,
- `mp4`,
- `mp4v-es`,
- `mpeg`,
- `mpeg4-generic`,
- `mpv`,
- `nv`,
- `ogg`,
+ `vnd.dolby.mps`,
+ `evrcb1`,
`parityfec`,
- `pointer`,
- `quicktime`,
+ `x-matroska`,
+ `x-realaudio`,
+ `vnd.nuera.ecelp4800`,
+ `vnd.digital-winds`,
+ `smv`,
+ `g7221`,
+ `vmr-wb`,
+ `vnd.celp`,
+ `g726-40`,
+ `g722`,
+ `vnd.dra`,
+ `pcmu`,
+ `vnd.dolby.pulse.1`,
+ `lpc`,
+ `melp600`,
+ `x-wav`,
+ `l20`,
+ `basic`,
+ `asc`,
+ `speex`,
`raptorfec`,
- `raw`,
- `rtp-enc-aescm128`,
- `rtploopback`,
- `rtx`,
+ `vnd.cns.anp1`,
+ `evrcwb1`,
+ `mpeg`,
+ `atrac-x`,
+ `midi`,
+ `smv-qcp`,
+ `t38`,
`scip`,
- `smpte291`,
- `smpte292m`,
+ `rtp-enc-aescm128`,
+ `vnd.nuera.ecelp7470`,
+ `evrc-qcp`,
+ `prs.sid`,
+ `dsr-es202050`,
+ `vnd.lucent.voice`,
+ `g726-32`,
+ `g7291`,
+ `webm`,
+ `melp2400`,
+ `cn`,
+ `l8`,
+ `vnd.wave`,
+ `xm`,
+ `atrac3`,
+ `pcma`,
+ `tetra_acelp_bb`,
+ `vnd.dts.hd`,
+ `x-caf`,
+ `amr`,
+ `gsm`,
`ulpfec`,
- `vc1`,
- `vc2`,
- `vnd.cctv`,
- `vnd.dece.hd`,
- `vnd.dece.mobile`,
- `vnd.dece.mp4`,
- `vnd.dece.pd`,
- `vnd.dece.sd`,
- `vnd.dece.video`,
- `vnd.directv.mpeg`,
- `vnd.directv.mpeg-tts`,
- `vnd.dlna.mpeg-tts`,
+ `aac`,
+ `wave`,
+ `sp-midi`,
+ `vnd.nortel.vbk`,
+ `uemclip`,
+ `mpa`,
+ `x-flac`,
+ `vnd.rn-realaudio`,
+ `g723`,
+ `g726-24`,
+ `tsvcis`,
+ `vnd.rip`,
+ `mpa-robust`,
+ `vnd.sealedmedia.softseal.mpeg`,
+ `s3m`,
+ `adpcm`,
+ `g711-0`,
+ `fwdred`,
+ `x-m4a`,
+ `evs`,
+ `vnd.dolby.mlp`,
+ `vnd.rhetorex.32kadpcm`,
+ `vorbis`,
+ `dat12`,
+ `clearmode`,
+ `x-mpegurl`,
+ `vnd.audiokoz`,
+ `musepack`,
+ `usac`,
+ `vnd.nokia.mobile-xmf`,
+ `dv`,
+ `g728`,
+ `evrcwb`,
+ `vnd.presonus.multitrack`,
+ `g726-16`,
+ `mpeg4-generic`,
+ `ilbc`,
+ `mp4`,
+ `x-aiff`,
+ `x-pn-realaudio`,
+ `x-aac`,
+ `vnd.dolby.heaac.2`,
+ `amr-wb+`,
+ `dsr-es202211`,
+ `smv0`,
+ `bv16`,
+ `g729`,
+ `x-tta`,
+ `g729e`,
+ `melp`,
+ `mobile-xmf`,
+ `dls`,
+ `evrc0`,
+ `vorbis-config`,
+ `gsm-efr`,
+ `rtp-midi`,
+ `vnd.dlna.adts`,
+ `vnd.vmx.cvsd`,
`vnd.dvb.file`,
- `vnd.fvt`,
- `vnd.hns.video`,
- `vnd.iptvforum.1dparityfec-1010`,
- `vnd.iptvforum.1dparityfec-2005`,
- `vnd.iptvforum.2dparityfec-1010`,
- `vnd.iptvforum.2dparityfec-2005`,
- `vnd.iptvforum.ttsavc`,
- `vnd.iptvforum.ttsmpeg2`,
- `vnd.motorola.video`,
- `vnd.motorola.videop`,
- `vnd.mpegurl`,
- `vnd.ms-playready.media.pyv`,
- `vnd.nokia.interleaved-multimedia`,
- `vnd.nokia.mp4vr`,
- `vnd.nokia.videovoip`,
- `vnd.objectvideo`,
- `vnd.radgamettools.bink`,
- `vnd.radgamettools.smacker`,
- `vnd.sealed.mpeg1`,
- `vnd.sealed.mpeg4`,
- `vnd.sealed.swf`,
- `vnd.sealedmedia.softseal.mov`,
- `vnd.uvvu.mp4`,
- `vnd.vivo`,
- `vnd.youtube.yt`,
- `vp8`,
- `vp9`,
- `webm`,
- `x-f4v`,
- `x-fli`,
- `x-flv`,
- `x-m4v`,
- `x-matroska`,
- `x-mng`,
- `x-ms-asf`,
- `x-ms-vob`,
- `x-ms-wm`,
- `x-ms-wmv`,
- `x-ms-wmx`,
- `x-ms-wvx`,
- `x-msvideo`,
- `x-sgi-movie`,
- `x-smv`,
+ `isac`,
+ `telephone-event`,
+ `l16`,
+ `3gpp2`,
+ `melp1200`,
+ `vnd.cns.inf1`,
+ `wav`,
+ `bv32`,
+ `pcma-wb`,
+ `ac3`,
+ `vnd.qcelp`,
+ `vnd.octel.sbc`,
+ `atrac-advanced-lossless`,
+ `qcelp`,
+ `x-pn-realaudio-plugin`,
+ `g719`,
+ `tone`,
+ `dvi4`,
+ `vnd.hns.audio`,
+ `x-ms-wax`,
+ `g729d`,
+ `t140c`,
+ `32kadpcm`,
+ `mp3`,
+ `evrcnw`,
+ `vnd.cisco.nse`,
+ `opus`,
+ `evrcb0`,
+ `3gpp`,
+ `ogg`,
+ `vnd.dolby.pl2z`,
+ `vnd.cmles.radio-events`,
+ `evrc`,
+ `vnd.dolby.pl2`,
+ `mhas`,
+ `l24`,
+ `vnd.dts.uhd`,
+ `x-ms-wma`,
+ `tetra_acelp`,
+ `gsm-hr-08`,
+ `eac3`,
+ `evrcwb0`,
+ `vdvi`,
+ `dsr-es202212`,
+ `rtploopback`,
+ `mp4a-latm`,
+ `sofa`,
+ `amr-wb`,
+ `evrcb`,
+ `ip-mr_v2.5`,
+ `evrcnw0`,
+ `vnd.3gpp.iufp`,
+ `aptx`,
)
- lazy val any: MediaType = new MediaType("video", "*")
+ lazy val any: MediaType = new MediaType("audio", "*")
}
- object x_conference {
- lazy val `x-cooltalk`: MediaType =
- new MediaType("x-conference", "x-cooltalk", Compressible, NotBinary, List("ice"))
- lazy val all: List[MediaType] = List(`x-cooltalk`)
- lazy val any: MediaType = new MediaType("x-conference", "*")
+
+ object multipart {
+
+ lazy val `form-data`: MediaType =
+ new MediaType("multipart", "form-data", compressible = false, binary = true)
+
+ lazy val `byteranges`: MediaType =
+ new MediaType("multipart", "byteranges", compressible = false, binary = true)
+
+ lazy val `vnd.bint.med-plus`: MediaType =
+ new MediaType("multipart", "vnd.bint.med-plus", compressible = false, binary = true)
+
+ lazy val `mixed`: MediaType =
+ new MediaType("multipart", "mixed", compressible = false, binary = true)
+
+ lazy val `report`: MediaType =
+ new MediaType("multipart", "report", compressible = false, binary = true)
+
+ lazy val `multilingual`: MediaType =
+ new MediaType("multipart", "multilingual", compressible = false, binary = true)
+
+ lazy val `x-mixed-replace`: MediaType =
+ new MediaType("multipart", "x-mixed-replace", compressible = false, binary = true)
+
+ lazy val `encrypted`: MediaType =
+ new MediaType("multipart", "encrypted", compressible = false, binary = true)
+
+ lazy val `header-set`: MediaType =
+ new MediaType("multipart", "header-set", compressible = false, binary = true)
+
+ lazy val `voice-message`: MediaType =
+ new MediaType("multipart", "voice-message", compressible = false, binary = true)
+
+ lazy val `related`: MediaType =
+ new MediaType("multipart", "related", compressible = false, binary = true)
+
+ lazy val `signed`: MediaType =
+ new MediaType("multipart", "signed", compressible = false, binary = true)
+
+ lazy val `appledouble`: MediaType =
+ new MediaType("multipart", "appledouble", compressible = false, binary = true)
+
+ lazy val `alternative`: MediaType =
+ new MediaType("multipart", "alternative", compressible = false, binary = true)
+
+ lazy val `parallel`: MediaType =
+ new MediaType("multipart", "parallel", compressible = false, binary = true)
+
+ lazy val `digest`: MediaType =
+ new MediaType("multipart", "digest", compressible = false, binary = true)
+
+ lazy val all: List[MediaType] = List(
+ `form-data`,
+ `byteranges`,
+ `vnd.bint.med-plus`,
+ `mixed`,
+ `report`,
+ `multilingual`,
+ `x-mixed-replace`,
+ `encrypted`,
+ `header-set`,
+ `voice-message`,
+ `related`,
+ `signed`,
+ `appledouble`,
+ `alternative`,
+ `parallel`,
+ `digest`,
+ )
+ lazy val any: MediaType = new MediaType("multipart", "*")
}
- object x_shader {
- lazy val `x-fragment`: MediaType =
- new MediaType("x-shader", "x-fragment", Compressible, NotBinary)
- lazy val `x-vertex`: MediaType = new MediaType("x-shader", "x-vertex", Compressible, NotBinary)
- lazy val all: List[MediaType] = List(`x-fragment`, `x-vertex`)
- lazy val any: MediaType = new MediaType("x-shader", "*")
+
+ object chemical {
+
+ lazy val `x-cif`: MediaType =
+ new MediaType("chemical", "x-cif", compressible = false, binary = true, List("cif"))
+
+ lazy val `x-cdx`: MediaType =
+ new MediaType("chemical", "x-cdx", compressible = false, binary = true, List("cdx"))
+
+ lazy val `x-pdb`: MediaType =
+ new MediaType("chemical", "x-pdb", compressible = false, binary = true)
+
+ lazy val `x-xyz`: MediaType =
+ new MediaType("chemical", "x-xyz", compressible = false, binary = true, List("xyz"))
+
+ lazy val `x-cml`: MediaType =
+ new MediaType("chemical", "x-cml", compressible = false, binary = true, List("cml"))
+
+ lazy val `x-cmdf`: MediaType =
+ new MediaType("chemical", "x-cmdf", compressible = false, binary = true, List("cmdf"))
+
+ lazy val `x-csml`: MediaType =
+ new MediaType("chemical", "x-csml", compressible = false, binary = true, List("csml"))
+
+ lazy val all: List[MediaType] = List(`x-cif`, `x-cdx`, `x-pdb`, `x-xyz`, `x-cml`, `x-cmdf`, `x-csml`)
+ lazy val any: MediaType = new MediaType("chemical", "*")
+ }
+
+ object x_conference {
+
+ lazy val `x-cooltalk`: MediaType =
+ new MediaType("x-conference", "x-cooltalk", compressible = false, binary = true, List("ice"))
+
+ lazy val all: List[MediaType] = List(`x-cooltalk`)
+ lazy val any: MediaType = new MediaType("x-conference", "*")
}
+
}
diff --git a/zio-http/shared/src/main/scala/zio/http/Middleware.scala b/zio-http/shared/src/main/scala/zio/http/Middleware.scala
index 3a359ede6b..92073e82a7 100644
--- a/zio-http/shared/src/main/scala/zio/http/Middleware.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Middleware.scala
@@ -16,6 +16,7 @@
package zio.http
import java.io.File
+import java.nio.charset.Charset
import scala.annotation.nowarn
@@ -325,8 +326,9 @@ object Middleware extends HandlerAspects {
}
def fromDirectory(docRoot: File)(implicit trace: Trace): StaticServe[Any, Throwable] = make { (path, _) =>
- val target = new File(docRoot.getAbsolutePath() + path.encode)
- if (target.getCanonicalPath.startsWith(docRoot.getCanonicalPath)) Handler.fromFile(target)
+ val target = new File(docRoot.getAbsolutePath + path.encode)
+ if (target.getCanonicalPath.startsWith(docRoot.getCanonicalPath))
+ Handler.fromFile(target, Charset.defaultCharset())
else {
Handler.fromZIO(
ZIO.logWarning(s"attempt to access file outside of docRoot: ${target.getAbsolutePath}"),
@@ -334,8 +336,14 @@ object Middleware extends HandlerAspects {
}
}
- def fromResource(implicit trace: Trace): StaticServe[Any, Throwable] = make { (path, _) =>
- Handler.fromResource(path.dropLeadingSlash.encode)
+ def fromResource(resourcePrefix: String)(implicit trace: Trace): StaticServe[Any, Throwable] = make { (path, _) =>
+ // validate that resourcePrefix starts with an optional slash, followed by at least 1 java identifier character
+ val rp = if (resourcePrefix.startsWith("/")) resourcePrefix else "/" + resourcePrefix
+ if (rp.length < 2 || !Character.isJavaIdentifierStart(rp.charAt(1))) {
+ Handler.die(new IllegalArgumentException("resourcePrefix must have at least 1 valid character"))
+ } else {
+ Handler.fromResource(s"${resourcePrefix}/${path.dropLeadingSlash.encode}")
+ }
}
}
@@ -389,18 +397,28 @@ object Middleware extends HandlerAspects {
toMiddleware(path, StaticServe.fromDirectory(docRoot))
/**
- * Creates a middleware for serving static files from resources at the path
- * `path`.
+ * Creates a middleware for serving static files at URL path `path` from
+ * resources with the given `resourcePrefix`.
*
- * Example: `val serveResources = Middleware.serveResources(Path.empty /
- * "assets")`
+ * Example: `Middleware.serveResources(Path.empty / "assets", "webapp")`
*
* With this middleware in place, a request to
* `https://www.domain.com/assets/folder/file1.jpg` would serve the file
- * `src/main/resources/folder/file1.jpg`.
+ * `src/main/resources/webapp/folder/file1.jpg`. Note how the URL path is
+ * removed and the resourcePrefix prepended.
+ *
+ * Most build systems support resources in the `src/main/resources` directory.
+ * In the above example, the file `src/main/resources/webapp/folder/file1.jpg`
+ * would be served.
+ *
+ * * The `resourcePrefix` defaults to `"public"`. To prevent insecure sharing
+ * of * resource files, `resourcePrefix` must start with a `/` followed by at
+ * least 1 *
+ * [[java.lang.Character.isJavaIdentifierStart(x\$1:Char)* valid java identifier character]].
+ * The `/` * will be prepended if it is not present.
*/
- def serveResources(path: Path)(implicit trace: Trace): Middleware[Any] =
- toMiddleware(path, StaticServe.fromResource)
+ def serveResources(path: Path, resourcePrefix: String = "public")(implicit trace: Trace): Middleware[Any] =
+ toMiddleware(path, StaticServe.fromResource(resourcePrefix))
/**
* Creates a middleware for managing the flash scope.
diff --git a/zio-http/shared/src/main/scala/zio/http/Response.scala b/zio-http/shared/src/main/scala/zio/http/Response.scala
index 4dab7320dc..57df3fc2f3 100644
--- a/zio-http/shared/src/main/scala/zio/http/Response.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Response.scala
@@ -159,8 +159,8 @@ object Response {
case Left(failure: Throwable) => fromThrowable(failure)
case Left(failure: Cause[_]) => fromCause(failure)
case _ =>
- if (cause.isInterruptedOnly) error(Status.RequestTimeout, cause.prettyPrint.take(100))
- else error(Status.InternalServerError, cause.prettyPrint.take(100))
+ if (cause.isInterruptedOnly) error(Status.RequestTimeout, cause.prettyPrint.take(10000))
+ else error(Status.InternalServerError, cause.prettyPrint.take(10000))
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/Route.scala b/zio-http/shared/src/main/scala/zio/http/Route.scala
index b47c28fc16..6d60cbe027 100644
--- a/zio-http/shared/src/main/scala/zio/http/Route.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Route.scala
@@ -71,23 +71,26 @@ sealed trait Route[-Env, +Err] { self =>
case Provided(route, env) => Provided(route.handleErrorCause(f), env)
case Augmented(route, aspect) => Augmented(route.handleErrorCause(f), aspect)
case Handled(routePattern, handler, location) =>
- Handled(routePattern, handler.mapErrorCause(c => f(c.asInstanceOf[Cause[Nothing]])), location)
+ Handled(routePattern, handler.map(_.mapErrorCause(c => f(c.asInstanceOf[Cause[Nothing]]))), location)
case Unhandled(rpm, handler, zippable, location) =>
- val handler2: Handler[Env, Response, Request, Response] = {
- val paramHandler =
- Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
- rpm.routePattern.decode(request.method, request.path) match {
- case Left(error) => ZIO.dieMessage(error)
- case Right(value) =>
- val params = rpm.zippable.zip(value, ctx)
-
- handler(zippable.zip(params, request))
+ val handler2: Handler[Any, Nothing, RoutePattern[_], Handler[Env, Response, Request, Response]] = {
+ Handler.fromFunction[RoutePattern[_]] { pattern =>
+ val paramHandler = {
+ Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
+ pattern.asInstanceOf[RoutePattern[rpm.PathInput]].decode(request.method, request.path) match {
+ case Left(error) => ZIO.dieMessage(error)
+ case Right(value) =>
+ val params = rpm.zippable.zip(value, ctx)
+
+ handler(zippable.zip(params, request))
+ }
}
}
- // Sandbox before applying aspect:
- rpm.aspect.applyHandlerContext(paramHandler.mapErrorCause(f))
+ // Sandbox before applying aspect:
+ rpm.aspect.applyHandlerContext(paramHandler.mapErrorCause(f))
+ }
}
Handled(rpm.routePattern, handler2, location)
@@ -106,21 +109,23 @@ sealed trait Route[-Env, +Err] { self =>
case Provided(route, env) => Provided(route.handleErrorCauseZIO(f), env)
case Augmented(route, aspect) => Augmented(route.handleErrorCauseZIO(f), aspect)
case Handled(routePattern, handler, location) =>
- Handled(routePattern, handler.mapErrorCauseZIO(c => f(c.asInstanceOf[Cause[Nothing]])), location)
+ Handled[Env](routePattern, handler.map(_.mapErrorCauseZIO(c => f(c.asInstanceOf[Cause[Nothing]]))), location)
case Unhandled(rpm, handler, zippable, location) =>
- val handler2: Handler[Env, Response, Request, Response] = {
- val paramHandler =
- Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
- rpm.routePattern.decode(request.method, request.path) match {
- case Left(error) => ZIO.dieMessage(error)
- case Right(value) =>
- val params = rpm.zippable.zip(value, ctx)
-
- handler(zippable.zip(params, request))
+ val handler2: Handler[Any, Nothing, RoutePattern[_], Handler[Env, Response, Request, Response]] = {
+ Handler.fromFunction[RoutePattern[_]] { pattern =>
+ val paramHandler =
+ Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
+ pattern.asInstanceOf[RoutePattern[rpm.PathInput]].decode(request.method, request.path) match {
+ case Left(error) => ZIO.dieMessage(error)
+ case Right(value) =>
+ val params = rpm.zippable.zip(value, ctx)
+
+ handler(zippable.zip(params, request))
+ }
}
- }
- rpm.aspect.applyHandlerContext(paramHandler.mapErrorCauseZIO(f))
+ rpm.aspect.applyHandlerContext(paramHandler.mapErrorCauseZIO(f))
+ }
}
Handled(rpm.routePattern, handler2, location)
@@ -134,7 +139,7 @@ sealed trait Route[-Env, +Err] { self =>
self match {
case Provided(route, env) => Provided(route.mapError(fxn), env)
case Augmented(route, aspect) => Augmented(route.mapError(fxn), aspect)
- case Handled(routePattern, handler, location) => Handled(routePattern, handler, location)
+ case Handled(routePattern, handler, location) => Handled[Env](routePattern, handler, location)
case Unhandled(rpm, handler, zippable, location) => Unhandled(rpm, handler.mapError(fxn), zippable, location)
}
@@ -149,7 +154,7 @@ sealed trait Route[-Env, +Err] { self =>
self match {
case Provided(route, env) => Provided(route.mapErrorZIO(fxn), env)
case Augmented(route, aspect) => Augmented(route.mapErrorZIO(fxn), aspect)
- case Handled(routePattern, handler, location) => Handled(routePattern, handler, location)
+ case Handled(routePattern, handler, location) => Handled[Env](routePattern, handler, location)
case Unhandled(rpm, handler, zippable, location) => Unhandled(rpm, handler.mapErrorZIO(fxn), zippable, location)
}
@@ -173,33 +178,37 @@ sealed trait Route[-Env, +Err] { self =>
case Provided(route, env) => Provided(route.handleErrorRequestCause(f), env)
case Augmented(route, aspect) => Augmented(route.handleErrorRequestCause(f), aspect)
case Handled(routePattern, handler, location) =>
- Handled(
+ Handled[Env](
routePattern,
- Handler.fromFunctionHandler[Request] { (req: Request) =>
- handler.mapErrorCause(c => f(req, c.asInstanceOf[Cause[Nothing]]))
+ handler.map { handler =>
+ Handler.fromFunctionHandler[Request] { (req: Request) =>
+ handler.mapErrorCause(c => f(req, c.asInstanceOf[Cause[Nothing]]))
+ }
},
location,
)
case Unhandled(rpm, handler, zippable, location) =>
- val handler2: Handler[Env, Response, Request, Response] = {
- val paramHandler =
- Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
- rpm.routePattern.decode(request.method, request.path) match {
- case Left(error) => ZIO.dieMessage(error)
- case Right(value) =>
- val params = rpm.zippable.zip(value, ctx)
-
- handler(zippable.zip(params, request))
+ val handler2: Handler[Any, Nothing, RoutePattern[_], Handler[Env, Response, Request, Response]] = {
+ Handler.fromFunction[RoutePattern[_]] { pattern =>
+ val paramHandler =
+ Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
+ pattern.asInstanceOf[RoutePattern[rpm.PathInput]].decode(request.method, request.path) match {
+ case Left(error) => ZIO.dieMessage(error)
+ case Right(value) =>
+ val params = rpm.zippable.zip(value, ctx)
+
+ handler(zippable.zip(params, request))
+ }
}
- }
- // Sandbox before applying aspect:
- rpm.aspect.applyHandlerContext(
- Handler.fromFunctionHandler[(rpm.Context, Request)] { case (_, req) =>
- paramHandler.mapErrorCause(f(req, _))
- },
- )
+ // Sandbox before applying aspect:
+ rpm.aspect.applyHandlerContext(
+ Handler.fromFunctionHandler[(rpm.Context, Request)] { case (_, req) =>
+ paramHandler.mapErrorCause(f(req, _))
+ },
+ )
+ }
}
Handled(rpm.routePattern, handler2, location)
@@ -219,31 +228,35 @@ sealed trait Route[-Env, +Err] { self =>
case Provided(route, env) => Provided(route.handleErrorRequestCauseZIO(f), env)
case Augmented(route, aspect) => Augmented(route.handleErrorRequestCauseZIO(f), aspect)
case Handled(routePattern, handler, location) =>
- Handled(
+ Handled[Env](
routePattern,
- Handler.fromFunctionHandler[Request] { (req: Request) =>
- handler.mapErrorCauseZIO(c => f(req, c.asInstanceOf[Cause[Nothing]]))
+ handler.map { handler =>
+ Handler.fromFunctionHandler[Request] { (req: Request) =>
+ handler.mapErrorCauseZIO(c => f(req, c.asInstanceOf[Cause[Nothing]]))
+ }
},
location,
)
case Unhandled(rpm, handler, zippable, location) =>
- val handler2: Handler[Env, Response, Request, Response] = {
- val paramHandler =
- Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
- rpm.routePattern.decode(request.method, request.path) match {
- case Left(error) => ZIO.dieMessage(error)
- case Right(value) =>
- val params = rpm.zippable.zip(value, ctx)
-
- handler(zippable.zip(params, request))
+ val handler2: Handler[Any, Nothing, RoutePattern[_], Handler[Env, Response, Request, Response]] = {
+ Handler.fromFunction[RoutePattern[_]] { pattern =>
+ val paramHandler =
+ Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
+ pattern.asInstanceOf[RoutePattern[rpm.PathInput]].decode(request.method, request.path) match {
+ case Left(error) => ZIO.dieMessage(error)
+ case Right(value) =>
+ val params = rpm.zippable.zip(value, ctx)
+
+ handler(zippable.zip(params, request))
+ }
}
- }
- rpm.aspect.applyHandlerContext(
- Handler.fromFunctionHandler[(rpm.Context, Request)] { case (_, req) =>
- paramHandler.mapErrorCauseZIO(f(req, _))
- },
- )
+ rpm.aspect.applyHandlerContext(
+ Handler.fromFunctionHandler[(rpm.Context, Request)] { case (_, req) =>
+ paramHandler.mapErrorCauseZIO(f(req, _))
+ },
+ )
+ }
}
Handled(rpm.routePattern, handler2, location)
@@ -264,7 +277,7 @@ sealed trait Route[-Env, +Err] { self =>
self match {
case Provided(route, env) => Provided(route.nest(prefix), env)
case Augmented(route, aspect) => Augmented(route.nest(prefix), aspect)
- case Handled(routePattern, handler, location) => Handled(routePattern.nest(prefix), handler, location)
+ case Handled(routePattern, handler, location) => Handled[Env](routePattern.nest(prefix), handler, location)
case Unhandled(rpm, handler, zippable, location) =>
Unhandled(rpm.prefix(prefix), handler, zippable, location)
@@ -312,14 +325,14 @@ object Route {
routePattern: RoutePattern[_],
)(handler: Handler[Env, Response, Request, Response])(implicit trace: Trace): Route[Env, Nothing] = {
// Sandbox before constructing:
- Route.Handled(routePattern, handler.sandbox, Trace.empty)
+ Route.Handled(routePattern, Handler.fromFunction[RoutePattern[_]](_ => handler.sandbox), Trace.empty)
}
def handled[Params, Env](rpm: Route.Builder[Env, Params]): HandledConstructor[Env, Params] =
new HandledConstructor[Env, Params](rpm)
val notFound: Route[Any, Nothing] =
- Handled(RoutePattern.any, Handler.notFound, Trace.empty)
+ Handled(RoutePattern.any, Handler.fromFunction[RoutePattern[_]](_ => Handler.notFound), Trace.empty)
def route[Params](routePattern: RoutePattern[Params]): UnhandledConstructor[Any, Params] =
route(Route.Builder(routePattern, HandlerAspect.identity))
@@ -331,20 +344,22 @@ object Route {
def apply[Env1 <: Env, In](
handler: Handler[Env1, Response, In, Response],
)(implicit zippable: Zippable.Out[Params, Request, In], trace: Trace): Route[Env1, Nothing] = {
- val handler2: Handler[Env1, Response, Request, Response] = {
- val paramHandler =
- Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
- rpm.routePattern.decode(request.method, request.path) match {
- case Left(error) => ZIO.dieMessage(error)
- case Right(value) =>
- val params = rpm.zippable.zip(value, ctx)
-
- handler(zippable.zip(params, request))
+ val handler2: Handler[Any, Nothing, RoutePattern[_], Handler[Env1, Response, Request, Response]] = {
+ Handler.fromFunction[RoutePattern[_]] { pattern =>
+ val paramHandler =
+ Handler.fromFunctionZIO[(rpm.Context, Request)] { case (ctx, request) =>
+ pattern.asInstanceOf[RoutePattern[rpm.PathInput]].decode(request.method, request.path) match {
+ case Left(error) => ZIO.dieMessage(error)
+ case Right(value) =>
+ val params = rpm.zippable.zip(value, ctx)
+
+ handler(zippable.zip(params, request))
+ }
}
- }
- // Sandbox before applying aspect:
- rpm.aspect.applyHandlerContext(paramHandler.sandbox)
+ // Sandbox before applying aspect:
+ rpm.aspect.applyHandlerContext(paramHandler.sandbox)
+ }
}
Handled(rpm.routePattern, handler2, trace)
@@ -442,11 +457,11 @@ object Route {
private final case class Handled[-Env](
routePattern: RoutePattern[_],
- handler: Handler[Env, Response, Request, Response],
+ handler: Handler[Any, Nothing, RoutePattern[_], Handler[Env, Response, Request, Response]],
location: Trace,
) extends Route[Env, Nothing] {
override def toHandler(implicit ev: Nothing <:< Response, trace: Trace): Handler[Env, Response, Request, Response] =
- handler
+ Handler.fromZIO(handler(routePattern)).flatten
override def toString() = s"Route.Handled(${routePattern}, ${location})"
}
diff --git a/zio-http/shared/src/main/scala/zio/http/RoutePattern.scala b/zio-http/shared/src/main/scala/zio/http/RoutePattern.scala
index f54cc50c98..e88062c99d 100644
--- a/zio-http/shared/src/main/scala/zio/http/RoutePattern.scala
+++ b/zio-http/shared/src/main/scala/zio/http/RoutePattern.scala
@@ -84,6 +84,8 @@ final case class RoutePattern[A](method: Method, pathCodec: PathCodec[A]) { self
): Route.Builder[Env, zippable.Out] =
Route.Builder(self, middleware)(zippable)
+ def alternatives: List[RoutePattern[A]] = pathCodec.alternatives.map(RoutePattern(method, _))
+
/**
* Reinteprets the type parameter, given evidence it is equal to some other
* type.
diff --git a/zio-http/shared/src/main/scala/zio/http/Routes.scala b/zio-http/shared/src/main/scala/zio/http/Routes.scala
index 4fbde164da..6a3439bb4a 100644
--- a/zio-http/shared/src/main/scala/zio/http/Routes.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Routes.scala
@@ -16,8 +16,11 @@
package zio.http
+import java.io.File
+
import zio._
+import zio.http.HttpApp.Tree
import zio.http.Routes.ApplyContextAspect
import zio.http.codec.PathCodec
@@ -54,13 +57,13 @@ final case class Routes[-Env, +Err](routes: Chunk[zio.http.Route[Env, Err]]) { s
copy(routes = routes ++ that.routes)
/**
- * Prepend the specified route to this HttpApp
+ * Prepend the specified route.
*/
def +:[Env1 <: Env, Err1 >: Err](route: zio.http.Route[Env1, Err1]): Routes[Env1, Err1] =
copy(routes = route +: routes)
/**
- * Appends the specified route to this HttpApp
+ * Appends the specified route.
*/
def :+[Env1 <: Env, Err1 >: Err](route: zio.http.Route[Env1, Err1]): Routes[Env1, Err1] =
copy(routes = routes :+ route)
@@ -102,14 +105,14 @@ final case class Routes[-Env, +Err](routes: Chunk[zio.http.Route[Env, Err]]) { s
/**
* Allows the transformation of the Err type through an Effectful program
- * allowing one to build up a HttpApp in Stages delegates to the Route
+ * allowing one to build up Routes in Stages delegates to the Route.
*/
def mapErrorZIO[Err1](fxn: Err => ZIO[Any, Err1, Response])(implicit trace: Trace): Routes[Env, Err1] =
new Routes(routes.map(_.mapErrorZIO(fxn)))
/**
* Allows the transformation of the Err type through a function allowing one
- * to build up a HttpApp in Stages delegates to the Route
+ * to build up Routes in Stages delegates to the Route.
*/
def mapError[Err1](fxn: Err => Err1): Routes[Env, Err1] =
new Routes(routes.map(_.mapError(fxn)))
@@ -258,7 +261,7 @@ final case class Routes[-Env, +Err](routes: Chunk[zio.http.Route[Env, Err]]) { s
}
/**
- * Returns new new HttpApp whose handlers are transformed by the specified
+ * Returns new Routes whose handlers are transformed by the specified
* function.
*/
def transform[Env1](
@@ -293,15 +296,54 @@ object Routes extends RoutesCompanionVersionSpecific {
def singleton[Env, Err](h: Handler[Env, Err, (Path, Request), Response])(implicit trace: Trace): Routes[Env, Err] =
Routes(Route.route(RoutePattern.any)(h))
+ /**
+ * Creates routes for serving static files from the directory `docRoot` at the
+ * url path `path`.
+ *
+ * Example: `Routes.serveDirectory(Path.empty / "assets", new
+ * File("/some/local/path"))`
+ *
+ * With this routes in place, a request to
+ * `https://www.domain.com/assets/folder/file1.jpg` would serve the local file
+ * `/some/local/path/folder/file1.jpg`.
+ */
+ def serveDirectory(path: Path, docRoot: File)(implicit trace: Trace): Routes[Any, Nothing] =
+ empty @@ Middleware.serveDirectory(path, docRoot)
+
+ /**
+ * Creates routes for serving static files at URL path `path` from resources
+ * with the given `resourcePrefix`.
+ *
+ * Example: `Routes.serveResources(Path.empty / "assets", "webapp")`
+ *
+ * With this routes in place, a request to
+ * `https://www.domain.com/assets/folder/file1.jpg` would serve the file
+ * `src/main/resources/webapp/folder/file1.jpg`. Note how the URL path is
+ * removed and the resourcePrefix prepended.
+ *
+ * Most build systems support resources in the `src/main/resources` directory.
+ * In the above example, the file `src/main/resources/webapp/folder/file1.jpg`
+ * would be served.
+ *
+ * The `resourcePrefix` defaults to `"public"`. To prevent insecure sharing of
+ * resource files, `resourcePrefix` must start with a `/` followed by at least
+ * 1
+ * [[java.lang.Character.isJavaIdentifierStart(x\$1:Char)* valid java identifier character]].
+ * The `/` will be prepended if it is not present.
+ */
+ def serveResources(path: Path, resourcePrefix: String = "public")(implicit trace: Trace): Routes[Any, Nothing] =
+ empty @@ Middleware.serveResources(path, resourcePrefix)
+
private[http] final case class Tree[-Env](tree: RoutePattern.Tree[RequestHandler[Env, Response]]) { self =>
final def ++[Env1 <: Env](that: Tree[Env1]): Tree[Env1] =
Tree(self.tree ++ that.tree)
final def add[Env1 <: Env](route: Route[Env1, Response])(implicit trace: Trace): Tree[Env1] =
- Tree(self.tree.add(route.routePattern, route.toHandler))
+ Tree(self.tree.addAll(route.routePattern.alternatives.map(alt => (alt, route.toHandler))))
final def addAll[Env1 <: Env](routes: Iterable[Route[Env1, Response]])(implicit trace: Trace): Tree[Env1] =
- Tree(self.tree.addAll(routes.map(r => (r.routePattern, r.toHandler))))
+ // only change to flatMap when Scala 2.12 is dropped
+ Tree(self.tree.addAll(routes.map(r => r.routePattern.alternatives.map(alt => (alt, r.toHandler))).flatten))
final def get(method: Method, path: Path): Chunk[RequestHandler[Env, Response]] =
tree.get(method, path)
diff --git a/zio-http/shared/src/main/scala/zio/http/Server.scala b/zio-http/shared/src/main/scala/zio/http/Server.scala
index c5e0913b8b..2d5912552a 100644
--- a/zio-http/shared/src/main/scala/zio/http/Server.scala
+++ b/zio-http/shared/src/main/scala/zio/http/Server.scala
@@ -46,7 +46,7 @@ trait Server {
*
* @return
*/
- def port: Int
+ def port: UIO[Int]
}
object Server extends ServerPlatformSpecific {
@@ -396,7 +396,7 @@ object Server extends ServerPlatformSpecific {
@deprecated("Install Routes instead. Will be removed in the next release.", "3.0.0-RC7")
def install[R](httpApp: HttpApp[R])(implicit trace: Trace, tag: EnvironmentTag[R]): URIO[R with Server, Int] = {
- ZIO.serviceWithZIO[Server](_.install[R](httpApp)) *> ZIO.serviceWith[Server](_.port)
+ ZIO.serviceWithZIO[Server](_.install[R](httpApp)) *> ZIO.serviceWithZIO[Server](_.port)
}
def serve[R](
@@ -408,10 +408,17 @@ object Server extends ServerPlatformSpecific {
ZIO.never
}
+ def serve[R](
+ route: Route[R, Response],
+ routes: Route[R, Response]*,
+ )(implicit trace: Trace, tag: EnvironmentTag[R]): URIO[R with Server, Nothing] = {
+ serve(Routes(route, routes: _*))
+ }
+
def install[R](
httpApp: Routes[R, Response],
)(implicit trace: Trace, tag: EnvironmentTag[R]): URIO[R with Server, Int] = {
- ZIO.serviceWithZIO[Server](_.install[R](httpApp)) *> ZIO.serviceWith[Server](_.port)
+ ZIO.serviceWithZIO[Server](_.install[R](httpApp)) *> ZIO.serviceWithZIO[Server](_.port)
}
private[http] val base: ZLayer[Driver & Config, Throwable, Server] = {
@@ -436,9 +443,21 @@ object Server extends ServerPlatformSpecific {
)
}.ignoreLogged,
)
- result <- driver.start.catchAllCause(cause => inFlightRequests.failCause(cause) *> ZIO.refailCause(cause))
- _ <- inFlightRequests.succeed(result.inFlightRequests)
- } yield ServerLive(driver, result.port)
+ initialInstall <- Promise.make[Nothing, Unit]
+ serverStarted <- Promise.make[Throwable, Int]
+ _ <-
+ (for {
+ _ <- initialInstall.await.interruptible
+ result <- driver.start
+ _ <- inFlightRequests.succeed(result.inFlightRequests)
+ _ <- serverStarted.succeed(result.port)
+ } yield ())
+ // In the case of failure of `Driver#.start` or interruption while we are waiting to be
+ // installed for the first time, we should always fail the `serverStarted` and 'inFlightRequests'
+ // promises to allow the finalizers to make progress.
+ .onError(c => inFlightRequests.refailCause(c) *> serverStarted.refailCause(c))
+ .forkScoped
+ } yield ServerLive(driver, initialInstall, serverStarted)
}
}
@@ -462,15 +481,24 @@ object Server extends ServerPlatformSpecific {
private final case class ServerLive(
driver: Driver,
- bindPort: Int,
+ // A promise used to signal the first time `install`
+ // is called on this `Server` instance.
+ private val initialInstall: Promise[Nothing, Unit],
+ // A promise that represents the port of the "started" driver
+ // or a throwable if starting the driver failed for any reason.
+ private val serverStarted: Promise[Throwable, Int],
) extends Server {
override def install[R](httpApp: Routes[R, Response])(implicit
trace: Trace,
tag: EnvironmentTag[R],
): URIO[R, Unit] =
- ZIO.environment[R].flatMap(env => driver.addApp(httpApp, env.prune[R]))
+ for {
+ _ <- initialInstall.succeed(())
+ _ <- serverStarted.await.orDie
+ _ <- ZIO.environment[R].flatMap(env => driver.addApp(httpApp, env.prune[R]))
+ } yield ()
- override def port: Int = bindPort
+ override def port: UIO[Int] = serverStarted.await.orDie
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/StreamingForm.scala b/zio-http/shared/src/main/scala/zio/http/StreamingForm.scala
index 51cc105691..220a675286 100644
--- a/zio-http/shared/src/main/scala/zio/http/StreamingForm.scala
+++ b/zio-http/shared/src/main/scala/zio/http/StreamingForm.scala
@@ -18,12 +18,14 @@ package zio.http
import java.nio.charset.Charset
+import scala.annotation.tailrec
+
import zio._
import zio.stacktracer.TracingImplicits.disableAutoTrace
-import zio.stream.{Take, ZChannel, ZStream}
+import zio.stream.{Take, ZStream}
-import zio.http.StreamingForm.{Buffer, ZStreamOps}
+import zio.http.StreamingForm.Buffer
import zio.http.internal.{FormAST, FormState}
final case class StreamingForm(source: ZStream[Any, Throwable, Byte], boundary: Boundary, bufferSize: Int = 8192) {
@@ -33,7 +35,7 @@ final case class StreamingForm(source: ZStream[Any, Throwable, Byte], boundary:
* Runs the streaming form and collects all parts in memory, returning a Form
*/
def collectAll(implicit trace: Trace): ZIO[Any, Throwable, Form] =
- fields.mapZIO {
+ streamFormFields(bufferUpToBoundary = true).mapZIO {
case sb: FormField.StreamingBinary =>
sb.collect
case other: FormField =>
@@ -43,36 +45,44 @@ final case class StreamingForm(source: ZStream[Any, Throwable, Byte], boundary:
}
def fields(implicit trace: Trace): ZStream[Any, Throwable, FormField] =
+ streamFormFields(bufferUpToBoundary = false)
+
+ private def streamFormFields(
+ bufferUpToBoundary: Boolean,
+ )(implicit trace: Trace): ZStream[Any, Throwable, FormField] =
ZStream.unwrapScoped {
implicit val unsafe: Unsafe = Unsafe.unsafe
for {
runtime <- ZIO.runtime[Any]
- buffer <- ZIO.succeed(new Buffer(bufferSize))
+ buffer <- ZIO.succeed(new Buffer(bufferSize, crlfBoundary, bufferUpToBoundary))
abort <- Promise.make[Nothing, Unit]
fieldQueue <- Queue.bounded[Take[Throwable, FormField]](4)
+ state = initialState
reader =
- source
- .mapAccumImmediate(initialState) { (state, byte) =>
- def handleBoundary(ast: Chunk[FormAST]): (StreamingForm.State, Option[FormField]) =
- if (state.inNonStreamingPart) {
- FormField.fromFormAST(ast, charset) match {
- case Right(formData) =>
- buffer.reset()
- (state.reset, Some(formData))
- case Left(e) => throw e.asException
- }
- } else {
- buffer.reset()
- (state.reset, None)
+ source.runForeachChunk { bytes =>
+ def handleBoundary(ast: Chunk[FormAST]): Option[FormField] =
+ if (state.inNonStreamingPart) {
+ FormField.fromFormAST(ast, charset) match {
+ case Right(formData) =>
+ buffer.reset()
+ state.reset
+ Some(formData)
+ case Left(e) => throw e.asException
}
+ } else {
+ buffer.reset()
+ state.reset
+ None
+ }
+ def handleByte(byte: Byte, isLastByte: Boolean): Option[FormField] = {
state.formState match {
case formState: FormState.FormStateBuffer =>
val nextFormState = formState.append(byte)
state.currentQueue match {
case Some(queue) =>
- val takes = buffer.addByte(crlfBoundary, byte)
+ val takes = buffer.addByte(byte, isLastByte)
if (takes.nonEmpty) {
runtime.unsafe.run(queue.offerAll(takes).raceFirst(abort.await)).getOrThrowFiberFailure()
}
@@ -96,15 +106,15 @@ final case class StreamingForm(source: ZStream[Any, Throwable, Byte], boundary:
streamingFormData <- FormField
.incomingStreamingBinary(newFormState.tree, newQueue)
.mapError(_.asException)
- nextState = state.withCurrentQueue(newQueue)
- } yield (nextState, Some(streamingFormData))
+ _ = state.withCurrentQueue(newQueue)
+ } yield Some(streamingFormData)
}.getOrThrowFiberFailure()
} else {
- val nextState = state.withInNonStreamingPart(true)
- (nextState, None)
+ val _ = state.withInNonStreamingPart(true)
+ None
}
} else {
- (state, None)
+ None
}
case FormState.BoundaryEncapsulated(ast) =>
handleBoundary(ast)
@@ -112,15 +122,27 @@ final case class StreamingForm(source: ZStream[Any, Throwable, Byte], boundary:
handleBoundary(ast)
}
case _ =>
- (state, None)
+ None
}
}
- .mapZIO { field =>
- fieldQueue.offer(Take.single(field))
+
+ val builder = Chunk.newBuilder[FormField]
+ val it = bytes.iterator
+ var hasNext = it.hasNext
+ while (hasNext) {
+ val byte = it.next()
+ hasNext = it.hasNext
+ handleByte(byte, !hasNext) match {
+ case Some(field) => builder += field
+ case _ => ()
+ }
}
+ val fields = builder.result()
+ fieldQueue.offer(Take.chunk(fields)).when(fields.nonEmpty)
+ }
// FIXME: .blocking here is temporary until we figure out a better way to avoid running effects within mapAccumImmediate
_ <- ZIO
- .blocking(reader.runDrain)
+ .blocking(reader)
.catchAllCause(cause => fieldQueue.offer(Take.failCause(cause)))
.ensuring(fieldQueue.offer(Take.end))
.forkScoped
@@ -138,7 +160,7 @@ final case class StreamingForm(source: ZStream[Any, Throwable, Byte], boundary:
private def initialState: StreamingForm.State =
StreamingForm.initialState(boundary)
- private val crlfBoundary: Chunk[Byte] = Chunk[Byte](13, 10) ++ boundary.encapsulationBoundaryBytes
+ private def crlfBoundary: Array[Byte] = Array[Byte](13, 10) ++ boundary.encapsulationBoundaryBytes.toArray[Byte]
}
object StreamingForm {
@@ -172,107 +194,72 @@ object StreamingForm {
new State(FormState.fromBoundary(boundary), None, _inNonStreamingPart = false)
}
- private final class Buffer(bufferSize: Int) {
- private val buffer: Array[Byte] = new Array[Byte](bufferSize)
- private var length: Int = 0
+ private final class Buffer(bufferSize: Int, crlfBoundary: Array[Byte], bufferUpToBoundary: Boolean) {
+ private var buffer: Array[Byte] = Array.ofDim(bufferSize)
+ private var index: Int = 0
+ private val boundarySize = crlfBoundary.length
- def addByte(
- crlfBoundary: Chunk[Byte],
- byte: Byte,
- ): Chunk[Take[Nothing, Byte]] = {
- buffer(length) = byte
- if (length < (crlfBoundary.length - 1)) {
- // Not enough bytes to check if we have the boundary
- length += 1
- Chunk.empty
- } else {
- var foundBoundary = true
- var i = 0
- while (i < crlfBoundary.length && foundBoundary) {
- if (buffer(length - i) != crlfBoundary(crlfBoundary.length - 1 - i)) {
- foundBoundary = false
- }
- i += 1
- }
-
- if (foundBoundary) {
- // We have found the boundary
- val preBoundary =
- Chunk.fromArray(Chunk.fromArray(buffer).take(length + 1 - crlfBoundary.length).toArray[Byte])
- length = 0
- Chunk(Take.chunk(preBoundary), Take.end)
- } else {
- // We don't have the boundary
- if (length < (buffer.length - 2)) {
- length += 1
- Chunk.empty
- } else {
- val preBoundary =
- Chunk.fromArray(Chunk.fromArray(buffer).take(length + 1 - crlfBoundary.length).toArray[Byte])
- for (i <- crlfBoundary.indices) {
- buffer(i) = buffer(length + 1 - crlfBoundary.length + i)
- }
- length = crlfBoundary.length
- Chunk(Take.chunk(preBoundary))
- }
- }
+ private def ensureHasCapacity(requiredCapacity: Int): Unit = {
+ @tailrec
+ def calculateNewCapacity(existing: Int, required: Int): Int = {
+ val newCap = existing * 2
+ if (newCap < required) calculateNewCapacity(newCap, required)
+ else newCap
}
- }
- def reset(): Unit = {
- length = 0
+ val l = buffer.length
+ if (l <= requiredCapacity) {
+ val newArray = Array.ofDim[Byte](calculateNewCapacity(l, requiredCapacity))
+ java.lang.System.arraycopy(buffer, 0, newArray, 0, l)
+ buffer = newArray
+ } else ()
}
- }
-
- implicit class ZStreamOps[R, E, A](self: ZStream[R, E, A]) {
- private def mapAccumImmediate[S1, B](
- self: Chunk[A],
- )(s1: S1)(f1: (S1, A) => (S1, Option[B])): (S1, Option[(B, Chunk[A])]) = {
- val iterator = self.chunkIterator
- var index = 0
- var s = s1
- var result: Option[B] = None
- while (iterator.hasNextAt(index) && result.isEmpty) {
- val a = iterator.nextAt(index)
- index += 1
- val tuple = f1(s, a)
- s = tuple._1
- result = tuple._2
+ private def matchesPartialBoundary(idx: Int): Boolean = {
+ val bs = boundarySize
+ var i = 0
+ var result = false
+ while (i < bs && i <= idx && !result) {
+ val i0 = idx - i
+ var i1 = 0
+ while (i >= i1 && buffer(i0 + i1) == crlfBoundary(i1) && !result) {
+ if (i == i1) result = true
+ i1 += 1
+ }
+ i += 1
}
- (s, result.map(b => (b, self.drop(index))))
+ result
}
- /**
- * Statefully maps over the elements of this stream to sometimes produce new
- * elements. Each new element gets immediately emitted regardless of the
- * upstream chunk size.
- */
- def mapAccumImmediate[S, A1](s: => S)(f: (S, A) => (S, Option[A1]))(implicit trace: Trace): ZStream[R, E, A1] =
- ZStream.succeed(s).flatMap { s =>
- def chunkAccumulator(currS: S, in: Chunk[A]): ZChannel[Any, E, Chunk[A], Any, E, Chunk[A1], Unit] =
- mapAccumImmediate(in)(currS)(f) match {
- case (nextS, Some((a1, remaining))) =>
- ZChannel.write(Chunk.single(a1)) *>
- accumulator(nextS, remaining)
- case (nextS, None) =>
- accumulator(nextS, Chunk.empty)
- }
+ def addByte(byte: Byte, isLastByte: Boolean): Chunk[Take[Nothing, Byte]] = {
+ val idx = index
+ ensureHasCapacity(idx + boundarySize + 1)
+ buffer(idx) = byte
+ index += 1
- def accumulator(currS: S, leftovers: Chunk[A]): ZChannel[Any, E, Chunk[A], Any, E, Chunk[A1], Unit] =
- if (leftovers.isEmpty) {
- ZChannel.readWithCause(
- (in: Chunk[A]) => {
- chunkAccumulator(currS, in)
- },
- (err: Cause[E]) => ZChannel.refailCause(err),
- (_: Any) => ZChannel.unit,
- )
- } else {
- chunkAccumulator(currS, leftovers)
- }
+ var i = 0
+ var foundFullBoundary = idx >= boundarySize - 1
+ while (i < boundarySize && foundFullBoundary) {
+ if (buffer(idx + 1 - crlfBoundary.length + i) != crlfBoundary(i)) {
+ foundFullBoundary = false
+ }
+ i += 1
+ }
- ZStream.fromChannel(self.channel >>> accumulator(s, Chunk.empty))
+ if (foundFullBoundary) {
+ reset()
+ val toTake = idx + 1 - boundarySize
+ if (toTake == 0) Chunk(Take.end)
+ else Chunk(Take.chunk(Chunk.fromArray(buffer.take(toTake))), Take.end)
+ } else if (!bufferUpToBoundary && isLastByte && byte != '-' && !matchesPartialBoundary(idx)) {
+ reset()
+ Chunk(Take.chunk(Chunk.fromArray(buffer.take(idx + 1))))
+ } else {
+ Chunk.empty
}
+ }
+
+ def reset(): Unit =
+ index = 0
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/URL.scala b/zio-http/shared/src/main/scala/zio/http/URL.scala
index 0a4a4aecde..bc26378837 100644
--- a/zio-http/shared/src/main/scala/zio/http/URL.scala
+++ b/zio-http/shared/src/main/scala/zio/http/URL.scala
@@ -93,6 +93,8 @@ final case class URL(
hash
}
+ override def toString(): String = encode
+
def host: Option[String] = kind match {
case URL.Location.Relative => None
case abs: URL.Location.Absolute => Option(abs.host)
diff --git a/zio-http/shared/src/main/scala/zio/http/ZClient.scala b/zio-http/shared/src/main/scala/zio/http/ZClient.scala
index a10e613ebf..4a6a3a550a 100644
--- a/zio-http/shared/src/main/scala/zio/http/ZClient.scala
+++ b/zio-http/shared/src/main/scala/zio/http/ZClient.scala
@@ -249,23 +249,6 @@ final case class ZClient[-Env, -In, +Err, +Out](
object ZClient extends ZClientPlatformSpecific {
- val customized: ZLayer[Config with ClientDriver with DnsResolver, Throwable, Client] = {
- implicit val trace: Trace = Trace.empty
- ZLayer.scoped {
- for {
- config <- ZIO.service[Config]
- driver <- ZIO.service[ClientDriver]
- dnsResolver <- ZIO.service[DnsResolver]
- connectionPool <- driver.createConnectionPool(dnsResolver, config.connectionPool)
- baseClient = fromDriver(new DriverLive(driver)(connectionPool)(config))
- } yield
- if (config.addUserAgentHeader)
- baseClient.addHeader(defaultUAHeader)
- else
- baseClient
- }
- }
-
def fromDriver[Env, Err](driver: Driver[Env, Err]): ZClient[Env, Body, Err, Response] =
ZClient(
Version.Default,
@@ -682,26 +665,30 @@ object ZClient extends ZClientPlatformSpecific {
case location: Location.Absolute =>
ZIO.uninterruptibleMask { restore =>
for {
- onComplete <- Promise.make[Throwable, ChannelState]
- onResponse <- Promise.make[Throwable, Response]
+ connectionAcquired <- Ref.make(false)
+ onComplete <- Promise.make[Throwable, ChannelState]
+ onResponse <- Promise.make[Throwable, Response]
inChannelScope = outerScope match {
case Some(scope) => (zio: ZIO[Scope, Throwable, Unit]) => scope.extend(zio)
case None => (zio: ZIO[Scope, Throwable, Unit]) => ZIO.scoped(zio)
}
channelFiber <- inChannelScope {
for {
- connection <- connectionPool
- .get(
- location,
- clientConfig.proxy,
- clientConfig.ssl.getOrElse(ClientSSLConfig.Default),
- clientConfig.maxInitialLineLength,
- clientConfig.maxHeaderSize,
- clientConfig.requestDecompression,
- clientConfig.idleTimeout,
- clientConfig.connectionTimeout,
- clientConfig.localAddress,
- )
+ connection <- restore(
+ connectionPool
+ .get(
+ location,
+ clientConfig.proxy,
+ clientConfig.ssl.getOrElse(ClientSSLConfig.Default),
+ clientConfig.maxInitialLineLength,
+ clientConfig.maxHeaderSize,
+ clientConfig.requestDecompression,
+ clientConfig.idleTimeout,
+ clientConfig.connectionTimeout,
+ clientConfig.localAddress,
+ ),
+ )
+ .zipLeft(connectionAcquired.set(true))
.tapErrorCause(cause => onResponse.failCause(cause))
.map(_.asInstanceOf[driver.Connection])
channelInterface <-
@@ -742,7 +729,9 @@ object ZClient extends ZClientPlatformSpecific {
}.forkDaemon // Needs to live as long as the channel is alive, as the response body may be streaming
_ <- ZIO.addFinalizer(onComplete.interrupt)
response <- restore(onResponse.await.onInterrupt {
- onComplete.interrupt *> channelFiber.join.orDie
+ ZIO.unlessZIO(connectionAcquired.get)(channelFiber.interrupt) *>
+ onComplete.interrupt *>
+ channelFiber.await
})
} yield response
}
diff --git a/zio-http/shared/src/main/scala/zio/http/codec/HttpCodec.scala b/zio-http/shared/src/main/scala/zio/http/codec/HttpCodec.scala
index 7669c069dd..cd5175e70c 100644
--- a/zio-http/shared/src/main/scala/zio/http/codec/HttpCodec.scala
+++ b/zio-http/shared/src/main/scala/zio/http/codec/HttpCodec.scala
@@ -29,7 +29,7 @@ import zio.schema.Schema
import zio.http.Header.Accept.MediaTypeWithQFactor
import zio.http._
import zio.http.codec.HttpCodec.{Annotated, Metadata}
-import zio.http.codec.internal.EncoderDecoder
+import zio.http.codec.internal.{AtomizedCodecs, EncoderDecoder}
/**
* A [[zio.http.codec.HttpCodec]] represents a codec for a part of an HTTP
@@ -48,6 +48,27 @@ sealed trait HttpCodec[-AtomTypes, Value] {
private lazy val encoderDecoder: EncoderDecoder[AtomTypes, Value] = EncoderDecoder(self)
+ private def statusCodecs: Chunk[SimpleCodec[Status, _]] =
+ self.asInstanceOf[HttpCodec[_, _]] match {
+ case HttpCodec.Fallback(left, right, _, _) => left.statusCodecs ++ right.statusCodecs
+ case HttpCodec.Combine(left, right, _) => left.statusCodecs ++ right.statusCodecs
+ case HttpCodec.Annotated(codec, _) => codec.statusCodecs
+ case HttpCodec.TransformOrFail(codec, _, _) => codec.statusCodecs
+ case HttpCodec.Empty => Chunk.empty
+ case HttpCodec.Halt => Chunk.empty
+ case atom: HttpCodec.Atom[_, _] =>
+ atom match {
+ case HttpCodec.Status(codec, _) => Chunk.single(codec)
+ case _ => Chunk.empty
+ }
+ }
+
+ private lazy val statusCodes: Set[Status] = statusCodecs.collect { case SimpleCodec.Specified(status) =>
+ status
+ }.toSet
+
+ private lazy val matchesAnyStatus: Boolean = statusCodecs.contains(SimpleCodec.Unspecified[Status]())
+
/**
* Returns a new codec that is the same as this one, but has attached docs,
* which will render whenever docs are generated from the codec.
@@ -59,6 +80,7 @@ sealed trait HttpCodec[-AtomTypes, Value] {
that: HttpCodec[AtomTypes1, Value2],
)(implicit alternator: Alternator[Value, Value2]): HttpCodec[AtomTypes1, alternator.Out] = {
if (self eq HttpCodec.Halt) that.asInstanceOf[HttpCodec[AtomTypes1, alternator.Out]]
+ else if (that eq HttpCodec.Halt) self.asInstanceOf[HttpCodec[AtomTypes1, alternator.Out]]
else {
HttpCodec
.Fallback(self, that, alternator, HttpCodec.Fallback.Condition.IsHttpCodecError)
@@ -238,6 +260,9 @@ sealed trait HttpCodec[-AtomTypes, Value] {
else Left(s"Expected ${expected} but found ${actual}"),
)(_ => expected)
+ private[http] def matchesStatus(status: Status) =
+ matchesAnyStatus || statusCodes.contains(status)
+
def named(name: String): HttpCodec[AtomTypes, Value] =
HttpCodec.Annotated(self, Metadata.Named(name))
@@ -627,6 +652,19 @@ object HttpCodec extends ContentCodecs with HeaderCodecs with MethodCodecs with
case Metadata.Documented(doc) => Metadata.Documented(doc)
case Metadata.Deprecated(doc) => Metadata.Deprecated(doc)
}
+
+ def transformOrFail[Value2](f: Value => Either[String, Value2]): Metadata[Value2] =
+ this match {
+ case Metadata.Named(name) => Metadata.Named(name)
+ case Metadata.Optional() => Metadata.Optional()
+ case Metadata.Examples(ex) =>
+ Metadata.Examples(ex.collect {
+ case (k, v) if f(v).isRight =>
+ k -> f(v).toOption.get
+ })
+ case Metadata.Documented(doc) => Metadata.Documented(doc)
+ case Metadata.Deprecated(doc) => Metadata.Deprecated(doc)
+ }
}
object Metadata {
diff --git a/zio-http/shared/src/main/scala/zio/http/codec/HttpContentCodec.scala b/zio-http/shared/src/main/scala/zio/http/codec/HttpContentCodec.scala
index f654b493cc..88eeac74cf 100644
--- a/zio-http/shared/src/main/scala/zio/http/codec/HttpContentCodec.scala
+++ b/zio-http/shared/src/main/scala/zio/http/codec/HttpContentCodec.scala
@@ -284,7 +284,9 @@ object HttpContentCodec {
def only[A](implicit schema: Schema[A]): HttpContentCodec[A] = {
HttpContentCodec(
ListMap(
- MediaType.text.`plain` ->
+ MediaType.text.`plain` ->
+ BinaryCodecWithSchema(zio.http.codec.internal.TextBinaryCodec.fromSchema[A](schema), schema),
+ MediaType.application.`octet-stream` ->
BinaryCodecWithSchema(zio.http.codec.internal.TextBinaryCodec.fromSchema[A](schema), schema),
),
)
diff --git a/zio-http/shared/src/main/scala/zio/http/codec/PathCodec.scala b/zio-http/shared/src/main/scala/zio/http/codec/PathCodec.scala
index 765ddb371b..9df735cecb 100644
--- a/zio-http/shared/src/main/scala/zio/http/codec/PathCodec.scala
+++ b/zio-http/shared/src/main/scala/zio/http/codec/PathCodec.scala
@@ -16,7 +16,9 @@
package zio.http.codec
+import scala.annotation.tailrec
import scala.collection.immutable.ListMap
+import scala.collection.mutable
import scala.language.implicitConversions
import zio._
@@ -61,6 +63,58 @@ sealed trait PathCodec[A] { self =>
}
}
+ private[http] def orElse(value: PathCodec[Unit])(implicit ev: A =:= Unit): PathCodec[Unit] =
+ Fallback(self.asInstanceOf[PathCodec[Unit]], value)
+
+ private def fallbackAlternatives(f: Fallback[_]): List[PathCodec[Any]] = {
+ @tailrec
+ def loop(codecs: List[PathCodec[_]], result: List[PathCodec[_]]): List[PathCodec[_]] =
+ if (codecs.isEmpty) result
+ else
+ codecs.head match {
+ case PathCodec.Annotated(codec, _) =>
+ loop(codec :: codecs.tail, result)
+ case PathCodec.Segment(SegmentCodec.Literal(_)) =>
+ loop(codecs.tail, result :+ codecs.head)
+ case PathCodec.Segment(SegmentCodec.Empty) =>
+ loop(codecs.tail, result)
+ case Fallback(left, right) =>
+ loop(left :: right :: codecs.tail, result)
+ case other =>
+ throw new IllegalStateException(s"Alternative path segments should only contain literals, found: $other")
+ }
+ loop(List(f.left, f.right), List.empty).asInstanceOf[List[PathCodec[Any]]]
+ }
+
+ final def alternatives: List[PathCodec[A]] = {
+ var alts = List.empty[PathCodec[Any]]
+ def loop(codec: PathCodec[_], combiner: Combiner[_, _]): Unit = codec match {
+ case Concat(left, right, combiner) =>
+ loop(left, combiner)
+ loop(right, combiner)
+ case f: Fallback[_] =>
+ if (alts.isEmpty) alts = fallbackAlternatives(f)
+ else
+ alts ++= alts.flatMap { alt =>
+ fallbackAlternatives(f).map(fa =>
+ Concat(alt, fa.asInstanceOf[PathCodec[Any]], combiner.asInstanceOf[Combiner.WithOut[Any, Any, Any]]),
+ )
+ }
+ case Segment(SegmentCodec.Empty) =>
+ alts :+= codec.asInstanceOf[PathCodec[Any]]
+ case pc =>
+ if (alts.isEmpty) alts :+= pc.asInstanceOf[PathCodec[Any]]
+ else
+ alts = alts
+ .map(l =>
+ Concat(l, pc.asInstanceOf[PathCodec[Any]], combiner.asInstanceOf[Combiner.WithOut[Any, Any, Any]])
+ .asInstanceOf[PathCodec[Any]],
+ )
+ }
+ loop(self, Combiner.leftUnit[Unit])
+ alts.asInstanceOf[List[PathCodec[A]]]
+ }
+
final def asType[B](implicit ev: A =:= B): PathCodec[B] = self.asInstanceOf[PathCodec[B]]
/**
@@ -84,7 +138,7 @@ sealed trait PathCodec[A] { self =>
val opt = instructions(i)
opt match {
- case Match(value) =>
+ case Match(value) =>
if (j >= segments.length || segments(j) != value) {
fail = "Expected path segment \"" + value + "\" but found end of path"
i = instructions.length
@@ -92,6 +146,14 @@ sealed trait PathCodec[A] { self =>
stack.push(())
j = j + 1
}
+ case MatchAny(values) =>
+ if (j >= segments.length || !values.contains(segments(j))) {
+ fail = "Expected one of the following path segments: " + values.mkString(", ") + " but found end of path"
+ i = instructions.length
+ } else {
+ stack.push(())
+ j = j + 1
+ }
case Combine(combiner0) =>
val combiner = combiner0.asInstanceOf[Combiner[Any, Any]]
@@ -148,7 +210,7 @@ sealed trait PathCodec[A] { self =>
val segment = segments(j)
j = j + 1
try {
- stack.push(java.util.UUID.fromString(segment.toString))
+ stack.push(java.util.UUID.fromString(segment))
} catch {
case _: IllegalArgumentException =>
fail = s"Expected UUID path segment but found ${segment}"
@@ -164,9 +226,9 @@ sealed trait PathCodec[A] { self =>
val segment = segments(j)
j = j + 1
- if (segment == "true") {
+ if (segment.equalsIgnoreCase("true")) {
stack.push(true)
- } else if (segment == "false") {
+ } else if (segment.equalsIgnoreCase("false")) {
stack.push(false)
} else {
fail = s"Expected boolean path segment but found ${segment}"
@@ -202,6 +264,15 @@ sealed trait PathCodec[A] { self =>
case Right(value) =>
stack.push(value)
}
+
+ case SubSegmentOpts(ops) =>
+ val error = decodeSubstring(segments(j), ops, stack)
+ if (error != null) {
+ fail = error
+ i = instructions.length
+ } else {
+ j += 1
+ }
}
i = i + 1
@@ -217,6 +288,163 @@ sealed trait PathCodec[A] { self =>
}
}
+ private def decodeSubstring(
+ value: String,
+ instructions: Array[Opt],
+ stack: java.util.Deque[Any],
+ ): String = {
+ import Opt._
+
+ var i = 0
+ var j = 0
+ val size = value.length
+ while (i < instructions.length) {
+ val opt = instructions(i)
+ opt match {
+ case Match(toMatch) =>
+ val size0 = toMatch.length
+ if ((size - j) < size0) {
+ return "Expected \"" + toMatch + "\" in segment " + value + " but found end of segment"
+ } else if (value.startsWith(toMatch, j)) {
+ stack.push(())
+ j += size0
+ } else {
+ return "Expected \"" + toMatch + "\" in segment " + value + " but found: " + value.substring(j)
+ }
+ case Combine(combiner0) =>
+ val combiner = combiner0.asInstanceOf[Combiner[Any, Any]]
+ val right = stack.pop()
+ val left = stack.pop()
+ stack.push(combiner.combine(left, right))
+ case StringOpt =>
+ // Here things get "interesting" (aka annoying). We don't have a way of knowing when a string ends,
+ // so we have to look ahead to the next operator and figure out where it begins
+ val end = indexOfNextCodec(value, instructions, i, j)
+ if (end == -1) { // If this wasn't the last codec, let the error handler of the next codec handle this
+ stack.push(value.substring(j))
+ j = size
+ } else {
+ stack.push(value.substring(j, end))
+ j = end
+ }
+ case IntOpt =>
+ val isNegative = value(j) == '-'
+ if (isNegative) j += 1
+ var end = j
+ while (end < size && value(end).isDigit) end += 1
+ if (end == j) {
+ return "Expected integer path segment but found end of segment"
+ } else if (end - j > 10) {
+ return "Expected integer path segment but found: " + value.substring(j, end)
+ } else {
+
+ try {
+ val int = Integer.parseInt(value, j, end, 10)
+ j = end
+ if (isNegative) stack.push(-int) else stack.push(int)
+ } catch {
+ case _: NumberFormatException =>
+ return "Expected integer path segment but found: " + value.substring(j, end)
+ }
+ }
+ case LongOpt =>
+ val isNegative = value(j) == '-'
+ if (isNegative) j += 1
+ var end = j
+ while (end < size && value(end).isDigit) end += 1
+ if (end == j) {
+ return "Expected long path segment but found end of segment"
+ } else if (end - j > 19) {
+ return "Expected long path segment but found: " + value.substring(j, end)
+ } else {
+ try {
+ val long = java.lang.Long.parseLong(value, j, end, 10)
+ j = end
+ if (isNegative) stack.push(-long) else stack.push(long)
+ } catch {
+ case _: NumberFormatException => return "Expected long path segment but found: " + value.substring(j, end)
+ }
+ }
+ case UUIDOpt =>
+ if ((size - j) < 36) {
+ return "Remaining path segment " + value.substring(j) + " is too short to be a UUID"
+ } else {
+ val sub = value.substring(j, j + 36)
+ try {
+ stack.push(java.util.UUID.fromString(sub))
+ } catch {
+ case _: IllegalArgumentException => return "Expected UUID path segment but found: " + sub
+ }
+ j += 36
+ }
+ case BoolOpt =>
+ if (value.regionMatches(true, j, "true", 0, 4)) {
+ stack.push(true)
+ j += 4
+ } else if (value.regionMatches(true, j, "false", 0, 5)) {
+ stack.push(false)
+ j += 5
+ } else {
+ return "Expected boolean path segment but found end of segment"
+ }
+ case TrailingOpt =>
+ // TrailingOpt must be invalid, since it wants to extract a path,
+ // which is not possible in a sub part of a segment.
+ // The equivalent of trailing here is just StringOpt
+ throw new IllegalStateException("TrailingOpt is not allowed in a sub segment")
+ case _ =>
+ throw new IllegalStateException("Unexpected instruction in substring decoder")
+ }
+ i += 1
+ }
+ if (j != size) "Expected end of segment but found: " + value.substring(j)
+ else null
+ }
+
+ private def indexOfNextCodec(value: String, instructions: Array[Opt], fromI: Int, idx: Int): Int = {
+ import Opt._
+
+ var nextOpt = null.asInstanceOf[Opt]
+ var j1 = fromI + 1
+
+ while ((nextOpt eq null) && j1 < instructions.length) {
+ instructions(j1) match {
+ case op @ (Match(_) | IntOpt | LongOpt | UUIDOpt | BoolOpt) =>
+ nextOpt = op
+ case _ =>
+ j1 += 1
+ }
+ }
+
+ nextOpt match {
+ case null =>
+ -1
+ case Match(toMatch) =>
+ if (idx + toMatch.length > value.length) -1
+ else if (toMatch.length == 1) value.indexOf(toMatch.charAt(0).toInt, idx)
+ else value.indexOf(toMatch, idx)
+ case IntOpt | LongOpt =>
+ value.indexWhere(_.isDigit, idx)
+ case BoolOpt =>
+ val t = value.regionMatches(true, idx, "true", 0, 4)
+ if (t) idx + 4 else if (value.regionMatches(true, idx, "false", 0, 5)) idx + 5 else -1
+ case UUIDOpt =>
+ val until = SegmentCodec.UUID.isUUIDUntil(value, idx)
+ if (until == -1) -1 else idx + until
+ case MatchAny(values) =>
+ var end = -1
+ val valuesIt = values.iterator
+ while (valuesIt.hasNext && end == -1) {
+ val value = valuesIt.next()
+ val index = value.indexOf(value, idx)
+ if (index != -1) end = index
+ }
+ end
+ case _ =>
+ throw new IllegalStateException("Unexpected instruction in substring decoder: " + nextOpt)
+ }
+ }
+
/**
* Returns the documentation for the path codec, if any.
*/
@@ -227,6 +455,7 @@ sealed trait PathCodec[A] { self =>
case Concat(left, right, _) => left.doc + right.doc
case Annotated(codec, annotations) =>
codec.doc + annotations.collectFirst { case MetaData.Documented(doc) => doc }.getOrElse(Doc.empty)
+ case Fallback(left, right) => left.doc + right.doc
}
/**
@@ -264,6 +493,8 @@ sealed trait PathCodec[A] { self =>
case PathCodec.TransformOrFail(api, _, g) =>
g.asInstanceOf[Any => Either[String, Any]](value).flatMap(loop(api, _))
+ case Fallback(left, _) =>
+ loop(left, value)
}
loop(self, value).map { path =>
@@ -282,54 +513,102 @@ sealed trait PathCodec[A] { self =>
private var _optimize: Array[Opt] = null.asInstanceOf[Array[Opt]]
private[http] def optimize: Array[Opt] = {
- def loop(pattern: PathCodec[_]): Chunk[Opt] =
+
+ def loopSegment(segment: SegmentCodec[_], fresh: Boolean)(implicit b: mutable.ArrayBuilder[Opt]): Unit =
+ segment match {
+ case SegmentCodec.Empty => b += Opt.Unit
+ case SegmentCodec.Literal(value) => b += Opt.Match(value)
+ case SegmentCodec.IntSeg(_) => b += Opt.IntOpt
+ case SegmentCodec.LongSeg(_) => b += Opt.LongOpt
+ case SegmentCodec.Text(_) => b += Opt.StringOpt
+ case SegmentCodec.UUID(_) => b += Opt.UUIDOpt
+ case SegmentCodec.BoolSeg(_) => b += Opt.BoolOpt
+ case SegmentCodec.Trailing => b += Opt.TrailingOpt
+ case SegmentCodec.Combined(left, right, combiner) =>
+ val ab = if (fresh) mutable.ArrayBuilder.make[Opt] else b
+ loopSegment(left, fresh = false)(ab)
+ loopSegment(right, fresh = false)(ab)
+ ab += Opt.Combine(combiner)
+ if (fresh) b += Opt.SubSegmentOpts(ab.result().asInstanceOf[Array[Opt]])
+ }
+
+ def loop(pattern: PathCodec[_])(implicit b: mutable.ArrayBuilder[Opt]): Unit =
pattern match {
case PathCodec.Annotated(codec, _) =>
loop(codec)
case PathCodec.Segment(segment) =>
- Chunk(segment.asInstanceOf[SegmentCodec[_]] match {
- case SegmentCodec.Empty => Opt.Unit
- case SegmentCodec.Literal(value) => Opt.Match(value)
- case SegmentCodec.IntSeg(_) => Opt.IntOpt
- case SegmentCodec.LongSeg(_) => Opt.LongOpt
- case SegmentCodec.Text(_) => Opt.StringOpt
- case SegmentCodec.UUID(_) => Opt.UUIDOpt
- case SegmentCodec.BoolSeg(_) => Opt.BoolOpt
- case SegmentCodec.Trailing => Opt.TrailingOpt
- })
-
+ loopSegment(segment, fresh = true)
+ case f: Fallback[_] =>
+ b += Opt.MatchAny(fallbacks(f))
case Concat(left, right, combiner) =>
- loop(left) ++ loop(right) ++ Chunk(Opt.Combine(combiner))
-
- case TransformOrFail(api, f, _) =>
- loop(api) :+ Opt.MapOrFail(f.asInstanceOf[Any => Either[String, Any]])
+ loop(left)
+ loop(right)
+ b += Opt.Combine(combiner)
+ case TransformOrFail(api, f, _) =>
+ loop(api)
+ b += Opt.MapOrFail(f.asInstanceOf[Any => Either[String, Any]])
}
- if (_optimize eq null) _optimize = loop(self).toArray
+ if (_optimize eq null) {
+ val b: mutable.ArrayBuilder[Opt] = mutable.ArrayBuilder.make[Opt]
+ loop(self)(b)
+ _optimize = b.result()
+ }
_optimize
}
+ private def fallbacks(f: Fallback[_]): Set[String] = {
+ @tailrec
+ def loop(codecs: List[PathCodec[_]], result: Set[String]): Set[String] =
+ if (codecs.isEmpty) result
+ else
+ codecs.head match {
+ case PathCodec.Annotated(codec, _) =>
+ loop(codec :: codecs.tail, result)
+ case PathCodec.Segment(SegmentCodec.Literal(value)) =>
+ loop(codecs.tail, result + value)
+ case PathCodec.Segment(SegmentCodec.Empty) =>
+ loop(codecs.tail, result)
+ case Fallback(left, right) =>
+ loop(left :: right :: codecs.tail, result)
+ case other =>
+ throw new IllegalStateException(s"Alternative path segments should only contain literals, found: $other")
+ }
+ loop(List(f.left, f.right), Set.empty)
+ }
+
/**
* Renders the path codec as a string.
*/
- def render: String = {
+ def render: String =
+ render("{", "}")
+
+ /**
+ * Renders the path codec as a string. Surrounds the path variables with the
+ * specified prefix and suffix.
+ */
+ def render(prefix: String, suffix: String): String = {
def loop(path: PathCodec[_]): String = path match {
- case PathCodec.Annotated(codec, _) =>
+ case PathCodec.Annotated(codec, _) =>
loop(codec)
- case PathCodec.Concat(left, right, _) =>
+ case PathCodec.Concat(left, right, _) =>
loop(left) + loop(right)
-
- case PathCodec.Segment(segment) => segment.render
-
+ case PathCodec.Segment(segment) =>
+ segment.render(prefix, suffix)
case PathCodec.TransformOrFail(api, _, _) =>
loop(api)
+ case PathCodec.Fallback(left, _) =>
+ loop(left)
}
loop(self)
}
- private[zio] def renderIgnoreTrailing: String = {
+ private[zio] def renderIgnoreTrailing: String =
+ renderIgnoreTrailing("{", "}")
+
+ private[zio] def renderIgnoreTrailing(prefix: String, suffix: String): String = {
def loop(path: PathCodec[_]): String = path match {
case PathCodec.Annotated(codec, _) =>
loop(codec)
@@ -338,9 +617,11 @@ sealed trait PathCodec[A] { self =>
case PathCodec.Segment(SegmentCodec.Trailing) => ""
- case PathCodec.Segment(segment) => segment.render
+ case PathCodec.Segment(segment) => segment.render(prefix, suffix)
case PathCodec.TransformOrFail(api, _, _) => loop(api)
+
+ case PathCodec.Fallback(left, _) => loop(left)
}
loop(self)
@@ -360,6 +641,9 @@ sealed trait PathCodec[A] { self =>
case PathCodec.TransformOrFail(api, _, _) =>
loop(api)
+
+ case PathCodec.Fallback(left, _) =>
+ loop(left)
}
loop(self)
@@ -412,12 +696,16 @@ object PathCodec {
implicit def path(value: String): PathCodec[Unit] = apply(value)
+ implicit def segment[A](codec: SegmentCodec[A]): PathCodec[A] = Segment(codec)
+
def string(name: String): PathCodec[String] = Segment(SegmentCodec.string(name))
def trailing: PathCodec[Path] = Segment(SegmentCodec.Trailing)
def uuid(name: String): PathCodec[java.util.UUID] = Segment(SegmentCodec.uuid(name))
+ private[http] final case class Fallback[A](left: PathCodec[Unit], right: PathCodec[Unit]) extends PathCodec[A]
+
private[http] final case class Segment[A](segment: SegmentCodec[A]) extends PathCodec[A]
private[http] final case class Concat[A, B, C](
@@ -458,6 +746,7 @@ object PathCodec {
private[http] sealed trait Opt
private[http] object Opt {
final case class Match(value: String) extends Opt
+ final case class MatchAny(values: Set[String]) extends Opt
final case class Combine(combiner: Combiner[_, _]) extends Opt
case object IntOpt extends Opt
case object LongOpt extends Opt
@@ -466,6 +755,7 @@ object PathCodec {
case object BoolOpt extends Opt
case object TrailingOpt extends Opt
case object Unit extends Opt
+ final case class SubSegmentOpts(ops: Array[Opt]) extends Opt
final case class MapOrFail(f: Any => Either[String, Any]) extends Opt
}
@@ -485,13 +775,17 @@ object PathCodec {
def add[A1 >: A](segments: Iterable[SegmentCodec[_]], value: A1): SegmentSubtree[A1] =
self ++ SegmentSubtree.single(segments, value)
- def get(path: Path): Chunk[A] = {
- val segments = path.segments
- var subtree = self
- var result = subtree.value
- var i = 0
+ def get(path: Path): Chunk[A] =
+ get(path, 0)
- while (i < segments.length) {
+ private def get(path: Path, from: Int): Chunk[A] = {
+ val segments = path.segments
+ val nSegments = segments.length
+ var subtree = self
+ var result = subtree.value
+ var i = from
+
+ while (i < nSegments) {
val segment = segments(i)
if (subtree.literals.contains(segment)) {
@@ -499,31 +793,63 @@ object PathCodec {
subtree = subtree.literals(segment)
result = subtree.value
- i = i + 1
+ i += 1
} else {
- // Slower fallback path. Have to evaluate all predicates at this node:
val flattened = subtree.othersFlat
- var index = 0
subtree = null
-
- while ((index < flattened.length) && (subtree eq null)) {
- val tuple = flattened(index)
- val matched = tuple._1.matches(segments, i)
-
- if (matched >= 0) {
- subtree = tuple._2
- result = subtree.value
- i = i + matched
- } else {
- // No match found. Keep looking at alternate routes:
- index += 1
- }
+ flattened.length match {
+ case 0 => // No predicates to evaluate
+ case 1 => // Only 1 predicate to evaluate (most common)
+ val (codec, subtree0) = flattened(0)
+ val matched = codec.matches(segments, i)
+ if (matched > 0) {
+ subtree = subtree0
+ result = subtree0.value
+ i += matched
+ }
+ case n => // Slowest fallback path. Have to to find the first predicate where the subpath returns a result
+ val matches = Array.ofDim[Int](n)
+ var index = 0
+ var nPositive = 0
+ var lastPositiveIdx = -1
+ while (index < n) {
+ val (codec, _) = flattened(index)
+ val n = codec.matches(segments, i)
+ if (n > 0) {
+ matches(index) = n
+ nPositive += 1
+ lastPositiveIdx = index
+ }
+ index += 1
+ }
+
+ nPositive match {
+ case 0 => ()
+ case 1 =>
+ subtree = flattened(lastPositiveIdx)._2
+ result = subtree.value
+ i += matches(lastPositiveIdx)
+ case _ =>
+ index = 0
+ while (index < n && (subtree eq null)) {
+ val matched = matches(index)
+ if (matched > 0) {
+ val (_, subtree0) = flattened(index)
+ if (subtree0.get(path, i + matched).nonEmpty) {
+ subtree = subtree0
+ result = subtree.value
+ i += matched
+ }
+ }
+ index += 1
+ }
+ }
}
if (subtree eq null) {
result = Chunk.empty
- i = segments.length
+ i = nSegments
}
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/codec/SegmentCodec.scala b/zio-http/shared/src/main/scala/zio/http/codec/SegmentCodec.scala
index a895610bd0..d5e17bedd8 100644
--- a/zio-http/shared/src/main/scala/zio/http/codec/SegmentCodec.scala
+++ b/zio-http/shared/src/main/scala/zio/http/codec/SegmentCodec.scala
@@ -15,11 +15,15 @@
*/
package zio.http.codec
+import scala.annotation.implicitNotFound
import scala.language.implicitConversions
import zio.Chunk
import zio.http.Path
+import zio.http.codec.Combiner.WithOut
+import zio.http.codec.PathCodec.MetaData
+import zio.http.codec.SegmentCodec._
sealed trait SegmentCodec[A] { self =>
private var _hashCode: Int = 0
@@ -32,6 +36,12 @@ sealed trait SegmentCodec[A] { self =>
case _ => false
}
+ final def example(name: String, example: A): PathCodec[A] =
+ PathCodec.segment(self).annotate(MetaData.Examples(Map(name -> example)))
+
+ final def examples(examples: (String, A)*): PathCodec[A] =
+ PathCodec.segment(self).annotate(MetaData.Examples(examples.toMap))
+
def format(value: A): Path
override val hashCode: Int = {
@@ -44,25 +54,69 @@ sealed trait SegmentCodec[A] { self =>
case _ => false
}
+ final def ??(doc: Doc): PathCodec[A] = PathCodec.Segment(self).??(doc)
+
+ final def ~[B](
+ that: SegmentCodec[B],
+ )(implicit combiner: Combiner[A, B], combinable: Combinable[B, SegmentCodec[B]]): SegmentCodec[combiner.Out] =
+ combinable.combine(self, that)
+
+ final def ~(that: String)(implicit combiner: Combiner[A, Unit]): SegmentCodec[combiner.Out] =
+ self.~(SegmentCodec.literal(that))(combiner, Combinable.combinableLiteral)
+
// Returns number of segments matched, or -1 if not matched:
def matches(segments: Chunk[String], index: Int): Int
+ // Returns the last index of the subsegment matched, or -1 if not matched
+ def inSegmentUntil(segment: String, from: Int): Int
+
final def nonEmpty: Boolean = !isEmpty
final def render: String = {
- if (_render == "") _render = self.asInstanceOf[SegmentCodec[_]] match {
- case _: SegmentCodec.Empty.type => s""
- case SegmentCodec.Literal(value) => s"/$value"
- case SegmentCodec.IntSeg(name) => s"/{$name}"
- case SegmentCodec.LongSeg(name) => s"/{$name}"
- case SegmentCodec.Text(name) => s"/{$name}"
- case SegmentCodec.BoolSeg(name) => s"/{$name}"
- case SegmentCodec.UUID(name) => s"/{$name}"
- case _: SegmentCodec.Trailing.type => s"/..."
- }
+ if (_render == "") _render = render("{", "}")
_render
}
+ final def render(prefix: String, suffix: String): String = {
+ val b = new StringBuilder
+
+ def loop(s: SegmentCodec[_]): Unit = {
+ s match {
+ case _: SegmentCodec.Empty.type => ()
+ case SegmentCodec.Literal(value) =>
+ b.appendAll(value)
+ case SegmentCodec.IntSeg(name) =>
+ b.appendAll(prefix)
+ b.appendAll(name)
+ b.appendAll(suffix)
+ case SegmentCodec.LongSeg(name) =>
+ b.appendAll(prefix)
+ b.appendAll(name)
+ b.appendAll(suffix)
+ case SegmentCodec.Text(name) =>
+ b.appendAll(prefix)
+ b.appendAll(name)
+ b.appendAll(suffix)
+ case SegmentCodec.BoolSeg(name) =>
+ b.appendAll(prefix)
+ b.appendAll(name)
+ b.appendAll(suffix)
+ case SegmentCodec.UUID(name) =>
+ b.appendAll(prefix)
+ b.appendAll(name)
+ b.appendAll(suffix)
+ case SegmentCodec.Combined(left, right, _) =>
+ loop(left)
+ loop(right)
+ case _: SegmentCodec.Trailing.type =>
+ b.appendAll("...")
+ }
+ }
+ if (self ne SegmentCodec.Empty) b.append('/')
+ loop(self.asInstanceOf[SegmentCodec[_]])
+ b.result()
+ }
+
final def transform[A2](f: A => A2)(g: A2 => A): PathCodec[A2] =
PathCodec.Segment(self).transform(f)(g)
@@ -76,6 +130,179 @@ sealed trait SegmentCodec[A] { self =>
PathCodec.Segment(self).transformOrFailRight(f)(g)
}
object SegmentCodec {
+
+ @implicitNotFound("Segments of type ${B} cannot be appended to a multi-value segment")
+ sealed trait Combinable[B, S <: SegmentCodec[B]] {
+ def combine[A](self: SegmentCodec[A], that: SegmentCodec[B])(implicit
+ combiner: Combiner[A, B],
+ ): SegmentCodec[combiner.Out]
+ }
+ private[codec] object Combinable {
+
+ implicit val combinableString: Combinable[String, SegmentCodec[String]] =
+ new Combinable[String, SegmentCodec[String]] {
+ override def combine[A](self: SegmentCodec[A], that: SegmentCodec[String])(implicit
+ combiner: Combiner[A, String],
+ ): SegmentCodec[combiner.Out] = {
+ self match {
+ case SegmentCodec.Empty => that.asInstanceOf[SegmentCodec[combiner.Out]]
+ case SegmentCodec.Text(name) =>
+ throw new IllegalArgumentException(
+ "Cannot combine two string segments. Their names are " + name + " and " + that
+ .asInstanceOf[SegmentCodec.Text]
+ .name,
+ )
+ case c: SegmentCodec.Combined[_, _, _] =>
+ val last = c.flattened.last
+ last match {
+ case text: SegmentCodec.Text =>
+ throw new IllegalArgumentException(
+ "Cannot combine two string segments. Their names are" + text.name + " and " + that
+ .asInstanceOf[Text]
+ .name,
+ )
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[WithOut[A, String, combiner.Out]])
+ }
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, String, combiner.Out]])
+ }
+ }
+ }
+ implicit val combinableInt: Combinable[Int, SegmentCodec[Int]] =
+ new Combinable[Int, SegmentCodec[Int]] {
+ override def combine[A](self: SegmentCodec[A], that: SegmentCodec[Int])(implicit
+ combiner: Combiner[A, Int],
+ ): SegmentCodec[combiner.Out] = {
+ self match {
+ case SegmentCodec.Empty => that.asInstanceOf[SegmentCodec[combiner.Out]]
+ case SegmentCodec.IntSeg(name) =>
+ throw new IllegalArgumentException(
+ "Cannot combine two numeric segments. Their names are " + name + " and " + that
+ .asInstanceOf[SegmentCodec.IntSeg]
+ .name,
+ )
+ case SegmentCodec.LongSeg(name) =>
+ throw new IllegalArgumentException(
+ "Cannot combine two numeric segments. Their names are " + name + " and " + that
+ .asInstanceOf[SegmentCodec.IntSeg]
+ .name,
+ )
+ case c: SegmentCodec.Combined[_, _, _] =>
+ val last = c.flattened.last
+ if (last.isInstanceOf[SegmentCodec.IntSeg] || last.isInstanceOf[SegmentCodec.LongSeg]) {
+ val lastName =
+ last match {
+ case SegmentCodec.IntSeg(name) => name
+ case SegmentCodec.LongSeg(name) => name
+ case _ => ""
+ }
+ throw new IllegalArgumentException(
+ "Cannot combine two numeric segments. Their names are " + lastName + " and " + that
+ .asInstanceOf[SegmentCodec.IntSeg]
+ .name,
+ )
+ } else {
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, Int, combiner.Out]])
+ }
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, Int, combiner.Out]])
+ }
+ }
+ }
+ implicit val combinableLong: Combinable[Long, SegmentCodec[Long]] =
+ new Combinable[Long, SegmentCodec[Long]] {
+ override def combine[A](self: SegmentCodec[A], that: SegmentCodec[Long])(implicit
+ combiner: Combiner[A, Long],
+ ): SegmentCodec[combiner.Out] = {
+ self match {
+ case SegmentCodec.Empty => that.asInstanceOf[SegmentCodec[combiner.Out]]
+ case SegmentCodec.IntSeg(name) =>
+ throw new IllegalArgumentException(
+ "Cannot combine two numeric segments. Their names are " + name + " and " + that
+ .asInstanceOf[SegmentCodec.LongSeg]
+ .name,
+ )
+ case SegmentCodec.LongSeg(name) =>
+ throw new IllegalArgumentException(
+ "Cannot combine two numeric segments. Their names are " + name + " and " + that
+ .asInstanceOf[SegmentCodec.LongSeg]
+ .name,
+ )
+ case c: SegmentCodec.Combined[_, _, _] =>
+ val last = c.flattened.last
+ if (last.isInstanceOf[SegmentCodec.IntSeg] || last.isInstanceOf[SegmentCodec.LongSeg]) {
+ val lastName =
+ last match {
+ case SegmentCodec.IntSeg(name) => name
+ case SegmentCodec.LongSeg(name) => name
+ case _ => ""
+ }
+ throw new IllegalArgumentException(
+ "Cannot combine two numeric segments. Their names are " + lastName + " and " + that
+ .asInstanceOf[SegmentCodec.LongSeg]
+ .name,
+ )
+ } else {
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, Long, combiner.Out]])
+ }
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, Long, combiner.Out]])
+ }
+ }
+ }
+ implicit val combinableBool: Combinable[Boolean, SegmentCodec[Boolean]] =
+ new Combinable[Boolean, SegmentCodec[Boolean]] {
+ override def combine[A](self: SegmentCodec[A], that: SegmentCodec[Boolean])(implicit
+ combiner: Combiner[A, Boolean],
+ ): SegmentCodec[combiner.Out] = {
+ self match {
+ case SegmentCodec.Empty => that.asInstanceOf[SegmentCodec[combiner.Out]]
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, Boolean, combiner.Out]])
+ }
+ }
+ }
+ implicit val combinableUUID: Combinable[UUID, SegmentCodec[UUID]] =
+ new Combinable[UUID, SegmentCodec[UUID]] {
+ override def combine[A](self: SegmentCodec[A], that: SegmentCodec[UUID])(implicit
+ combiner: Combiner[A, UUID],
+ ): SegmentCodec[combiner.Out] = {
+ self match {
+ case SegmentCodec.Empty => that.asInstanceOf[SegmentCodec[combiner.Out]]
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, UUID, combiner.Out]])
+ }
+ }
+ }
+ implicit val combinableLiteral: Combinable[Unit, SegmentCodec[Unit]] =
+ new Combinable[Unit, SegmentCodec[Unit]] {
+ override def combine[A](self: SegmentCodec[A], that: SegmentCodec[Unit])(implicit
+ combiner: Combiner[A, Unit],
+ ): SegmentCodec[combiner.Out] = {
+ self match {
+ case SegmentCodec.Empty => that.asInstanceOf[SegmentCodec[combiner.Out]]
+ case SegmentCodec.Literal(value) =>
+ SegmentCodec
+ .Literal(value + that.asInstanceOf[SegmentCodec.Literal].value)
+ .asInstanceOf[SegmentCodec[combiner.Out]]
+ case SegmentCodec.Combined(l, r, c) if r.isInstanceOf[SegmentCodec.Literal] =>
+ SegmentCodec
+ .Combined(
+ l.asInstanceOf[SegmentCodec[Any]],
+ SegmentCodec
+ .Literal(r.asInstanceOf[SegmentCodec.Literal].value + that.asInstanceOf[SegmentCodec.Literal].value)
+ .asInstanceOf[SegmentCodec[Any]],
+ c.asInstanceOf[Combiner.WithOut[Any, Any, Any]],
+ )
+ .asInstanceOf[SegmentCodec[combiner.Out]]
+ case _ =>
+ SegmentCodec.Combined(self, that, combiner.asInstanceOf[Combiner.WithOut[A, Unit, combiner.Out]])
+ }
+ }
+ }
+ }
+
def bool(name: String): SegmentCodec[Boolean] = SegmentCodec.BoolSeg(name)
val empty: SegmentCodec[Unit] = SegmentCodec.Empty
@@ -98,6 +325,9 @@ object SegmentCodec {
def format(unit: Unit): Path = Path(s"")
def matches(segments: Chunk[String], index: Int): Int = 0
+
+ override def inSegmentUntil(segment: String, from: Int): Int = from
+
}
private[http] final case class Literal(value: String) extends SegmentCodec[Unit] {
@@ -109,7 +339,13 @@ object SegmentCodec {
else if (value == segments(index)) 1
else -1
}
+
+ override def inSegmentUntil(segment: String, from: Int): Int =
+ if (segment.startsWith(value, from)) from + value.length
+ else -1
+
}
+
private[http] final case class BoolSeg(name: String) extends SegmentCodec[Boolean] {
def format(value: Boolean): Path = Path(s"/$value")
@@ -121,29 +357,41 @@ object SegmentCodec {
if (segment == "true" || segment == "false") 1 else -1
}
+
+ override def inSegmentUntil(segment: String, from: Int): Int =
+ if (segment.startsWith("true", from)) from + 4
+ else if (segment.startsWith("false", from)) from + 5
+ else -1
+
}
+
private[http] final case class IntSeg(name: String) extends SegmentCodec[Int] {
def format(value: Int): Path = Path(s"/$value")
- def matches(segments: Chunk[String], index: Int): Int = {
+ def matches(segments: Chunk[String], index: Int): Int =
if (index < 0 || index >= segments.length) -1
else {
- val SegmentCodec = segments(index)
- var i = 0
- var defined = true
- if (SegmentCodec.length > 1 && SegmentCodec.charAt(0) == '-') i += 1
- while (i < SegmentCodec.length) {
- if (!SegmentCodec.charAt(i).isDigit) {
- defined = false
- i = SegmentCodec.length
- }
- i += 1
- }
- if (defined && i >= 1) 1 else -1
+ val lastIndex = inSegmentUntil(segments(index), 0)
+ if (lastIndex == -1 || lastIndex + 1 != segments(index).length) -1
+ else 1
}
- }
+
+ override def inSegmentUntil(segment: String, from: Int): Int =
+ if (segment.isEmpty || from >= segment.length) {
+ -1
+ } else {
+ var i = from
+ val isNegative = segment.charAt(i) == '-'
+ // 10 digits is the maximum for an Int
+ val maxDigits = if (isNegative) 11 else 10
+ if (segment.length > 1 && isNegative) i += 1
+ while (i + 1 < segment.length && i - from < maxDigits && segment.charAt(i).isDigit) i += 1
+ i
+ }
+
}
+
private[http] final case class LongSeg(name: String) extends SegmentCodec[Long] {
def format(value: Long): Path = Path(s"/$value")
@@ -151,20 +399,26 @@ object SegmentCodec {
def matches(segments: Chunk[String], index: Int): Int = {
if (index < 0 || index >= segments.length) -1
else {
- val SegmentCodec = segments(index)
- var i = 0
- var defined = true
- if (SegmentCodec.length > 1 && SegmentCodec.charAt(0) == '-') i += 1
- while (i < SegmentCodec.length) {
- if (!SegmentCodec.charAt(i).isDigit) {
- defined = false
- i = SegmentCodec.length
- }
- i += 1
- }
- if (defined && i >= 1) 1 else -1
+ val lastIndex = inSegmentUntil(segments(index), 0)
+ if (lastIndex == -1 || lastIndex + 1 != segments(index).length) -1
+ else 1
+ }
+ }
+
+ override def inSegmentUntil(segment: String, from: Int): Int = {
+ if (segment.isEmpty || from >= segment.length) {
+ -1
+ } else {
+ var i = from
+ val isNegative = segment.charAt(i) == '-'
+ // 19 digits is the maximum for a Long
+ val maxDigits = if (isNegative) 20 else 19
+ if (segment.length > 1 && isNegative) i += 1
+ while (i + 1 < segment.length && i - from < maxDigits && segment.charAt(i).isDigit) i += 1
+ i
}
}
+
}
private[http] final case class Text(name: String) extends SegmentCodec[String] {
@@ -173,6 +427,10 @@ object SegmentCodec {
def matches(segments: Chunk[String], index: Int): Int =
if (index < 0 || index >= segments.length) -1
else 1
+
+ override def inSegmentUntil(segment: String, from: Int): Int =
+ segment.length
+
}
private[http] final case class UUID(name: String) extends SegmentCodec[java.util.UUID] {
@@ -181,34 +439,97 @@ object SegmentCodec {
def matches(segments: Chunk[String], index: Int): Int = {
if (index < 0 || index >= segments.length) -1
else {
- val SegmentCodec = segments(index)
+ val lastIndex = inSegmentUntil(segments(index), 0)
+ if (lastIndex == -1 || lastIndex + 1 != segments(index).length) -1
+ else 1
+ }
+ }
- var i = 0
- var defined = true
- var group = 0
- var count = 0
- while (i < SegmentCodec.length) {
- val char = SegmentCodec.charAt(i)
- if ((char >= 48 && char <= 57) || (char >= 65 && char <= 70) || (char >= 97 && char <= 102))
- count += 1
- else if (char == 45) {
- if (
- group > 4 || (group == 0 && count != 8) || ((group == 1 || group == 2 || group == 3) && count != 4) || (group == 4 && count != 12)
- ) {
- defined = false
- i = SegmentCodec.length
- }
- count = 0
- group += 1
- } else {
+ override def inSegmentUntil(segment: String, from: Int): Int =
+ UUID.isUUIDUntil(segment, from)
+ }
+
+ private[http] object UUID {
+ def isUUIDUntil(segment: String, from: Int): Int = {
+ var i = from
+ var defined = true
+ var group = 0
+ var count = 0
+ if (segment.length + from < 36) return -1
+ while (i < 36 && defined) {
+ val char = segment.charAt(i)
+ if ((char >= 48 && char <= 57) || (char >= 65 && char <= 70) || (char >= 97 && char <= 102))
+ count += 1
+ else if (char == 45) {
+ if (
+ group > 4 || (group == 0 && count != 8) || ((group == 1 || group == 2 || group == 3) && count != 4) || (group == 4 && count != 12)
+ ) {
defined = false
- i = SegmentCodec.length
+ i = segment.length
}
+ count = 0
+ group += 1
+ } else {
+ defined = false
+ i = segment.length
+ }
+ i += 1
+ }
+ if (defined && from + 36 == i) i else -1
+ }
+
+ }
+
+ private[http] final case class Combined[A, B, C](
+ left: SegmentCodec[A],
+ right: SegmentCodec[B],
+ combiner: Combiner.WithOut[A, B, C],
+ ) extends SegmentCodec[C] { self =>
+ val flattened: List[SegmentCodec[_]] = {
+ def loop(s: SegmentCodec[_]): List[SegmentCodec[_]] = s match {
+ case SegmentCodec.Combined(l, r, _) => loop(l) ++ loop(r)
+ case _ => List(s)
+ }
+ loop(self)
+ }
+ override def format(value: C): Path = {
+ val (l, r) = combiner.separate(value)
+ val lf = left.format(l)
+ val rf = right.format(r)
+ lf ++ rf
+ }
+
+ override def matches(segments: Chunk[String], index: Int): Int =
+ if (index < 0 || index >= segments.length) -1
+ else {
+ val segment = segments(index)
+ val length = segment.length
+ var from = 0
+ var i = 0
+ while (i < flattened.length) {
+ if (from >= length) return -1
+ val codec = flattened(i)
+ val s = codec.inSegmentUntil(segment, from)
+ if (s == -1) return -1
+ from = s
i += 1
}
- if (defined && i == 36) 1 else -1
+ 1
}
+
+ override def inSegmentUntil(segment: String, from: Int): Int = {
+ var i = from
+ var j = 0
+ while (j < flattened.length) {
+ val codec = flattened(j)
+ val s = codec.inSegmentUntil(segment, i)
+ if (s == -1) return -1
+ i = s
+ j += 1
+ }
+ i
}
+
}
case object Trailing extends SegmentCodec[Path] { self =>
@@ -216,5 +537,9 @@ object SegmentCodec {
def matches(segments: Chunk[String], index: Int): Int =
(segments.length - index).max(0)
+
+ override def inSegmentUntil(segment: String, from: Int): Int =
+ segment.length
}
+
}
diff --git a/zio-http/shared/src/main/scala/zio/http/codec/internal/EncoderDecoder.scala b/zio-http/shared/src/main/scala/zio/http/codec/internal/EncoderDecoder.scala
index 3faa42f576..b4ddc3e2ee 100644
--- a/zio-http/shared/src/main/scala/zio/http/codec/internal/EncoderDecoder.scala
+++ b/zio-http/shared/src/main/scala/zio/http/codec/internal/EncoderDecoder.scala
@@ -251,10 +251,11 @@ private[codec] object EncoderDecoder {
val status = encodeStatus(inputs.status)
val method = encodeMethod(inputs.method)
val headers = encodeHeaders(inputs.header)
- val contentTypeHeaders = encodeContentType(inputs.content, outputTypes)
+ def contentTypeHeaders = encodeContentType(inputs.content, outputTypes)
val body = encodeBody(inputs.content, outputTypes)
- f(URL(path, queryParams = query), status, method, headers ++ contentTypeHeaders, body)
+ val headers0 = if (headers.contains("content-type")) headers else headers ++ contentTypeHeaders
+ f(URL(path, queryParams = query), status, method, headers0, body)
}
private def decodePaths(path: Path, inputs: Array[Any]): Unit = {
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/Endpoint.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/Endpoint.scala
index 475d7e2840..8905a974c6 100644
--- a/zio-http/shared/src/main/scala/zio/http/endpoint/Endpoint.scala
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/Endpoint.scala
@@ -158,7 +158,32 @@ final case class Endpoint[PathInput, Input, Err, Output, Middleware <: EndpointM
): Endpoint[PathInput, combiner.Out, Err, Output, Middleware] =
copy(input = self.input ++ codec)
- def implement[Env](original: Handler[Env, Err, Input, Output])(implicit trace: Trace): Route[Env, Nothing] = {
+ def implement[Env](f: Input => ZIO[Env, Err, Output])(implicit
+ trace: Trace,
+ ): Route[Env, Nothing] =
+ implementHandler(Handler.fromFunctionZIO(f))
+
+ def implementEither(f: Input => Either[Err, Output])(implicit
+ trace: Trace,
+ ): Route[Any, Nothing] =
+ implementHandler[Any](Handler.fromFunctionHandler[Input](in => Handler.fromEither(f(in))))
+
+ def implementPurely(f: Input => Output)(implicit
+ trace: Trace,
+ ): Route[Any, Nothing] =
+ implementHandler[Any](Handler.fromFunctionHandler[Input](in => Handler.succeed(f(in))))
+
+ def implementAs(output: Output)(implicit
+ trace: Trace,
+ ): Route[Any, Nothing] =
+ implementHandler[Any](Handler.succeed(output))
+
+ def implementAsError(err: Err)(implicit
+ trace: Trace,
+ ): Route[Any, Nothing] =
+ implementHandler[Any](Handler.fail(err))
+
+ def implementHandler[Env](original: Handler[Env, Err, Input, Output])(implicit trace: Trace): Route[Env, Nothing] = {
import HttpCodecError.asHttpCodecError
val handlers = self.alternatives.map { case (endpoint, condition) =>
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/EndpointExecutor.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/EndpointExecutor.scala
index 4b2f03b2ac..6e13648951 100644
--- a/zio-http/shared/src/main/scala/zio/http/endpoint/EndpointExecutor.scala
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/EndpointExecutor.scala
@@ -63,7 +63,7 @@ final case class EndpointExecutor[+MI](
alt: Alternator[E, invocation.middleware.Err],
ev: MI <:< invocation.middleware.In,
trace: Trace,
- ): ZIO[Scope, alt.Out, B] = {
+ ): ZIO[Scope, E, B] = {
middlewareInput.flatMap { mi =>
getClient(invocation.endpoint).orDie.flatMap { endpointClient =>
endpointClient.execute(client, invocation)(ev(mi))
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/http/HttpFile.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/http/HttpFile.scala
new file mode 100644
index 0000000000..7efa98e81e
--- /dev/null
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/http/HttpFile.scala
@@ -0,0 +1,91 @@
+package zio.http.endpoint.http
+
+import zio.http._
+import zio.http.endpoint.openapi.JsonSchema
+
+final case class HttpFile(endpoints: List[HttpEndpoint]) {
+ def ++(that: HttpFile): HttpFile = HttpFile(endpoints ++ that.endpoints)
+
+ def render: String = endpoints.map(_.render).mkString("\n\n")
+}
+
+final case class HttpEndpoint(
+ method: Method,
+ path: String,
+ headers: Seq[String],
+ requestBody: Option[JsonSchema],
+ variables: Seq[HttpVariable],
+ docString: Option[String],
+) {
+ def render: String =
+ renderDoc + renderVariables + renderPath + renderHeaders + renderRequestBody
+
+ private def renderRequestBody: String = {
+ requestBody match {
+ case None => ""
+ case Some(schema) =>
+ renderSchema(schema)
+ }
+ }
+
+ private def renderSchema(schema: JsonSchema, name: Option[String] = None): String =
+ schema match {
+ case JsonSchema.AnnotatedSchema(schema, _) => renderSchema(schema)
+ case JsonSchema.RefSchema(_) => throw new Exception("RefSchema not supported")
+ case JsonSchema.OneOfSchema(_) => throw new Exception("OneOfSchema not supported")
+ case JsonSchema.AllOfSchema(_) => throw new Exception("AllOfSchema not supported")
+ case JsonSchema.AnyOfSchema(_) => throw new Exception("AnyOfSchema not supported")
+ case JsonSchema.Number(_) => s""""${getName(name)}": {{${getName(name)}}}"""
+ case JsonSchema.Integer(_) => s""""${getName(name)}": {{${getName(name)}}}"""
+ case JsonSchema.String(_, _) => s""""${getName(name)}": {{${getName(name)}}}"""
+ case JsonSchema.Boolean => s""""${getName(name)}": {{${getName(name)}}}"""
+ case JsonSchema.ArrayType(_) => s""""${getName(name)}": {{${getName(name)}}}"""
+ case JsonSchema.Object(properties, _, _) =>
+ if (properties.isEmpty) ""
+ else {
+ val fields = properties.map { case (name, schema) => renderSchema(schema, Some(name)) }.mkString(",\n")
+ // TODO: This has to be removed when we support other content types
+ if (name.isEmpty) s"\nContent-type: application/json\n\n{\n$fields\n}"
+ else s""""${getName(name)}": {\n$fields\n}"""
+ }
+ case JsonSchema.Enum(_) => s""""${getName(name)}": {{${getName(name)}}}"""
+ case JsonSchema.Null => ""
+ case JsonSchema.AnyJson => ""
+ }
+
+ private def getName(name: Option[String]) = { name.getOrElse(throw new IllegalArgumentException("name is required")) }
+
+ private def renderDoc =
+ docString match {
+ case None =>
+ ""
+ case Some(doc) =>
+ doc.split("\n").map(line => s"# $line").mkString("\n", "\n", "\n")
+ }
+
+ private def renderVariables =
+ if (variables.isEmpty) ""
+ else variables.distinct.map(_.render).mkString("\n", "\n", "\n\n")
+
+ private def renderHeaders =
+ if (headers.isEmpty) ""
+ else headers.map(h => s"${h.capitalize}: {{${h.capitalize}}}").mkString("\n", "\n", "")
+
+ private def renderPath = {
+ if (method == Method.ANY) {
+ s"POST $path"
+ } else {
+ s"${method.render} $path"
+ }
+ }
+}
+
+final case class HttpVariable(name: String, value: Option[String], docString: Option[String] = None) {
+ def render = {
+ val variable = s"@$name=${value.getOrElse("")}"
+ if (docString.isDefined) {
+ docString.get.split("\n").map(line => s"# $line").mkString("", "\n", "\n") + variable
+ } else variable
+ }
+
+}
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/http/HttpGen.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/http/HttpGen.scala
new file mode 100644
index 0000000000..53314e3f0a
--- /dev/null
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/http/HttpGen.scala
@@ -0,0 +1,192 @@
+package zio.http.endpoint.http
+
+import zio.http.MediaType
+import zio.http.codec._
+import zio.http.endpoint.Endpoint
+import zio.http.endpoint.openapi.OpenAPIGen.{AtomizedMetaCodecs, MetaCodec}
+import zio.http.endpoint.openapi.{JsonSchema, OpenAPIGen}
+
+object HttpGen {
+
+ private val PathWildcard = "pathWildcard"
+
+ def fromEndpoints(
+ endpoint1: Endpoint[_, _, _, _, _],
+ endpoints: Endpoint[_, _, _, _, _]*,
+ ): HttpFile = {
+ HttpFile((endpoint1 +: endpoints).map(fromEndpoint).toList)
+ }
+
+ def fromEndpoint(endpoint: Endpoint[_, _, _, _, _]): HttpEndpoint = {
+ val atomizedInput = AtomizedMetaCodecs.flatten(endpoint.input)
+ HttpEndpoint(
+ OpenAPIGen.method(atomizedInput.method),
+ buildPath(endpoint.input),
+ headersVariables(atomizedInput).map(_.name),
+ bodySchema(atomizedInput),
+ variables(atomizedInput),
+ doc(endpoint),
+ )
+ }
+
+ private def bodySchema(inAtoms: AtomizedMetaCodecs) = {
+ // currently only json support. No multipart/form-data or x-www-form-urlencoded
+ if (inAtoms.content.size != 1) None
+ else
+ inAtoms.content.collect {
+ case MetaCodec(HttpCodec.Content(codec, _, _), _) if codec.choices.contains(MediaType.application.json) =>
+ val schema = codec.choices(MediaType.application.json).schema
+ val jsonSchema = JsonSchema.fromZSchema(schema)
+ jsonSchema
+ }.headOption
+ }
+
+ private def doc(endpoint: Endpoint[_, _, _, _, _]) =
+ if (endpoint.doc == Doc.empty) None else Some(endpoint.doc.toPlaintext(color = false))
+
+ def variables(inAtoms: AtomizedMetaCodecs): Seq[HttpVariable] =
+ pathVariables(inAtoms) ++ queryVariables(inAtoms) ++ headersVariables(inAtoms) ++ bodyVariables(inAtoms)
+
+ def bodyVariables(inAtoms: AtomizedMetaCodecs): Seq[HttpVariable] = {
+ val bodySchema0 = bodySchema(inAtoms)
+
+ def loop(schema: JsonSchema, name: Option[String]): Seq[HttpVariable] = schema match {
+ case JsonSchema.AnnotatedSchema(schema, _) => loop(schema, name)
+ case JsonSchema.RefSchema(_) => throw new Exception("RefSchema not supported")
+ case JsonSchema.OneOfSchema(_) => throw new Exception("OneOfSchema not supported")
+ case JsonSchema.AllOfSchema(_) => throw new Exception("AllOfSchema not supported")
+ case JsonSchema.AnyOfSchema(_) => throw new Exception("AnyOfSchema not supported")
+ case JsonSchema.Number(format) =>
+ val typeHint = format match {
+ case JsonSchema.NumberFormat.Float => "type: Float"
+ case JsonSchema.NumberFormat.Double => "type: Double"
+ }
+ Seq(HttpVariable(getName(name), None, Some(typeHint)))
+ case JsonSchema.Integer(format) =>
+ val typeHint = format match {
+ case JsonSchema.IntegerFormat.Int32 => "type: Int"
+ case JsonSchema.IntegerFormat.Int64 => "type: Long"
+ case JsonSchema.IntegerFormat.Timestamp => "type: Timestamp in milliseconds"
+ }
+ Seq(HttpVariable(getName(name), None, Some(typeHint)))
+ case JsonSchema.String(format, pattern) =>
+ val formatHint: String = format match {
+ case Some(value) => s" format: ${value.value}"
+ case None => ""
+ }
+ val patternHint: String = pattern match {
+ case Some(value) => s" pattern: ${value.value}"
+ case None => ""
+ }
+ Seq(HttpVariable(getName(name), None, Some(s"type: String$formatHint$patternHint")))
+ case JsonSchema.Boolean => Seq(HttpVariable(getName(name), None, Some("type: Boolean")))
+ case JsonSchema.ArrayType(items) =>
+ val typeHint =
+ items match {
+ case Some(schema) =>
+ loop(schema, Some("notUsed")).map(_.render).mkString(";")
+ case None =>
+ ""
+ }
+
+ Seq(HttpVariable(getName(name), None, Some(s"type: array of $typeHint")))
+ case JsonSchema.Object(properties, _, _) =>
+ properties.flatMap { case (key, value) => loop(value, Some(key)) }.toSeq
+ case JsonSchema.Enum(values) => Seq(HttpVariable(getName(name), None, Some(s"enum: ${values.mkString(",")}")))
+ case JsonSchema.Null => Seq.empty
+ case JsonSchema.AnyJson => Seq.empty
+ }
+
+ bodySchema0 match {
+ case Some(schema) => loop(schema, None)
+ case None => Seq.empty
+ }
+ }
+
+ private def getName(name: Option[String]) = { name.getOrElse(throw new IllegalArgumentException("name is required")) }
+
+ def headersVariables(inAtoms: AtomizedMetaCodecs): Seq[HttpVariable] =
+ inAtoms.header.collect { case mc @ MetaCodec(HttpCodec.Header(name, codec, _), _) =>
+ HttpVariable(
+ name.capitalize,
+ mc.examples.values.headOption.map(e => codec.asInstanceOf[TextCodec[Any]].encode(e)),
+ )
+ }
+
+ def queryVariables(inAtoms: AtomizedMetaCodecs): Seq[HttpVariable] = {
+ inAtoms.query.collect { case mc @ MetaCodec(HttpCodec.Query(name, _, _, _), _) =>
+ HttpVariable(
+ name,
+ mc.examples.values.headOption.map(_.toString),
+ )
+// OpenAPI.ReferenceOr.Or(
+// OpenAPI.Parameter.queryParameter(
+// name = name,
+// description = mc.docsOpt,
+// schema = Some(OpenAPI.ReferenceOr.Or(JsonSchema.fromTextCodec(codec))),
+// deprecated = mc.deprecated,
+// style = OpenAPI.Parameter.Style.Form,
+// explode = false,
+// allowReserved = false,
+// examples = mc.examples.map { case (name, value) =>
+// name -> OpenAPI.ReferenceOr.Or(OpenAPI.Example(value = Json.Str(value.toString)))
+// },
+// required = mc.required,
+// ),
+// )
+ }
+ }
+
+ private def pathVariables(inAtoms: AtomizedMetaCodecs) = {
+ inAtoms.path.collect {
+ case mc @ MetaCodec(codec, _) if codec != SegmentCodec.Empty && !codec.isInstanceOf[SegmentCodec.Literal] =>
+ HttpVariable(
+ mc.name.getOrElse(throw new Exception("Path parameter must have a name")),
+ mc.examples.values.headOption.map(_.toString),
+ )
+ // OpenAPI.ReferenceOr.Or(
+ // OpenAPI.Parameter.pathParameter(
+ // name = mc.name.getOrElse(throw new Exception("Path parameter must have a name")),
+ // description = mc.docsOpt.flatMap(_.flattened.filterNot(_ == pathDoc).reduceOption(_ + _)),
+ // definition = Some(OpenAPI.ReferenceOr.Or(JsonSchema.fromSegmentCodec(codec))),
+ // deprecated = mc.deprecated,
+ // style = OpenAPI.Parameter.Style.Simple,
+ // examples = mc.examples.map { case (name, value) =>
+ // name -> OpenAPI.ReferenceOr.Or(OpenAPI.Example(segmentToJson(codec, value)))
+ // },
+ // ),
+ // )
+ }
+ }
+
+ def buildPath(in: HttpCodec[_, _]): String = {
+
+ def pathCodec(in1: HttpCodec[_, _]): Option[HttpCodec.Path[_]] = in1 match {
+ case atom: HttpCodec.Atom[_, _] =>
+ atom match {
+ case codec @ HttpCodec.Path(_, _) => Some(codec)
+ case _ => None
+ }
+ case HttpCodec.Annotated(in, _) => pathCodec(in)
+ case HttpCodec.TransformOrFail(api, _, _) => pathCodec(api)
+ case HttpCodec.Empty => None
+ case HttpCodec.Halt => None
+ case HttpCodec.Combine(left, right, _) => pathCodec(left).orElse(pathCodec(right))
+ case HttpCodec.Fallback(left, right, _, _) => pathCodec(left).orElse(pathCodec(right))
+ }
+
+ val atomizedInput = AtomizedMetaCodecs.flatten(in)
+ val queryNames = queryVariables(atomizedInput).map(_.name)
+
+ val pathString = {
+ val codec = pathCodec(in).getOrElse(throw new Exception("No path found.")).pathCodec
+ if (codec.render("{{", "}}").endsWith(SegmentCodec.Trailing.render))
+ codec.renderIgnoreTrailing("{{", "}}") + s"{{$PathWildcard}}"
+ else codec.render("{{", "}}")
+ }
+
+ if (queryNames.nonEmpty) pathString + "?" + queryNames.map(name => s"$name={{$name}}").mkString("&")
+ else pathString
+ }
+
+}
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/internal/EndpointClient.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/internal/EndpointClient.scala
index ffaf016f07..9f30b2b7fb 100644
--- a/zio-http/shared/src/main/scala/zio/http/endpoint/internal/EndpointClient.scala
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/internal/EndpointClient.scala
@@ -29,7 +29,7 @@ private[endpoint] final case class EndpointClient[P, I, E, O, M <: EndpointMiddl
) {
def execute(client: Client, invocation: Invocation[P, I, E, O, M])(
mi: invocation.middleware.In,
- )(implicit alt: Alternator[E, invocation.middleware.Err], trace: Trace): ZIO[Scope, alt.Out, O] = {
+ )(implicit alt: Alternator[E, invocation.middleware.Err], trace: Trace): ZIO[Scope, E, O] = {
val request0 = endpoint.input.encodeRequest(invocation.input)
val request = request0.copy(url = endpointRoot ++ request0.url)
@@ -44,28 +44,12 @@ private[endpoint] final case class EndpointClient[P, I, E, O, M <: EndpointMiddl
)
client.request(withDefaultAcceptHeader).orDie.flatMap { response =>
- if (response.status.isSuccess) {
+ if (endpoint.output.matchesStatus(response.status)) {
endpoint.output.decodeResponse(response).orDie
+ } else if (endpoint.error.matchesStatus(response.status)) {
+ endpoint.error.decodeResponse(response).orDie.flip
} else {
- // Preferentially decode an error from the handler, before falling back
- // to decoding the middleware error:
- val handlerError =
- endpoint.error
- .decodeResponse(response)
- .map(e => alt.left(e))
- .mapError(t => new IllegalStateException("Cannot deserialize using endpoint error codec", t))
-
- val middlewareError =
- invocation.middleware.error
- .decodeResponse(response)
- .map(e => alt.right(e))
- .mapError(t => new IllegalStateException("Cannot deserialize using middleware error codec", t))
-
- handlerError.catchAllCause { handlerCause =>
- middlewareError.catchAllCause { middlewareCause =>
- ZIO.failCause(handlerCause ++ middlewareCause)
- }
- }.orDie.flip
+ ZIO.die(new IllegalStateException(s"Status code: ${response.status} is not defined in the endpoint"))
}
}
}
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/JsonSchema.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/JsonSchema.scala
index ca574fc805..22cd74e241 100644
--- a/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/JsonSchema.scala
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/JsonSchema.scala
@@ -1,6 +1,6 @@
package zio.http.endpoint.openapi
-import scala.annotation.nowarn
+import scala.annotation.{nowarn, tailrec}
import zio._
import zio.json.ast.Json
@@ -197,6 +197,7 @@ sealed trait JsonSchema extends Product with Serializable { self =>
def isCollection: Boolean = self match {
case _: JsonSchema.ArrayType => true
+ case obj: JsonSchema.Object => obj.properties.isEmpty && obj.additionalProperties.isRight
case _ => false
}
@@ -306,130 +307,142 @@ object JsonSchema {
def fromSegmentCodec(codec: SegmentCodec[_]): JsonSchema =
codec match {
- case SegmentCodec.BoolSeg(_) => JsonSchema.Boolean
- case SegmentCodec.IntSeg(_) => JsonSchema.Integer(JsonSchema.IntegerFormat.Int32)
- case SegmentCodec.LongSeg(_) => JsonSchema.Integer(JsonSchema.IntegerFormat.Int64)
- case SegmentCodec.Text(_) => JsonSchema.String()
- case SegmentCodec.UUID(_) => JsonSchema.String(JsonSchema.StringFormat.UUID)
- case SegmentCodec.Literal(_) => throw new IllegalArgumentException("Literal segment is not supported.")
- case SegmentCodec.Empty => throw new IllegalArgumentException("Empty segment is not supported.")
- case SegmentCodec.Trailing => throw new IllegalArgumentException("Trailing segment is not supported.")
+ case SegmentCodec.BoolSeg(_) => JsonSchema.Boolean
+ case SegmentCodec.IntSeg(_) => JsonSchema.Integer(JsonSchema.IntegerFormat.Int32)
+ case SegmentCodec.LongSeg(_) => JsonSchema.Integer(JsonSchema.IntegerFormat.Int64)
+ case SegmentCodec.Text(_) => JsonSchema.String()
+ case SegmentCodec.UUID(_) => JsonSchema.String(JsonSchema.StringFormat.UUID)
+ case SegmentCodec.Literal(_) => throw new IllegalArgumentException("Literal segment is not supported.")
+ case SegmentCodec.Empty => throw new IllegalArgumentException("Empty segment is not supported.")
+ case SegmentCodec.Trailing => throw new IllegalArgumentException("Trailing segment is not supported.")
+ case SegmentCodec.Combined(_, _, _) => throw new IllegalArgumentException("Combined segment is not supported.")
}
- def fromZSchemaMulti(schema: Schema[_], refType: SchemaStyle = SchemaStyle.Inline): JsonSchemas = {
+ def fromZSchemaMulti(
+ schema: Schema[_],
+ refType: SchemaStyle = SchemaStyle.Inline,
+ seen: Set[java.lang.String] = Set.empty,
+ ): JsonSchemas = {
val ref = nominal(schema, refType)
- schema match {
- case enum0: Schema.Enum[_] if enum0.cases.forall(_.schema.isInstanceOf[CaseClass0[_]]) =>
- JsonSchemas(fromZSchema(enum0, SchemaStyle.Inline), ref, Map.empty)
- case enum0: Schema.Enum[_] =>
- JsonSchemas(
- fromZSchema(enum0, SchemaStyle.Inline),
- ref,
- enum0.cases
- .filterNot(_.annotations.exists(_.isInstanceOf[transientCase]))
- .flatMap { c =>
- val key =
- nominal(c.schema, refType)
- .orElse(nominal(c.schema, SchemaStyle.Compact))
+ if (ref.exists(seen.contains)) {
+ JsonSchemas(RefSchema(ref.get), ref, Map.empty)
+ } else {
+ val seenWithCurrent = seen ++ ref
+ schema match {
+ case enum0: Schema.Enum[_] if enum0.cases.forall(_.schema.isInstanceOf[CaseClass0[_]]) =>
+ JsonSchemas(fromZSchema(enum0, SchemaStyle.Inline), ref, Map.empty)
+ case enum0: Schema.Enum[_] =>
+ JsonSchemas(
+ fromZSchema(enum0, SchemaStyle.Inline),
+ ref,
+ enum0.cases
+ .filterNot(_.annotations.exists(_.isInstanceOf[transientCase]))
+ .flatMap { c =>
+ val key =
+ nominal(c.schema, refType)
+ .orElse(nominal(c.schema, SchemaStyle.Compact))
+ val nested = fromZSchemaMulti(
+ c.schema,
+ refType,
+ seenWithCurrent,
+ )
+ nested.children ++ key.map(_ -> nested.root)
+ }
+ .toMap,
+ )
+ case record: Schema.Record[_] =>
+ val children = record.fields
+ .filterNot(_.annotations.exists(_.isInstanceOf[transientField]))
+ .flatMap { field =>
val nested = fromZSchemaMulti(
- c.schema,
+ field.schema,
refType,
+ seenWithCurrent,
)
- nested.children ++ key.map(_ -> nested.root)
+ nested.rootRef.map(k => nested.children + (k -> nested.root)).getOrElse(nested.children)
}
- .toMap,
- )
- case record: Schema.Record[_] =>
- val children = record.fields
- .filterNot(_.annotations.exists(_.isInstanceOf[transientField]))
- .flatMap { field =>
- val nested = fromZSchemaMulti(
- field.schema,
- refType,
- )
- nested.rootRef.map(k => nested.children + (k -> nested.root)).getOrElse(nested.children)
+ .toMap
+ JsonSchemas(fromZSchema(record, SchemaStyle.Inline), ref, children)
+ case collection: Schema.Collection[_, _] =>
+ collection match {
+ case Schema.Sequence(elementSchema, _, _, _, _) =>
+ arraySchemaMulti(refType, ref, elementSchema, seenWithCurrent)
+ case Schema.Map(_, valueSchema, _) =>
+ val nested = fromZSchemaMulti(valueSchema, refType, seenWithCurrent)
+ if (valueSchema.isInstanceOf[Schema.Primitive[_]]) {
+ JsonSchemas(
+ JsonSchema.Object(
+ Map.empty,
+ Right(nested.root),
+ Chunk.empty,
+ ),
+ ref,
+ nested.children,
+ )
+ } else {
+ JsonSchemas(
+ JsonSchema.Object(
+ Map.empty,
+ Right(nested.root),
+ Chunk.empty,
+ ),
+ ref,
+ nested.children + (nested.rootRef.get -> nested.root),
+ )
+ }
+ case Schema.Set(elementSchema, _) =>
+ arraySchemaMulti(refType, ref, elementSchema, seenWithCurrent)
}
- .toMap
- JsonSchemas(fromZSchema(record, SchemaStyle.Inline), ref, children)
- case collection: Schema.Collection[_, _] =>
- collection match {
- case Schema.Sequence(elementSchema, _, _, _, _) =>
- arraySchemaMulti(refType, ref, elementSchema)
- case Schema.Map(_, valueSchema, _) =>
- val nested = fromZSchemaMulti(valueSchema, refType)
- if (valueSchema.isInstanceOf[Schema.Primitive[_]]) {
- JsonSchemas(
- JsonSchema.Object(
- Map.empty,
- Right(nested.root),
- Chunk.empty,
- ),
- ref,
- nested.children,
+ case Schema.Transform(schema, _, _, _, _) =>
+ fromZSchemaMulti(schema, refType, seenWithCurrent)
+ case Schema.Primitive(_, _) =>
+ JsonSchemas(fromZSchema(schema, SchemaStyle.Inline), ref, Map.empty)
+ case Schema.Optional(schema, _) =>
+ fromZSchemaMulti(schema, refType, seenWithCurrent)
+ case Schema.Fail(_, _) =>
+ throw new IllegalArgumentException("Fail schema is not supported.")
+ case Schema.Tuple2(left, right, _) =>
+ val leftSchema = fromZSchemaMulti(left, refType, seenWithCurrent)
+ val rightSchema = fromZSchemaMulti(right, refType, seenWithCurrent)
+ JsonSchemas(
+ AllOfSchema(Chunk(leftSchema.root, rightSchema.root)),
+ ref,
+ leftSchema.children ++ rightSchema.children,
+ )
+ case Schema.Either(left, right, _) =>
+ val leftSchema = fromZSchemaMulti(left, refType, seenWithCurrent)
+ val rightSchema = fromZSchemaMulti(right, refType, seenWithCurrent)
+ JsonSchemas(
+ OneOfSchema(Chunk(leftSchema.root, rightSchema.root)),
+ ref,
+ leftSchema.children ++ rightSchema.children,
+ )
+ case Schema.Fallback(left, right, fullDecode, _) =>
+ val leftSchema = fromZSchemaMulti(left, refType, seenWithCurrent)
+ val rightSchema = fromZSchemaMulti(right, refType, seenWithCurrent)
+ val candidates =
+ if (fullDecode)
+ Chunk(
+ AllOfSchema(Chunk(leftSchema.root, rightSchema.root)),
+ leftSchema.root,
+ rightSchema.root,
)
- } else {
- JsonSchemas(
- JsonSchema.Object(
- Map.empty,
- Right(nested.root),
- Chunk.empty,
- ),
- ref,
- nested.children + (nested.rootRef.get -> nested.root),
+ else
+ Chunk(
+ leftSchema.root,
+ rightSchema.root,
)
- }
- case Schema.Set(elementSchema, _) =>
- arraySchemaMulti(refType, ref, elementSchema)
- }
- case Schema.Transform(schema, _, _, _, _) =>
- fromZSchemaMulti(schema, refType)
- case Schema.Primitive(_, _) =>
- JsonSchemas(fromZSchema(schema, SchemaStyle.Inline), ref, Map.empty)
- case Schema.Optional(schema, _) =>
- fromZSchemaMulti(schema, refType)
- case Schema.Fail(_, _) =>
- throw new IllegalArgumentException("Fail schema is not supported.")
- case Schema.Tuple2(left, right, _) =>
- val leftSchema = fromZSchemaMulti(left, refType)
- val rightSchema = fromZSchemaMulti(right, refType)
- JsonSchemas(
- AllOfSchema(Chunk(leftSchema.root, rightSchema.root)),
- ref,
- leftSchema.children ++ rightSchema.children,
- )
- case Schema.Either(left, right, _) =>
- val leftSchema = fromZSchemaMulti(left, refType)
- val rightSchema = fromZSchemaMulti(right, refType)
- JsonSchemas(
- OneOfSchema(Chunk(leftSchema.root, rightSchema.root)),
- ref,
- leftSchema.children ++ rightSchema.children,
- )
- case Schema.Fallback(left, right, fullDecode, _) =>
- val leftSchema = fromZSchemaMulti(left, refType)
- val rightSchema = fromZSchemaMulti(right, refType)
- val candidates =
- if (fullDecode)
- Chunk(
- AllOfSchema(Chunk(leftSchema.root, rightSchema.root)),
- leftSchema.root,
- rightSchema.root,
- )
- else
- Chunk(
- leftSchema.root,
- rightSchema.root,
- )
- JsonSchemas(
- OneOfSchema(candidates),
- ref,
- leftSchema.children ++ rightSchema.children,
- )
- case Schema.Lazy(schema0) =>
- fromZSchemaMulti(schema0(), refType)
- case Schema.Dynamic(_) =>
- JsonSchemas(AnyJson, None, Map.empty)
+ JsonSchemas(
+ OneOfSchema(candidates),
+ ref,
+ leftSchema.children ++ rightSchema.children,
+ )
+ case Schema.Lazy(schema0) =>
+ fromZSchemaMulti(schema0(), refType, seen)
+ case Schema.Dynamic(_) =>
+ JsonSchemas(AnyJson, None, Map.empty)
+ }
}
}
@@ -437,8 +450,9 @@ object JsonSchema {
refType: SchemaStyle,
ref: Option[java.lang.String],
elementSchema: Schema[_],
+ seen: Set[java.lang.String],
): JsonSchemas = {
- val nested = fromZSchemaMulti(elementSchema, refType)
+ val nested = fromZSchemaMulti(elementSchema, refType, seen)
if (elementSchema.isInstanceOf[Schema.Primitive[_]]) {
JsonSchemas(
JsonSchema.ArrayType(Some(nested.root)),
@@ -449,7 +463,7 @@ object JsonSchema {
JsonSchemas(
JsonSchema.ArrayType(Some(nested.root)),
ref,
- nested.children ++ (nested.rootRef.map(_ -> nested.root)),
+ nested.children ++ nested.rootRef.map(_ -> nested.root),
)
}
}
@@ -523,6 +537,7 @@ object JsonSchema {
.map(_.name),
)
.deprecated(deprecated(record))
+ .description(record.annotations.collectFirst { case description(value) => value })
case collection: Schema.Collection[_, _] =>
collection match {
case Schema.Sequence(elementSchema, _, _, _, _) =>
@@ -632,10 +647,12 @@ object JsonSchema {
schema.annotations.collectFirst { case fieldDefaultValue(value) => value }
.map(toJsonAst(schema.schema, _))
+ @tailrec
private def nominal(schema: Schema[_], referenceType: SchemaStyle = SchemaStyle.Reference): Option[java.lang.String] =
schema match {
case enumSchema: Schema.Enum[_] => refForTypeId(enumSchema.id, referenceType)
case record: Schema.Record[_] => refForTypeId(record.id, referenceType)
+ case lazySchema: Schema.Lazy[_] => nominal(lazySchema.schema, referenceType)
case _ => None
}
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPI.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPI.scala
index 76dd5a8105..3c2177147f 100644
--- a/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPI.scala
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPI.scala
@@ -26,7 +26,7 @@ import zio.Chunk
import zio.json.ast._
import zio.schema._
-import zio.schema.annotation.{fieldName, noDiscriminator}
+import zio.schema.annotation.{caseName, discriminatorName, fieldName, noDiscriminator}
import zio.schema.codec.JsonCodec
import zio.schema.codec.json._
@@ -1271,8 +1271,8 @@ object OpenAPI {
*/
final case class XML(name: String, namespace: URI, prefix: String, attribute: Boolean = false, wrapped: Boolean)
+ @discriminatorName("type")
sealed trait SecurityScheme {
- def `type`: String
def description: Option[Doc]
}
@@ -1291,9 +1291,8 @@ object OpenAPI {
* @param in
* The location of the API key.
*/
- final case class ApiKey(description: Option[Doc], name: String, in: ApiKey.In) extends SecurityScheme {
- override def `type`: String = "apiKey"
- }
+ @caseName("apiKey")
+ final case class ApiKey(description: Option[Doc], name: String, in: ApiKey.In) extends SecurityScheme
object ApiKey {
sealed trait In extends Product with Serializable
@@ -1319,11 +1318,8 @@ object OpenAPI {
* Bearer tokens are usually generated by an authorization server, so this
* information is primarily for documentation purposes.
*/
- final case class Http(description: Option[Doc], scheme: String, bearerFormat: Option[String])
- extends SecurityScheme {
- override def `type`: String = "http"
-
- }
+ @caseName("http")
+ final case class Http(description: Option[Doc], scheme: String, bearerFormat: Option[String]) extends SecurityScheme
/**
* @param description
@@ -1332,10 +1328,8 @@ object OpenAPI {
* An object containing configuration information for the flow types
* supported.
*/
- final case class OAuth2(description: Option[Doc], flows: OAuthFlows) extends SecurityScheme {
- override def `type`: String = "oauth2"
-
- }
+ @caseName("oauth2")
+ final case class OAuth2(description: Option[Doc], flows: OAuthFlows) extends SecurityScheme
/**
* @param description
@@ -1343,10 +1337,8 @@ object OpenAPI {
* @param openIdConnectUrl
* OpenId Connect URL to discover OAuth2 configuration values.
*/
- final case class OpenIdConnect(description: Option[Doc], openIdConnectUrl: URI) extends SecurityScheme {
- override def `type`: String = "openIdConnect"
-
- }
+ @caseName("openIdConnect")
+ final case class OpenIdConnect(description: Option[Doc], openIdConnectUrl: URI) extends SecurityScheme
/**
* Allows configuration of the supported OAuth Flows.
diff --git a/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPIGen.scala b/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPIGen.scala
index e8595f0656..28e57d2783 100644
--- a/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPIGen.scala
+++ b/zio-http/shared/src/main/scala/zio/http/endpoint/openapi/OpenAPIGen.scala
@@ -213,7 +213,8 @@ object OpenAPIGen {
)
case path: HttpCodec.Path[_] => metaCodecFromPathCodec(path.pathCodec, annotations)
case atom: HttpCodec.Atom[_, A] => Chunk(MetaCodec(atom, annotations))
- case map: HttpCodec.TransformOrFail[_, _, _] => flattenedAtoms(map.api, annotations)
+ case map: HttpCodec.TransformOrFail[_, _, _] =>
+ flattenedAtoms(map.api, annotations.map(_.transformOrFail(map.g.asInstanceOf[Any => Either[String, Any]])))
case HttpCodec.Empty => Chunk.empty
case HttpCodec.Halt => Chunk.empty
case _: HttpCodec.Fallback[_, _, _] => in.alternatives.map(_._1).flatMap(flattenedAtoms(_, annotations))
@@ -222,6 +223,12 @@ object OpenAPIGen {
}
}
+ def method(in: Chunk[MetaCodec[SimpleCodec[Method, _]]]): Method = {
+ if (in.size > 1) throw new Exception("Multiple methods not supported")
+ in.collectFirst { case MetaCodec(SimpleCodec.Specified(method: Method), _) => method }
+ .getOrElse(throw new Exception("No method specified"))
+ }
+
def metaCodecFromPathCodec(
codec: PathCodec[_],
annotations: Chunk[HttpCodec.Metadata[_]],
@@ -248,6 +255,8 @@ object OpenAPIGen {
}
}),
)
+ case PathCodec.Fallback(left, _) =>
+ loop(left, annotations)
}
loop(codec, annotations).map { case (sc, annotations) =>
@@ -340,6 +349,20 @@ object OpenAPIGen {
.nullable(optional(metadata))
.description(description(metadata))
.annotate(annotations)
+ case (JsonSchema.Object(p, _, r), JsonSchema.Null) =>
+ JsonSchema
+ .Object(p, Left(false), r)
+ .deprecated(deprecated(metadata))
+ .nullable(optional(metadata))
+ .description(description(metadata))
+ .annotate(annotations)
+ case (JsonSchema.Null, JsonSchema.Object(p, _, r)) =>
+ JsonSchema
+ .Object(p, Left(false), r)
+ .deprecated(deprecated(metadata))
+ .nullable(optional(metadata))
+ .description(description(metadata))
+ .annotate(annotations)
case _ => throw new IllegalArgumentException("Multipart content without name.")
}
@@ -533,12 +556,6 @@ object OpenAPIGen {
OpenAPI.Path.fromString(pathString).getOrElse(throw new Exception(s"Invalid path: $pathString"))
}
- def method(in: Chunk[MetaCodec[SimpleCodec[Method, _]]]): Method = {
- if (in.size > 1) throw new Exception("Multiple methods not supported")
- in.collectFirst { case MetaCodec(SimpleCodec.Specified(method: Method), _) => method }
- .getOrElse(throw new Exception("No method specified"))
- }
-
def operation(endpoint: Endpoint[_, _, _, _, _]): OpenAPI.Operation = {
val maybeDoc = Some(endpoint.doc + pathDoc).filter(!_.isEmpty)
OpenAPI.Operation(
@@ -688,14 +705,15 @@ object OpenAPIGen {
def segmentToJson(codec: SegmentCodec[_], value: Any): Json = {
codec match {
- case SegmentCodec.Empty => throw new Exception("Empty segment not allowed")
- case SegmentCodec.Literal(_) => throw new Exception("Literal segment not allowed")
- case SegmentCodec.BoolSeg(_) => Json.Bool(value.asInstanceOf[Boolean])
- case SegmentCodec.IntSeg(_) => Json.Num(value.asInstanceOf[Int])
- case SegmentCodec.LongSeg(_) => Json.Num(value.asInstanceOf[Long])
- case SegmentCodec.Text(_) => Json.Str(value.asInstanceOf[String])
- case SegmentCodec.UUID(_) => Json.Str(value.asInstanceOf[UUID].toString)
- case SegmentCodec.Trailing => throw new Exception("Trailing segment not allowed")
+ case SegmentCodec.Empty => throw new Exception("Empty segment not allowed")
+ case SegmentCodec.Literal(_) => throw new Exception("Literal segment not allowed")
+ case SegmentCodec.BoolSeg(_) => Json.Bool(value.asInstanceOf[Boolean])
+ case SegmentCodec.IntSeg(_) => Json.Num(value.asInstanceOf[Int])
+ case SegmentCodec.LongSeg(_) => Json.Num(value.asInstanceOf[Long])
+ case SegmentCodec.Text(_) => Json.Str(value.asInstanceOf[String])
+ case SegmentCodec.UUID(_) => Json.Str(value.asInstanceOf[UUID].toString)
+ case SegmentCodec.Trailing => throw new Exception("Trailing segment not allowed")
+ case SegmentCodec.Combined(_, _, _) => throw new Exception("Combined segment not allowed")
}
}
@@ -798,8 +816,7 @@ object OpenAPIGen {
(
statusOrDefault,
(
- AtomizedMetaCodecs
- .flatten(codec),
+ AtomizedMetaCodecs.flatten(codec),
contentAsJsonSchema(codec, referenceType = referenceType) _,
),
)
diff --git a/zio-http/shared/src/main/scala/zio/http/internal/FormState.scala b/zio-http/shared/src/main/scala/zio/http/internal/FormState.scala
index 2ca5c03b21..e7b09752af 100644
--- a/zio-http/shared/src/main/scala/zio/http/internal/FormState.scala
+++ b/zio-http/shared/src/main/scala/zio/http/internal/FormState.scala
@@ -30,7 +30,10 @@ private[http] object FormState {
final class FormStateBuffer(boundary: Boundary) extends FormState { self =>
private val tree0: ChunkBuilder[FormAST] = ChunkBuilder.make[FormAST]()
- private val buffer: ChunkBuilder.Byte = new ChunkBuilder.Byte
+ private val buffer: ChunkBuilder[Byte] = new ChunkBuilder.Byte
+ private var bufferSize: Int = 0
+ private val closingBoundaryBytesSize = boundary.closingBoundaryBytes.size
+ private var boundaryMatches: Boolean = true
private var lastByte: OptionalByte = OptionalByte.None
private var isBufferEmpty = true
@@ -54,8 +57,14 @@ private[http] object FormState {
val crlf = byte == '\n' && !lastByte.isEmpty && lastByte.get == '\r'
+ val posInLine = bufferSize + (if (this.lastByte.isEmpty) 0 else 1)
+ boundaryMatches &&= posInLine < closingBoundaryBytesSize && boundary.closingBoundaryBytes(posInLine) == byte
+ val boundaryDetected = boundaryMatches && posInLine == closingBoundaryBytesSize - 1
+
def flush(ast: FormAST): Unit = {
buffer.clear()
+ bufferSize = 0
+ boundaryMatches = true
lastByte = OptionalByte.None
if (crlf && isBufferEmpty && (phase eq Phase.Part1)) phase0 = Phase.Part2
if (ast.isContent && dropContents) () else addToTree(ast)
@@ -72,7 +81,11 @@ private[http] object FormState {
case ClosingBoundary(_) => BoundaryClosed(tree)
}
- } else if (crlf && (phase eq Phase.Part2)) {
+ } else if ((crlf || boundaryDetected) && (phase eq Phase.Part2)) {
+ if (boundaryDetected) {
+ buffer += '-'
+ buffer += '-'
+ }
val ast = FormAST.makePart2(buffer.result(), boundary)
ast match {
@@ -87,6 +100,7 @@ private[http] object FormState {
if (!lastByte.isEmpty) {
if (isBufferEmpty) isBufferEmpty = false
buffer += lastByte.get
+ bufferSize += 1
}
lastByte = OptionalByte.Some(byte)
self
@@ -102,6 +116,8 @@ private[http] object FormState {
def reset(): Unit = {
tree0.clear()
buffer.clear()
+ bufferSize = 0
+ boundaryMatches = true
isBufferEmpty = true
dropContents = false
phase0 = Phase.Part1
diff --git a/zio-http/shared/src/main/scala/zio/http/package.scala b/zio-http/shared/src/main/scala/zio/http/package.scala
index b35a9971fe..80d5163612 100644
--- a/zio-http/shared/src/main/scala/zio/http/package.scala
+++ b/zio-http/shared/src/main/scala/zio/http/package.scala
@@ -18,7 +18,7 @@ package zio
import java.util.UUID
-import zio.http.codec.PathCodec
+import zio.http.codec.{PathCodec, SegmentCodec}
package object http extends UrlInterpolator with MdInterpolator {
@@ -36,12 +36,15 @@ package object http extends UrlInterpolator with MdInterpolator {
def withContext[C](fn: => C)(implicit c: WithContext[C]): ZIO[c.Env, c.Err, c.Out] =
c.toZIO(fn)
- def boolean(name: String): PathCodec[Boolean] = PathCodec.bool(name)
- def int(name: String): PathCodec[Int] = PathCodec.int(name)
- def long(name: String): PathCodec[Long] = PathCodec.long(name)
- def string(name: String): PathCodec[String] = PathCodec.string(name)
- val trailing: PathCodec[Path] = PathCodec.trailing
- def uuid(name: String): PathCodec[UUID] = PathCodec.uuid(name)
+ def boolean(name: String): SegmentCodec[Boolean] = SegmentCodec.bool(name)
+ def int(name: String): SegmentCodec[Int] = SegmentCodec.int(name)
+ def long(name: String): SegmentCodec[Long] = SegmentCodec.long(name)
+ def string(name: String): SegmentCodec[String] = SegmentCodec.string(name)
+ val trailing: SegmentCodec[Path] = SegmentCodec.trailing
+ def uuid(name: String): SegmentCodec[UUID] = SegmentCodec.uuid(name)
+ def anyOf(name: String, names: String*): PathCodec[Unit] =
+ if (names.isEmpty) PathCodec.literal(name)
+ else names.foldLeft(PathCodec.literal(name))((acc, n) => acc.orElse(PathCodec.literal(n)))
val Root: PathCodec[Unit] = PathCodec.empty
diff --git a/zio-http/shared/src/test/scala/zio/http/codec/SegmentCodecSpec.scala b/zio-http/shared/src/test/scala/zio/http/codec/SegmentCodecSpec.scala
new file mode 100644
index 0000000000..09f7d3e1aa
--- /dev/null
+++ b/zio-http/shared/src/test/scala/zio/http/codec/SegmentCodecSpec.scala
@@ -0,0 +1,95 @@
+package zio.http.codec
+
+import scala.util._
+
+import zio._
+import zio.test._
+
+import zio.http._
+import zio.http.codec.SegmentCodec.literal
+
+object SegmentCodecSpec extends ZIOSpecDefault {
+ override def spec: Spec[TestEnvironment with Scope, Any] = suite("SegmentCodec")(
+ test("combining literals is simplified to a single literal") {
+ val combineLitLit = Try(
+ "prefix" ~ "suffix",
+ )
+
+ val combineIntLitLit = Try(
+ int("anInt") ~ "prefix" ~ "suffix",
+ )
+
+ val expectedLit: Try[SegmentCodec[Unit]] = Success(SegmentCodec.Literal("prefixsuffix"))
+ val expectedIntLit: Try[SegmentCodec[Int]] = Success(
+ SegmentCodec.Combined(
+ SegmentCodec.IntSeg("anInt"),
+ SegmentCodec.Literal("prefixsuffix"),
+ Combiner.combine[Int, Unit].asInstanceOf[Combiner.WithOut[Int, Unit, Int]],
+ ),
+ )
+ assertTrue(
+ combineLitLit == expectedLit,
+ combineIntLitLit == expectedIntLit,
+ )
+ },
+ test("Can't combine two string extracting segments") {
+ val combineStrStr = Try(
+ string("aString") ~ string("anotherString"),
+ )
+ val expectedErrorMsg = "Cannot combine two string segments. Their names are aString and anotherString"
+ assertTrue(combineStrStr.failed.toOption.map(_.getMessage).contains(expectedErrorMsg))
+ },
+ test("Can't combine two int extracting segments") {
+ val combineIntInt = Try(
+ int("anInt") ~ int("anotherInt"),
+ )
+ val combineUUIDIntInt = Try(
+ uuid("aUUID") ~ int("anInt") ~ int("anotherInt"),
+ )
+ val expectedErrorMsg = "Cannot combine two numeric segments. Their names are anInt and anotherInt"
+ assertTrue(
+ combineIntInt.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ combineUUIDIntInt.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ )
+ },
+ test("Can't combine two long extracting segments") {
+ val combineLongLong = Try(
+ long("aLong") ~ long("anotherLong"),
+ )
+ val uuidLongLong = Try(
+ uuid("aUUID") ~ long("aLong") ~ long("anotherLong"),
+ )
+ val expectedErrorMsg = "Cannot combine two numeric segments. Their names are aLong and anotherLong"
+ assertTrue(
+ combineLongLong.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ uuidLongLong.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ )
+ },
+ test("Can't combine an int and a long extracting segment") {
+ val combineIntLong = Try(
+ int("anInt") ~ long("aLong"),
+ )
+ val uuidIntLong = Try(
+ uuid("aUUID") ~ int("anInt") ~ long("aLong"),
+ )
+ val expectedErrorMsg = "Cannot combine two numeric segments. Their names are anInt and aLong"
+ assertTrue(
+ combineIntLong.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ uuidIntLong.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ )
+ },
+ test("Can't combine a long and an int extracting segment") {
+ val combineLongInt = Try(
+ long("aLong") ~ int("anInt"),
+ )
+ val uuidLongInt = Try(
+ uuid("aUUID") ~ long("aLong") ~ int("anInt"),
+ )
+ val expectedErrorMsg = "Cannot combine two numeric segments. Their names are aLong and anInt"
+ assertTrue(
+ combineLongInt.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ uuidLongInt.failed.toOption.map(_.getMessage).contains(expectedErrorMsg),
+ )
+ },
+ )
+}
diff --git a/zio-http/shared/src/test/scala/zio/http/endpoint/http/HttpGenSpec.scala b/zio-http/shared/src/test/scala/zio/http/endpoint/http/HttpGenSpec.scala
new file mode 100644
index 0000000000..71307a484b
--- /dev/null
+++ b/zio-http/shared/src/test/scala/zio/http/endpoint/http/HttpGenSpec.scala
@@ -0,0 +1,191 @@
+package zio.http.endpoint.http
+
+import zio.test._
+
+import zio.schema._
+
+import zio.http._
+import zio.http.codec._
+import zio.http.endpoint._
+
+object HttpGenSpec extends ZIOSpecDefault {
+ case class User(name: String, age: Int)
+
+ object User {
+ implicit val schema: Schema[User] = DeriveSchema.gen[User]
+ }
+
+ val spec = suite("HttpGenSpec")(
+ test("Method and Path") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo")
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ assertTrue(rendered == "GET /api/foo")
+ },
+ test("POST for Method.ANY") {
+ val endpoint = Endpoint(Method.ANY / "api" / "foo")
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ assertTrue(rendered == "POST /api/foo")
+ },
+ test("Path with path parameters") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo" / int("userId"))
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@userId=
+ |
+ |GET /api/foo/{{userId}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Path with query parameters") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo").query[Int](QueryCodec.queryInt("userId"))
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@userId=
+ |
+ |GET /api/foo?userId={{userId}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Path with path and query parameters") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo" / int("pageId")).query[Int](QueryCodec.queryInt("userId"))
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@pageId=
+ |@userId=
+ |
+ |GET /api/foo/{{pageId}}?userId={{userId}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Path with path and query parameter with the same name") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo" / int("userId")).query[Int](QueryCodec.queryInt("userId"))
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@userId=
+ |
+ |GET /api/foo/{{userId}}?userId={{userId}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Header") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo").header(HeaderCodec.authorization)
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@Authorization=
+ |
+ |GET /api/foo
+ |Authorization: {{Authorization}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Header with example") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo")
+ .header(HeaderCodec.authorization.examples("default" -> Header.Authorization.Basic("admin", "admin")))
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@Authorization=Basic YWRtaW46YWRtaW4=
+ |
+ |GET /api/foo
+ |Authorization: {{Authorization}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Other header with example") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo")
+ .header(HeaderCodec.contentType.examples("default" -> Header.ContentType(MediaType.application.json)))
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@Content-type=application/json
+ |
+ |GET /api/foo
+ |Content-type: {{Content-type}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Header with path parameters") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo" / int("userId")).header(HeaderCodec.authorization)
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@userId=
+ |@Authorization=
+ |
+ |GET /api/foo/{{userId}}
+ |Authorization: {{Authorization}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Endpoint with doc") {
+ val endpoint = Endpoint(Method.GET / "api" / "foo" / int("userId")) ?? Doc.p("Get user by id")
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |# Get user by id
+ |
+ |@userId=
+ |
+ |GET /api/foo/{{userId}}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Endpoint with json payload") {
+ val endpoint = Endpoint(Method.POST / "api" / "foo" / int("userId")).in[User]
+ val httpEndpoint = HttpGen.fromEndpoint(endpoint)
+ val rendered = httpEndpoint.render
+ val expected =
+ """
+ |@userId=
+ |# type: String
+ |@name=
+ |# type: Int
+ |@age=
+ |
+ |POST /api/foo/{{userId}}
+ |Content-type: application/json
+ |
+ |{
+ |"name": {{name}},
+ |"age": {{age}}
+ |}""".stripMargin
+ assertTrue(rendered == expected)
+ },
+ test("Multiple endpoints") {
+ val endpoint1 = Endpoint(Method.GET / "api" / "foo" / int("userId")) ?? Doc.p("Get user by id")
+ val endpoint2 = Endpoint(Method.POST / "api" / "foo" / int("userId")).in[User]
+ val httpEndpoint1 = HttpGen.fromEndpoints(endpoint1, endpoint2)
+ val rendered = httpEndpoint1.render
+ val expected1 =
+ """
+ |# Get user by id
+ |
+ |@userId=
+ |
+ |GET /api/foo/{{userId}}""".stripMargin
+ val expected2 =
+ """
+ |@userId=
+ |# type: String
+ |@name=
+ |# type: Int
+ |@age=
+ |
+ |POST /api/foo/{{userId}}
+ |Content-type: application/json
+ |
+ |{
+ |"name": {{name}},
+ |"age": {{age}}
+ |}""".stripMargin
+ assertTrue(rendered == expected1 + "\n\n" + expected2)
+ },
+ )
+}
diff --git a/zio-http/shared/src/test/scala/zio/http/endpoint/openapi/OpenAPISpec.scala b/zio-http/shared/src/test/scala/zio/http/endpoint/openapi/OpenAPISpec.scala
new file mode 100644
index 0000000000..da3ab41a08
--- /dev/null
+++ b/zio-http/shared/src/test/scala/zio/http/endpoint/openapi/OpenAPISpec.scala
@@ -0,0 +1,64 @@
+package zio.http.endpoint.openapi
+
+import scala.collection.immutable.ListMap
+
+import zio.json.ast.Json
+import zio.test._
+
+import zio.http.endpoint.openapi.OpenAPI.SecurityScheme._
+
+object OpenAPISpec extends ZIOSpecDefault {
+
+ def toJsonAst(str: String): Json =
+ Json.decoder.decodeJson(str).toOption.get
+
+ def toJsonAst(api: OpenAPI): Json =
+ toJsonAst(api.toJson)
+
+ val spec = suite("OpenAPISpec")(
+ test("auth schema serialization") {
+ import OpenAPI._
+ val securitySchemes: ListMap[Key, ReferenceOr[SecurityScheme]] = ListMap(
+ Key.fromString("apiKeyAuth").get -> ReferenceOr.Or(
+ SecurityScheme.ApiKey(
+ None,
+ "Authorization",
+ ApiKey.In.Header,
+ ),
+ ),
+ )
+
+ val openApi = OpenAPI.empty.copy(
+ security = List(SecurityRequirement(Map("apiKeyAuth" -> List.empty))),
+ components = Some(OpenAPI.Components(securitySchemes = securitySchemes)),
+ )
+ val json = openApi.toJsonPretty
+ val expected = """{
+ | "openapi" : "3.1.0",
+ | "info" : {
+ | "title" : "",
+ | "version" : ""
+ | },
+ | "components" : {
+ | "securitySchemes" : {
+ | "apiKeyAuth" :
+ | {
+ | "type" : "apiKey",
+ | "name" : "Authorization",
+ | "in" : "Header"
+ | }
+ | }
+ | },
+ | "security" : [
+ | {
+ | "securitySchemes" : {
+ | "apiKeyAuth" : []
+ | }
+ | }
+ | ]
+ |}""".stripMargin
+
+ assertTrue(toJsonAst(json) == toJsonAst(expected))
+ },
+ )
+}