7个版本
0.2.5 | 2024年7月17日 |
---|---|
0.2.4 | 2023年11月17日 |
0.2.3 | 2023年8月18日 |
0.2.1 | 2023年7月30日 |
0.1.0 | 2023年7月24日 |
#144 in HTTP服务器
每月 30 次下载
220KB
4.5K SLoC
ggapi
用于与start.gg的API通信的库。
使用方法
您可以使用辅助函数从start.gg获取值
let data = ggapi::get_tournament_info(
"evo-2023","INSERT_TOKEN_HERE"
).await;
match data {
ggapi::GGResponse::Data(data) => {
println!("{}", data.tournament().name());
println!("{}", data.tournament().start_at().to_string());
println!("{}", data.tournament().slug());
println!("{}", data.tournament().short_slug());
}
ggapi::GGResponse::Error(data) => {
println!("ggapi error: {}", data);
}
}
每个辅助函数将获取一组小的特定值,而不是大查询。请参阅下面的注释以了解原因。
这些辅助函数是API的一些最常见用法,应该能够有效地处理甚至最大的锦标赛。
如果这些辅助函数不够用,您可以像这样直接执行查询
let query = r#"
query GetTournamentInfo($slug: String!) {
tournament(slug: $slug) {
id
name
slug
shortSlug
startAt
events {
id
name
phases {
id
name
phaseGroups(query: { page: 1, perPage: 100 }) {
nodes {
id
displayIdentifier
}
}
}
slug
}
}
}
"#;
let vars = Vars { slug: slug.to_string(), page: 1, per_page: 100 };
let data = execute_query(&token, &query, vars).await;
println!("{}", data.tournament().name());
println!("{}", data.tournament().start_at().to_string());
println!("{}", data.tournament().slug());
println!("{}", data.tournament().short_slug());
此示例与辅助函数get_tournament_info()执行相同的操作,但它允许您根据需要自定义查询。
直接使用execute_query()的方式,您不能保证返回一个安全值。除了潜在的错误之外,如果您正在处理大型锦标赛,您可能会遇到1000个对象的限制,因此尽可能使用辅助函数!
注释
- start.gg有一个速率限制,并且每个查询响应还有一个1000个对象的限制。如果您正在处理具有大量事件和参与者的大型锦标赛,您可能会遇到此限制。
- ggapi已经设计成希望避免这个问题:查询以更小、更分散的方式进行。而不是执行一个获取锦标赛所有信息的单个大型查询,该库将拆分查询以分而治之。
- 例如,get_tournament_info()函数只返回关于锦标赛的基本信息(名称、日期等)。它不会获取所有参赛者的信息,他们参加的比赛或任何锦标赛排名。这些是通过单独的查询实现的,这不仅可以减少执行查询所需的时间,还可以减少接收到的对象数量,以希望避免速率限制。
贡献
如果您想为项目做出贡献,我们鼓励您发起拉取请求!这个项目的大部分方面相对简单,但任何程度的帮助都十分感激!只需尽量遵循现有文件的风格,这个约定在整个库中(大部分)是一致的。
待办事项
- 完成库中缺失的剩余结构
- action_set(ActionSet)
- bracket_config(BracketConfig)
- league(League, LeagueConnection)
- match_config(MatchConfig)
- set(Set, SetConnection)
- set_slot(SetSlot)
- shop(Shop)
- shop_level(ShopLevel, ShopLevelConnection)
- shop_order_message(ShopOrderMessage, ShopOrderMesageConnection)
- standing(Standing, StandingConnection)
- standing_stats(StandingStats)
- stations(Stations, StationsConnection)
- wave(Wave)
- 通过添加缺失的类型来完成现有结构的实现
- 一些最初创建的类型在其余结构实现时缺少一些值。它们在每个结构中将放置的位置上都有注释,但尚未完成实现。一旦所有结构都实现完毕,就对每个结构进行一次全面检查,并填写剩余的结构。
- 为start.gg类型实现枚举
- activity_state(ActivityState)
- authorization_type(AuthorizationType)
- bracket_type(BracketType)
- comparator(Comparator)
- game_selection_type(GameSelectionType)
- match_config_verification_method(MatchConfigVerificationMethod)
- race_limit_mode(RaceLimitMode)
- race_type(RaceType)
- set_sort_type(SetSortType)
- social_connection_type(SocialConnectionType)
- stream_source(StreamSource)
- stream_type(StreamType)
- team_member_status(TeamMemberStatus)
- team_member_type(TeamMemberType)
- tournament_pagination_sort(TournamentPaginationSort)
- 找出如何处理JSON类型
- 错误处理
- 找出如何处理过大的查询
- 未计划
- 突变?
- 输入对象?
依赖关系
~5–20MB
~254K SLoC