Nothing as of now
-
Breaking:
- Added the field
map_id
toScore
- Added the fields
description
andpermanent
toAccountHistory
- Added the variant
TournamentBan
toHistoryType
- Added the variant
TagsEdit
toBeatmapsetEvent
- Types no longer implement
serde::Serialize
unless theserialize
feature is specified - Replaced the method
GetBeatmapScores::score_type
withGetBeatmapScores::global
andGetBeatmapScores::country
- Added the field
-
Fixes:
- Anticipate
null
when deserializing user'sdefault_group
- Anticipate
-
Additions:
- Added the method
GetBeatmapScores::limit
- The method
GetBeatmapScores::mods
no longer shows the deprecation notice
- Added the method
-
Adjustments:
- Implemented
rkyv::{Archive, Serialize, Deserialize}
forBeatmapsetSearchSort
- Implemented
-
Additions:
- Added the method
GameMods::clock_rate
- Added
Ord
andPartialOrd
implementation forGameMode
- Added the method
Osu::replay_raw
to request the bytes of a replay. If thereplay
feature is enabled, the new methodOsu::replay
requests the replay and parses it into aosu_db::Replay
. Note that both of these methods require OAuth throughOsuBuilder::with_authorization
. (#2 - @mezo)
- Added the method
-
Breaking:
- Added the field
passed
toScore
(#3 - @Jeglerjeg) - Instead of introducing custom archived types, some types now archive into themselves.
Impacted types are:
Grade
,KudosuAction
,CommentSort
,HistoryType
,Playstyle
,ProfilePage
,BeatmapDifficultyAttributes
, andGameModeAttributes
.
- Added the field
-
Fixes:
- Fixed deserialization of datetimes and made them mode robust against future changes
-
Additions:
- Added the field
highest_rank
toUser
andUserCompact
- Added the field
-
Fixes:
- Fixed deserialization when requesting mapset id 3
- Fixed deserialization of datetimes in comments
-
Breaking changes:
- The serialization of all
OffsetDateTime
was changed. They used to be serialized into the amount of unix timestamp nanoseconds which was an i128. Since those could not be serialized into aserde_json::Value
without significant performance loss, all datetimes are now serialized into a string of the same format given by the osu!api.
- The serialization of all
- Adjustments:
- If the
cache
feature is enabled, the cache now fills proactively and also updates with respect to username changes
- If the
- Additions:
- Added a metric for the amount of Username-UserId pairs that are currently cached
- Added method
Osu::beatmap_difficulty_attributes
to retrieve theBeatmapDifficultyAttributes
of a beatmap. - Added method
OsuBuilder::retries
to specify how often requests should be retried in case they timeout. Defaults to 2 i.e. 3 attempts in total. - Added method
OsuBuilder::ratelimit
to specify how many requests per seconds can be made. Value will be clamped between 1 and 20 and defaults to 15. - Added method
Osu::beatmapset_from_map_id
to retrieve a mapset using a map ID. (#1 - @Jeglerjeg)
- Breaking changes:
- Renamed the
GameMode
variants to make them more idiomatic - Replaced the
chrono
dependency withtime
so all datetime fields now come from thetime
crate. This includes fields being (de)serialized differently. - Now using the specific api version 20220705 which renamed a few fields but only one of those made it through to the interface:
Score::created_at
is now calledScore::ended_at
- The
Score::score_id
field is now of typeOption<u64>
instead ofu64
GameModeAttributes::Taiko
now has an additional fieldpeak_difficulty
and no longer has the fieldar
- Renamed the
-
Breaking:
MatchEvent::Create
'suser_id
field is now of typeOption<u32>
(previously justu32
)Score::replay
is now of typeOption<bool>
(previously justbool
)- Added the field
guest_mapset_count
toUser
andUserCompact
- Added the field
creator_id
toBeatmap
andBeatmapCompact
- The field
user_id
ofComment
is now anOption<u32>
instead of justu32
. - The method
get_user
ofComment
now returnsOption<GetUser<'_>>
instead ofGetUser<'_>
-
Fixes:
- Now deserializing
medal
recent events properly - Added deserialization for mods in form of objects
- Now deserializing
- Fixed
Grade
calculation for taikoScore
s - Added feature
rkyv
to provideArchive
,Deserialize
, andSerialize
impls of rkyv for insanely fast (de)serialization - Bumped dashmap to v5.1.0
- Added
Osu::beatmap_user_scores
to get scores for all mod combinations of a user on a map
- Added method
Osu::beatmaps
to retrieve multiple maps at once (up to 50). - Added method
Osu::score
to retrieve a specific score. - Removed metrics for multiplayer endpoints.
- Added
UserId
to the prelude module - Added
Clone
,Eq
,PartialEq
, andHash
impls forUserId
- Improved compile time by removing
build.rs
file - Added method
GetUserScores::pinned
to retrieve the pinned scores of a user
- Added a bunch of documentation
- [Breaking] Adjusted some struct fields:
- Added
Group::has_modes
- Added
WikiPage::available_locales
- Removed
User::skype
- Removed
User::is_restricted
andUserCompact::is_restricted
- Added
- [Breaking] Removed
Osu
methodsmultiplayer_score
,multiplayer_scores
, andmultiplayer_user_highscore
- [Breaking] All fields representing a username are no longer
String
butSmallString<[u8; 15]>
instead. Since usernames can't be longer than 15 characters, this type will prevent allocations. It's aliased asUsername
. Affected fields are:Beatmapset.creator_name
BeatmapsetCommentOwnerChange.new_username
BeatmapsetCompact.creator_name
Comment.legacy_name
KudosuAction::KudosuGiver.username
NewsPost.author
EventUser.username
EventUser.previous_username
User::username
User::previous_usernames
UserCompact.username
UserCompact.previous_usernames
- Added
float
method toUserLevel
- [Breaking] All fields representing a country code are no longer
String
butSmallString<[u8; 2]>
instead. Since country codes can't be longer than 2 characters, this type will prevent allocations. It's aliased asCountryCode
. Affected fields are:CountryRanking.country_code
User.country_code
UserCompact.country_code
GetPerformanceRankings::country
- Dont only consider HD when calculating grade but also Flashlight and FadeIn
- Implemented
Default
forLanguage
,Genre
,ScoringType
,TeamType
, andTeam
enums - Made checking for
Score
equivalency more lenient w.r.t. their timestamps - [Breaking] Removed deprecated
cover_url
field fromUser
; usecover.url
instead - [Breaking]
description
field ofGroup
is nowOption<String>
instead ofString
- [Breaking] Added new
BeatmapsetEvent
variantOwnerChange
and declaredBeatmapsetEvent
as non-exhaustive - [Breaking]
OsuBuilder
no longer accepts a reqwest client since its now using a hyper client - [Breaking] Removed all endpoint-specific cursor structs and replaced them by a single struct
Cursor
- [Breaking] Adjusted / Renamed / Added some
OsuError
variants - [Breaking]
User
andUserCompact
fieldsranked_and_approved_beatmapset_count
,unranked_beatmapset_count
,favourite_beatmapset_count
,graveyard_beatmapset_count
, andloved_beatmapset_count
where replaced withranked_mapset_count
,pending_mapset_count
,favourite_mapset_count
,graveyard_mapset_count
, andloved_mapset_count
, respectively - [Breaking]
GetUserBeatmapsets
methodsranked_and_approved
andunranked
were replaced withranked
andpending
, respectively - [Breaking] Removed
GetUserBeatmapset::favourite
method
- Initial release