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 .user_agent(&self.user_agent)
22 .send()
23 .await
24 }
25
26 pub async fn get_remote_world(&self, req: GetRemoteWorldRequest) -> Result<RemoteWorld> {
27 http::json_post("get-remote-world")
28 .body(req)
29 .server(self.server)
30 .user_agent(&self.user_agent)
31 .send()
32 .await
33 }
34
35 pub async fn get_remote_worlds(&self) -> Result<Vec<RemoteWorld>> {
36 http::json_get("get-remote-worlds")
37 .server(self.server)
38 .user_agent(&self.user_agent)
39 .send()
40 .await
41 }
42
43 pub async fn get_world_bots(&self, req: GetWorldBotsRequest) -> Result<Vec<BotId>> {
44 http::json_post("get-world-bots")
45 .body(req)
46 .server(self.server)
47 .user_agent(&self.user_agent)
48 .send()
49 .await
50 }
51
52 pub async fn get_world_config(&self, req: GetWorldConfigRequest) -> Result<WorldConfig> {
53 http::json_post("get-world-config")
54 .body(req)
55 .server(self.server)
56 .user_agent(&self.user_agent)
57 .send()
58 .await
59 }
60
61 pub async fn get_world_players(&self, req: GetWorldPlayersRequest) -> Result<Vec<PlayerId>> {
62 http::json_post("get-world-players")
63 .body(req)
64 .server(self.server)
65 .user_agent(&self.user_agent)
66 .send()
67 .await
68 }
69
70 pub async fn get_world_precursors(
71 &self,
72 req: GetWorldPrecursorsRequest,
73 ) -> Result<Vec<PrecursorId>> {
74 http::json_post("get-world-precursors")
75 .body(req)
76 .server(self.server)
77 .user_agent(&self.user_agent)
78 .send()
79 .await
80 }
81
82 pub async fn get_world_stats(&self, req: GetWorldStatsRequest) -> Result<WorldStats> {
83 http::json_post("get-world-stats")
84 .body(req)
85 .server(self.server)
86 .user_agent(&self.user_agent)
87 .send()
88 .await
89 }
90
91 pub(super) async fn leave(&self, req: LeaveRequest) -> Result<()> {
92 if self.server.is_local() {
93 http::post("leave")
94 .body(req)
95 .server(self.server)
96 .maybe_authorization(self.authorization.as_ref())
97 .user_agent(&self.user_agent)
98 .send()
99 .await
100 } else {
101 Ok(())
102 }
103 }
104
105 pub async fn save_local_world(&self, req: SaveLocalWorldRequest) -> Result<()> {
106 if self.server.is_local() {
107 http::post("save-local-world")
108 .body(req)
109 .server(self.server)
110 .maybe_authorization(self.authorization.as_ref())
111 .user_agent(&self.user_agent)
112 .send()
113 .await
114 } else {
115 Ok(())
116 }
117 }
118}