8.0 KiB
[unreleased]
0.20.0
Breaking changes:
- Bump dependencies
0.19.0
Breaking changes:
- Remove the
RequestDeserializationError
andResponseDeserializationError
types in favor of usingDeserializationError
directly - Replace singular
path
metadata field withstable_path
,r0_path
andunstable_path
- Require callers of
OutgoingRequest::try_into_http_request
to pass a list of server-supported matrix versions for selecting whether to use r0, unstable or stable paths - Require callers of
IncomingRequest::try_from_http_request
to pass path arguments, to avoid unnecessary extra path parsing
0.18.5
Bug fixes:
- Stop adding a
Content-Type
header to requests without any fields- This fixes usage of the
.well-known
endpoints in a browser WASM environment if the server isn't configured to allow that header for cross-origin requests
- This fixes usage of the
0.18.4
Yanked.
0.18.3
Improvements:
- Refactor handling of newtype bodies in
ruma_api!
- Likely what fixed a bug affecting
ruma-federation-api
- Likely what fixed a bug affecting
0.18.2
Bug fixes:
- Fix (de)serialization of requests with a
#[ruma_api(body)]
field
0.18.1
Breaking changes:
- Generate "struct structs" for
Request
andResponse
, even if there are no fields- We used to generate unit structs when there's no fields
- Upgrade dependencies
Bug fixes:
- Allow all borrowing query and / or body parameters in
ruma_api!
to becfg
-conditional- This used lead to broken code being generated and was fixed by moving all
impl
block generation code into a derive macro (derive macros run aftercfg
expansion)
- This used lead to broken code being generated and was fixed by moving all
0.18.0
Yanked, this was the same as 0.17.2 but accidentally released with the minor rather than the patch version segment incremented. It then turned out that it did actually contain breaking changes, so 0.17.2 was yanked too.
0.17.2
Yanked since it unintentionally contained breaking changes.
0.17.1
Improvements:
- Allow
ruma_api!
to be used by crates that depend on matrix-sdk, but not (directly) on ruma or ruma-api
0.17.0
Breaking changes:
- Update the syntax of the
ruma_api!
macro. Colons are now required after the keywordsmetadata
,request
andresponse
. - The
EndpointError
trait now requiresstd::error::Error
. This allows integratingEndpointError
s in the common rust error ecosystem likethiserror
andanyhow
. - The
Endpoint
trait has been replaced by four of new traits that each capture a subset of its previous functionality:OutgoingRequest
,OutgoingResponse
,IncomingRequest
,IncomingResponse
. See the API documentation for more details. - Endpoint authentication is now more granularly defined by an enum
AuthScheme
instead of a boolean. Theruma_api!
macro has been updated to requireauthentication
instead ofrequires_authentication
. - Remove
error::Void
, the default error type forruma_api!
is nowerror::MatrixError
(see below)
Improvements:
- The
EndpointError
s that come with ruma crates now implementstd::error::Error
- Add a new
MatrixError
type to theerror
module that consists of a HTTP status code and JSONbody
and is the new default error type forruma_api!
Bug fixes:
- Prevent panic when building requests with an invalid URI
0.16.1
Bug fixes:
- Update ruma-serde to 0.2.0, fixing some issues with query string deserialization (some issues still remain but will be fixed in a semver-compatible version)
0.16.0
Breaking changes:
- Update ruma-identifiers to 0.16.1
- Remove the
Outgoing
trait and update theEndpoint
trait and code generation accordingly
Improvements:
- Remove dependency on the
url
crate
0.15.1
Bug fixes:
- Write
{}
to the body of responses without body fields (fix from ruma-api-macros)
0.15.0
Breaking changes:
- Emit an error on non-UTF8 characters in path segments
- Before, they would be replaced by the unknown character codepoint
FromHttpResponseError
now has a generic parameter for the expected type of error the homeserver could return
Improvements:
- Enable deserialization of unsuccessful responses
0.14.0
Breaking changes:
- Update ruma-api-macros to 0.11.0
- This includes a fix that uses
TryFrom<&str>
instead of serde_json for path segment deserialization
- This includes a fix that uses
0.13.1
Improvements:
- Update ruma-api-macros to 0.10.1
Incoming
types will now implementDebug
0.13.0
Breaking changes:
- Instead of one
Error
type, there is now many- The new types live in their own
error
module - They provide access to details that were previously hidden
- The new types live in their own
- Our Minimum Supported Rust Version is now 1.40.0
0.12.1
Improvements:
- Update ruma-api-macros to 0.9.1 to support
#[ruma_api(raw_body)]
0.12.0
Breaking changes:
- Our Minimum Supported Rust Version is now 1.39.0
- Support for the server-side use case has been restored. For details, see the documentation for
ruma_api!
, the newOutgoing
trait and its derive macro
0.11.2
Improvements:
- Update ruma-api-macros to 0.8.2
0.11.1
Improvements:
- Update ruma-api-macros to 0.8.1
0.11.0
Breaking changes:
- To be able to use ruma-event's
EventResult
in ruma-client without large-ish refactorings to ruma-api, we removed support for the server-side use case in ruma-api 0.11.0. It will be added back in a future release.
Improvements:
- Our CI now tests ruma-api on Rust 1.34.2, beta and nightly in addition to stable
- Updated syn and quote to 1.0
0.10.0
Breaking changes:
- The
Endpoint
trait is now implemented directly on the relevant request type rather than having both the request and response be associated types.
Improvements:
- ruma-api now re-exports the
ruma_api
macro from ruma-api-macros. Downstream crates no longer need to depend on ruma-api-macros directly. - The ruma-api and ruma-api-macros repositories have been merged into one Cargo workspace for easier dependency management and development.
0.9.0
Breaking changes:
- The
Request
andResponse
associated types on theEndpoint
trait are now bounded bystd::convert::TryFrom
instead offutures::future::FutureFrom
. This was done in preparation for futures 0.3 which does not have this trait. - The conversions required to and from
http::Request
andhttp::Response
for theRequest
andResponse
associated types on theEndpoint
trait now useVec<u8>
as the body type. This removes the dependency on hyper. It's possible this will change again in a future release. See https://github.com/rustasync/team/issues/84 for details.
Improvements:
- Internal code quality improvements via clippy and rustfmt.
0.8.0
Breaking changes:
- The
Error
type is now an opaque struct that hides implementation details. - Updates to ruma-identifiers 0.13.
Improvements:
- ruma-api now uses clippy to improve code quality.
0.7.0
Improvements:
- ruma-api now runs on stable Rust, requiring version 1.34 or higher.
- Updated all dependencies for upstream improvements.
- Updated all code to use Rust edition 2018.
0.6.0
Breaking changes:
- Hyper has been updated to version 0.12.
- A new variant to the
Error
enum for hyper errors has been added. - Conversions between this crate's request and response types and the http crate's request and response types are now bidirectional.
0.5.0
Breaking changes:
- Types from hyper have been replaced with types from the http crate.
- The
Error
enum can no longer be matched exhaustively, to allow for future expansion without breaking the crate's API.
0.4.0
Breaking changes:
The crate has been redesign to focus on conversions between an endpoint's request and response types and Hyper request and response types. Implementations are expected to be generated via ruma-api-macros.
0.3.0
Breaking changes:
Endpoint::router_path
now returns a&'static str
- Added new required methods to
Endpoint
:name
,description
,requires_authentication
, andrate_limited
.
0.2.0
Breaking changes:
Endpoint::Query_params
must now beDeserialize + Serialize
.
0.1.0
Initial release.