KO
|
EN
gitlite — search
Search
#javascript
#python
#hacktoberfest
#react
#ai
#typescript
#llm
#go
#golang
#android
#machine-learning
#rust
#deep-learning
#linux
automorph
★ 13
Open GitHub ↗
RPC client and server library for Scala
Download README (.md)
Explore Similar Repositories
AetherSX2
:
Latest LGPL code of AetherSX2 provided by Tahlreth @ https://www.aethersx2.com/lgpl/aethersx2-lgpl.tar.gz
Python-Tutorial
:
A free and online Python book in Persian
OnTop
:
A program that allows you to keep an app always on top.
mrs_spring_tutorial
:
This repo contains data files and code used for tutorial MD00 at the MRS spring meeting 2023.
DaVinci_Resolve_API_Docs
:
Support multiple languages! These docs are formatted copy of the official BlackmagicDesign DaVinci Resolve documentations.
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
automorph
?
Download (.md)
 [](https://automorph.org) [](https://automorph.org/api/automorph.html) [](https://central.sonatype.com/namespace/org.automorph) [](https://www.scala-lang.org) [](https://github.com/automorph-org/automorph/blob/main/LICENSE) [](https://github.com/automorph-org/automorph/actions/workflows/build.yml) **Automorph** is a Scala [RPC](https://en.wikipedia.org/wiki/Remote_procedure_call) client and server library for invoking and exposing remote APIs in a few lines of code. ## Features - **Seamless** - Generate optimized [RPC](https://en.wikipedia.org/wiki/Remote_procedure_call) [client](https://automorph.org/docs/Quickstart#static-client) or [server](https://automorph.org/docs/Quickstart#server) bindings from existing public API methods at compile time. - **Flexible** - Customize [data serialization](https://automorph.org/docs/Examples#data-type-serialization), remote API [function names](https://automorph.org/docs/Examples#client-function-names), RPC protocol [errors](https://automorph.org/docs/Examples#client-exceptions) and [authentication](https://automorph.org/docs/Examples#http-authentication). - **Modular** - Choose plugins for [RPC protocol](https://automorph.org/docs/Plugins#rpc-protocol), [effect handling](https://automorph.org/docs/Plugins#effect-system), [transport protocol](https://automorph.org/docs/Plugins#client-transport) and [message format](https://automorph.org/docs/Plugins#message-codec). - **Permissive** - Consume or create [dynamic message payload](https://automorph.org/docs/Examples#dynamic-payload) and access or modify [transport layer metadata](https://automorph.org/docs/Examples#metadata). - **Discoverable** - Utilize discovery functions providing [OpenRPC](https://spec.open-rpc.org) 1.3+ and [OpenAPI](https://www.openapis.org) 3.1+ schemas for exposed APIs. - **Compatible** - Use with [Scala](https://www.scala-lang.org) 3.3+ or 2.13+ on [JRE](https://openjdk.java.net/) 11+ and easily integrate with various popular [libraries](https://automorph.org/docs/Plugins). - **RPC protocols** - [JSON-RPC](https://www.jsonrpc.org/specification), [Web-RPC](https://automorph.org/docs/Web-RPC). - **Transport layers** - [HTTP](https://automorph.org/docs/Examples#http-authentication), [WebSocket](https://automorph.org/docs/Examples#websocket-transport), [AMQP](https://automorph.org/docs/Examples#amqp-transport). - **Effect handling** - [Asynchronous](https://automorph.org/docs/Examples#asynchronous-call), [Synchronous](https://automorph.org/docs/Examples#synchronous-call), [Monadic](https://automorph.org/docs/Examples#effect-system). ## Example ```scala // Define a remote API trait Api: def hello(n: Int): Future[String] // Create server implementation of the remote API val service = new Api: def hello(n: Int): Future[String] = Future(s"Hello world $n") // Expose a server API implementation to be called remotely val apiServer = server.bind(service) // Create a type-safe local proxy for the remote API from an API trait val remoteApi = client.bind[Api] // Call the remote API function via the local proxy remoteApi.hello(1) // Call the remote API function dynamically without using the API trait client.call[String]("hello")("n" -> 1) ``` *Note*: Imports, server setup and client setup are omitted here and can be found in the [full example](https://automorph.org/docs/Quickstart#server). ## Links - [Get Started](https://automorph.org/docs/Quickstart) - [Documentation](https://automorph.org) - [API](https://automorph.org/api/automorph.html) - [Artifacts](https://central.sonatype.com/namespace/org.automorph) - [Contact](mailto:automorph.org@proton.me)