-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.js
More file actions
97 lines (90 loc) · 2.71 KB
/
Copy pathapi.js
File metadata and controls
97 lines (90 loc) · 2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Pattern:
Api function takes in (json) => {stuff;}
to be executed on successful retrieval
static async rooms(useRooms); or (body, use__)
useRooms is a function (rooms) => void
*/
class Api {
/**
* @param {([room]) => void} useRooms
*/
static rooms(useRooms, handleError = () => {}) {
fetch(`${_URL}/rooms/`, {
method: "GET",
}).catch((error) => {
handleError();
return Promise.reject(error);
}).then(resp => resp.json()).then(json => useRooms(json));
}
/**
* @param {(string) => void} usePlayerID
*/
static playerID(usePlayerID, handleError = () => {}) {
fetch(`${_URL}/player_id/`, {
method: "GET",
}).catch((error) => {
handleError();
return Promise.reject(error);
}).then(resp => resp.text()).then(text => usePlayerID(text));
}
/**
* @param {string} roomID
* @param {string} playerID
* @param {(socketData: {port: number, socketID: string}) => void} useSocketData
*/
static roomSocket(roomID, playerID, useSocketData, handleError = () => {}) {
fetch(`${_URL}/room_socket/${roomID}/`, {
body: playerID,
method: "POST",
}).catch((error) => {
handleError();
return Promise.reject(error);
}).then(resp => resp.json()).then(json => useSocketData(json));
}
/**
* @param {string} playerID
* @param {number} w
* @param {number} h
* @param {number} connect
* @param {number} minutes
* @param {number} increment
* @param {(string) => void} useRoomID
*/
static createRoom(
playerID,
w, h, connect,
gravity,
minutes, increment,
useRoomID, handleError = () => {}) {
fetch(`${_URL}/create_room/`, {
body: JSON.stringify({
playerID: playerID,
w: w,
h: h,
connect: connect,
gravity: gravity,
minutes: minutes,
increment: increment,
}),
method: "POST",
}).catch((error) => {
handleError();
return Promise.reject(error);
}).then(resp => resp.text()).then(text => useRoomID(text));
}
/**
* @param {string} roomID
* @param {string} playerID
* @param {() => void} onSuccess
*/
static joinRoom(roomID, playerID, onSuccess, handleError = () => {}) {
fetch(`${_URL}/join_room/${roomID}/`, {
body: playerID,
method: "POST",
}).catch((error) => {
handleError();
return Promise.reject(error);
}).then(onSuccess);
}
}