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 delete_remote_world(&self, req: DeleteRemoteWorldRequest) -> Result<()> {
28 http::post("delete-remote-world")
29 .body(req)
30 .server(self.server)
31 .maybe_authorization(self.authorization.as_ref())
32 .circuit_breaker(self.circuit_breaker())
33 .user_agent(&self.user_agent)
34 .send()
35 .await
36 }
37
38 pub async fn get_remote_world(&self, req: GetRemoteWorldRequest) -> Result<RemoteWorld> {
39 http::json_put("get-remote-world")
40 .body(req)
41 .server(self.server)
42 .circuit_breaker(self.circuit_breaker())
43 .retry(&self.retry)
44 .user_agent(&self.user_agent)
45 .send()
46 .await
47 }
48
49 pub async fn get_remote_world_limit(&self) -> Result<u16> {
50 http::json_get("get-remote-world-limit")
51 .server(self.server)
52 .circuit_breaker(self.circuit_breaker())
53 .retry(&self.retry)
54 .user_agent(&self.user_agent)
55 .send()
56 .await
57 }
58
59 pub async fn get_remote_world_limit_per_user(&self) -> Result<u16> {
60 http::json_get("get-remote-world-limit-per-user")
61 .server(self.server)
62 .circuit_breaker(self.circuit_breaker())
63 .retry(&self.retry)
64 .user_agent(&self.user_agent)
65 .send()
66 .await
67 }
68
69 pub async fn get_remote_worlds(&self) -> Result<Vec<RemoteWorld>> {
70 http::json_get("get-remote-worlds")
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_bots(&self, req: GetWorldBotsRequest) -> Result<Vec<BotId>> {
80 http::json_put("get-world-bots")
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_config(&self, req: GetWorldConfigRequest) -> Result<WorldConfig> {
91 http::json_put("get-world-config")
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_players(&self, req: GetWorldPlayersRequest) -> Result<Vec<PlayerId>> {
102 http::json_put("get-world-players")
103 .body(req)
104 .server(self.server)
105 .circuit_breaker(self.circuit_breaker())
106 .retry(&self.retry)
107 .user_agent(&self.user_agent)
108 .send()
109 .await
110 }
111
112 pub async fn get_world_precursors(
113 &self,
114 req: GetWorldPrecursorsRequest,
115 ) -> Result<Vec<PrecursorId>> {
116 http::json_put("get-world-precursors")
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 async fn get_world_stats(&self, req: GetWorldStatsRequest) -> Result<WorldStats> {
127 http::json_put("get-world-stats")
128 .body(req)
129 .server(self.server)
130 .circuit_breaker(self.circuit_breaker())
131 .retry(&self.retry)
132 .user_agent(&self.user_agent)
133 .send()
134 .await
135 }
136
137 pub(super) async fn leave(&self, req: LeaveRequest) -> Result<()> {
138 if self.server.is_local() {
139 http::post("leave")
140 .body(req)
141 .server(self.server)
142 .maybe_authorization(self.authorization.as_ref())
143 .circuit_breaker(self.circuit_breaker())
144 .user_agent(&self.user_agent)
145 .send()
146 .await
147 } else {
148 Ok(())
149 }
150 }
151
152 pub async fn save_local_world(&self, req: SaveLocalWorldRequest) -> Result<()> {
153 if self.server.is_local() {
154 http::post("save-local-world")
155 .body(req)
156 .server(self.server)
157 .maybe_authorization(self.authorization.as_ref())
158 .circuit_breaker(self.circuit_breaker())
159 .user_agent(&self.user_agent)
160 .send()
161 .await
162 } else {
163 Ok(())
164 }
165 }
166}