Skip to main content

nil_client/client/
world.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4use super::Client;
5use crate::error::Result;
6use crate::http;
7use nil_payload::request::world::*;
8use nil_payload::response::world::*;
9
10impl Client {
11  /// Endpoint: `POST /create-remote-world`
12  pub async fn create_remote_world(
13    &self,
14    req: CreateRemoteWorldRequest,
15  ) -> Result<CreateRemoteWorldResponse> {
16    http::json_post("create-remote-world")
17      .body(req)
18      .server(self.server)
19      .maybe_authorization(self.authorization.as_ref())
20      .circuit_breaker(self.circuit_breaker())
21      .user_agent(&self.user_agent)
22      .send()
23      .await
24  }
25
26  /// Endpoint: `POST /delete-remote-world`
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  /// Endpoint: `PUT /get-remote-world`
39  pub async fn get_remote_world(
40    &self,
41    req: GetRemoteWorldRequest,
42  ) -> Result<GetRemoteWorldResponse> {
43    http::json_put("get-remote-world")
44      .body(req)
45      .server(self.server)
46      .circuit_breaker(self.circuit_breaker())
47      .retry(&self.retry)
48      .user_agent(&self.user_agent)
49      .send()
50      .await
51  }
52
53  /// Endpoint: `GET /get-remote-world-limit`
54  pub async fn get_remote_world_limit(&self) -> Result<GetRemoteWorldLimitResponse> {
55    http::json_get("get-remote-world-limit")
56      .server(self.server)
57      .circuit_breaker(self.circuit_breaker())
58      .retry(&self.retry)
59      .user_agent(&self.user_agent)
60      .send()
61      .await
62  }
63
64  /// Endpoint: `GET /get-remote-world-limit-per-user`
65  pub async fn get_remote_world_limit_per_user(
66    &self,
67  ) -> Result<GetRemoteWorldLimitPerUserResponse> {
68    http::json_get("get-remote-world-limit-per-user")
69      .server(self.server)
70      .circuit_breaker(self.circuit_breaker())
71      .retry(&self.retry)
72      .user_agent(&self.user_agent)
73      .send()
74      .await
75  }
76
77  /// Endpoint: `GET /get-remote-worlds`
78  pub async fn get_remote_worlds(&self) -> Result<GetRemoteWorldsResponse> {
79    http::json_get("get-remote-worlds")
80      .server(self.server)
81      .circuit_breaker(self.circuit_breaker())
82      .retry(&self.retry)
83      .user_agent(&self.user_agent)
84      .send()
85      .await
86  }
87
88  /// Endpoint: `PUT /get-world-bots`
89  pub async fn get_world_bots(&self, req: GetWorldBotsRequest) -> Result<GetWorldBotsResponse> {
90    http::json_put("get-world-bots")
91      .body(req)
92      .server(self.server)
93      .circuit_breaker(self.circuit_breaker())
94      .retry(&self.retry)
95      .user_agent(&self.user_agent)
96      .send()
97      .await
98  }
99
100  /// Endpoint: `PUT /get-world-config`
101  pub async fn get_world_config(
102    &self,
103    req: GetWorldConfigRequest,
104  ) -> Result<GetWorldConfigResponse> {
105    http::json_put("get-world-config")
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  /// Endpoint: `PUT /get-world-personnel`
116  pub async fn get_world_personnel(
117    &self,
118    req: GetWorldPersonnelRequest,
119  ) -> Result<GetWorldPersonnelResponse> {
120    http::json_put("get-world-personnel")
121      .body(req)
122      .server(self.server)
123      .circuit_breaker(self.circuit_breaker())
124      .retry(&self.retry)
125      .user_agent(&self.user_agent)
126      .send()
127      .await
128  }
129
130  /// Endpoint: `PUT /get-world-players`
131  pub async fn get_world_players(
132    &self,
133    req: GetWorldPlayersRequest,
134  ) -> Result<GetWorldPlayersResponse> {
135    http::json_put("get-world-players")
136      .body(req)
137      .server(self.server)
138      .circuit_breaker(self.circuit_breaker())
139      .retry(&self.retry)
140      .user_agent(&self.user_agent)
141      .send()
142      .await
143  }
144
145  /// Endpoint: `PUT /get-world-precursors`
146  pub async fn get_world_precursors(
147    &self,
148    req: GetWorldPrecursorsRequest,
149  ) -> Result<GetWorldPrecursorsResponse> {
150    http::json_put("get-world-precursors")
151      .body(req)
152      .server(self.server)
153      .circuit_breaker(self.circuit_breaker())
154      .retry(&self.retry)
155      .user_agent(&self.user_agent)
156      .send()
157      .await
158  }
159
160  /// Endpoint: `PUT /get-world-rulers`
161  pub async fn get_world_rulers(
162    &self,
163    req: GetWorldRulersRequest,
164  ) -> Result<GetWorldRulersResponse> {
165    http::json_put("get-world-rulers")
166      .body(req)
167      .server(self.server)
168      .circuit_breaker(self.circuit_breaker())
169      .retry(&self.retry)
170      .user_agent(&self.user_agent)
171      .send()
172      .await
173  }
174
175  /// Endpoint: `PUT /get-world-stats`
176  pub async fn get_world_stats(&self, req: GetWorldStatsRequest) -> Result<GetWorldStatsResponse> {
177    http::json_put("get-world-stats")
178      .body(req)
179      .server(self.server)
180      .circuit_breaker(self.circuit_breaker())
181      .retry(&self.retry)
182      .user_agent(&self.user_agent)
183      .send()
184      .await
185  }
186
187  /// Endpoint: `POST /leave`
188  pub(super) async fn leave(&self, req: LeaveRequest) -> Result<()> {
189    if self.server.is_local() {
190      http::post("leave")
191        .body(req)
192        .server(self.server)
193        .maybe_authorization(self.authorization.as_ref())
194        .circuit_breaker(self.circuit_breaker())
195        .user_agent(&self.user_agent)
196        .send()
197        .await
198    } else {
199      Ok(())
200    }
201  }
202
203  /// Endpoint: `POST /save-local-world`
204  pub async fn save_local_world(&self, req: SaveLocalWorldRequest) -> Result<()> {
205    if self.server.is_local() {
206      http::post("save-local-world")
207        .body(req)
208        .server(self.server)
209        .maybe_authorization(self.authorization.as_ref())
210        .circuit_breaker(self.circuit_breaker())
211        .user_agent(&self.user_agent)
212        .send()
213        .await
214    } else {
215      Ok(())
216    }
217  }
218}