nil_client/client/
world.rs1use super::Client;
5use crate::error::Result;
6use crate::http;
7use nil_core::npc::bot::BotId;
8use nil_core::npc::precursor::PrecursorId;
9use nil_core::player::PlayerId;
10use nil_core::world::config::{WorldConfig, WorldId};
11use nil_core::world::stats::WorldStats;
12use nil_payload::world::*;
13use nil_server_types::RemoteWorld;
14
15impl Client {
16 pub async fn create_remote_world(&self, req: CreateRemoteWorldRequest) -> Result<WorldId> {
17 http::json_post("create-remote-world")
18 .body(req)
19 .server(self.server)
20 .maybe_authorization(self.authorization.as_ref())
21 .circuit_breaker(self.circuit_breaker())
22 .user_agent(&self.user_agent)
23 .send()
24 .await
25 }
26
27 pub async fn get_remote_world(&self, req: GetRemoteWorldRequest) -> Result<RemoteWorld> {
28 http::json_put("get-remote-world")
29 .body(req)
30 .server(self.server)
31 .circuit_breaker(self.circuit_breaker())
32 .retry(&self.retry)
33 .user_agent(&self.user_agent)
34 .send()
35 .await
36 }
37
38 pub async fn get_remote_world_limit(&self) -> Result<u16> {
39 http::json_get("get-remote-world-limit")
40 .server(self.server)
41 .circuit_breaker(self.circuit_breaker())
42 .retry(&self.retry)
43 .user_agent(&self.user_agent)
44 .send()
45 .await
46 }
47
48 pub async fn get_remote_world_limit_per_user(&self) -> Result<u16> {
49 http::json_get("get-remote-world-limit-per-user")
50 .server(self.server)
51 .circuit_breaker(self.circuit_breaker())
52 .retry(&self.retry)
53 .user_agent(&self.user_agent)
54 .send()
55 .await
56 }
57
58 pub async fn get_remote_worlds(&self) -> Result<Vec<RemoteWorld>> {
59 http::json_get("get-remote-worlds")
60 .server(self.server)
61 .circuit_breaker(self.circuit_breaker())
62 .retry(&self.retry)
63 .user_agent(&self.user_agent)
64 .send()
65 .await
66 }
67
68 pub async fn get_world_bots(&self, req: GetWorldBotsRequest) -> Result<Vec<BotId>> {
69 http::json_put("get-world-bots")
70 .body(req)
71 .server(self.server)
72 .circuit_breaker(self.circuit_breaker())
73 .retry(&self.retry)
74 .user_agent(&self.user_agent)
75 .send()
76 .await
77 }
78
79 pub async fn get_world_config(&self, req: GetWorldConfigRequest) -> Result<WorldConfig> {
80 http::json_put("get-world-config")
81 .body(req)
82 .server(self.server)
83 .circuit_breaker(self.circuit_breaker())
84 .retry(&self.retry)
85 .user_agent(&self.user_agent)
86 .send()
87 .await
88 }
89
90 pub async fn get_world_players(&self, req: GetWorldPlayersRequest) -> Result<Vec<PlayerId>> {
91 http::json_put("get-world-players")
92 .body(req)
93 .server(self.server)
94 .circuit_breaker(self.circuit_breaker())
95 .retry(&self.retry)
96 .user_agent(&self.user_agent)
97 .send()
98 .await
99 }
100
101 pub async fn get_world_precursors(
102 &self,
103 req: GetWorldPrecursorsRequest,
104 ) -> Result<Vec<PrecursorId>> {
105 http::json_put("get-world-precursors")
106 .body(req)
107 .server(self.server)
108 .circuit_breaker(self.circuit_breaker())
109 .retry(&self.retry)
110 .user_agent(&self.user_agent)
111 .send()
112 .await
113 }
114
115 pub async fn get_world_stats(&self, req: GetWorldStatsRequest) -> Result<WorldStats> {
116 http::json_put("get-world-stats")
117 .body(req)
118 .server(self.server)
119 .circuit_breaker(self.circuit_breaker())
120 .retry(&self.retry)
121 .user_agent(&self.user_agent)
122 .send()
123 .await
124 }
125
126 pub(super) async fn leave(&self, req: LeaveRequest) -> Result<()> {
127 if self.server.is_local() {
128 http::post("leave")
129 .body(req)
130 .server(self.server)
131 .maybe_authorization(self.authorization.as_ref())
132 .circuit_breaker(self.circuit_breaker())
133 .user_agent(&self.user_agent)
134 .send()
135 .await
136 } else {
137 Ok(())
138 }
139 }
140
141 pub async fn save_local_world(&self, req: SaveLocalWorldRequest) -> Result<()> {
142 if self.server.is_local() {
143 http::post("save-local-world")
144 .body(req)
145 .server(self.server)
146 .maybe_authorization(self.authorization.as_ref())
147 .circuit_breaker(self.circuit_breaker())
148 .user_agent(&self.user_agent)
149 .send()
150 .await
151 } else {
152 Ok(())
153 }
154 }
155}