11package net .b07z .sepia .websockets .server ;
22import static spark .Spark .*;
33
4- import java .util .ArrayList ;
5- import java .util .List ;
6-
7- import org .json .simple .JSONArray ;
84import org .json .simple .JSONObject ;
95import org .slf4j .Logger ;
106import org .slf4j .LoggerFactory ;
117
12- import net .b07z .sepia .server .core .data .Role ;
138import net .b07z .sepia .server .core .endpoints .CoreEndpoints ;
149import net .b07z .sepia .server .core .server .ConfigDefaults ;
15- import net .b07z .sepia .server .core .server .RequestParameters ;
16- import net .b07z .sepia .server .core .server .RequestPostParameters ;
1710import net .b07z .sepia .server .core .server .SparkJavaFw ;
1811import net .b07z .sepia .server .core .tools .DateTime ;
1912import net .b07z .sepia .server .core .tools .Debugger ;
2013import net .b07z .sepia .server .core .tools .JSON ;
2114import net .b07z .sepia .server .core .tools .Timer ;
22- import net .b07z .sepia .server .core .users .Account ;
2315import net .b07z .sepia .websockets .common .SocketChannel ;
2416import net .b07z .sepia .websockets .common .SocketChannelPool ;
2517import net .b07z .sepia .websockets .common .SocketConfig ;
26- import spark .Request ;
27- import spark .Response ;
18+ import net .b07z .sepia .websockets .endpoints .ChannelManager ;
2819
2920public class StartWebSocketServer {
3021
@@ -116,7 +107,7 @@ public static void loadSettings(String[] args) {
116107 //SETUP DEFAULT CHANNELS
117108 public static void createDefaultChannels (){
118109 try {
119- SocketChannelPool .createChannel ("openWorld" , SocketConfig .SERVERNAME , true ); //Open world
110+ SocketChannelPool .createChannel (SocketChannel . OPEN_WORLD , SocketConfig .SERVERNAME , true ); //Open world
120111
121112 } catch (Exception e ) {
122113 log .error ("One or more default channels could not be created!" );
@@ -143,8 +134,8 @@ public static void main(String[] args) {
143134 get ("/ping" , (request , response ) -> CoreEndpoints .ping (request , response , SocketConfig .SERVERNAME ));
144135 get ("/validate" , (request , response ) -> CoreEndpoints .validateServer (request , response , SocketConfig .SERVERNAME ,
145136 SocketConfig .apiVersion , SocketConfig .localName , SocketConfig .localSecret ));
146- post ("/createChannel" , (request , response ) -> createChannel (request , response ));
147- post ("/joinChannel" , (request , response ) -> joinChannel (request , response ));
137+ post ("/createChannel" , (request , response ) -> ChannelManager . createChannel (request , response ));
138+ post ("/joinChannel" , (request , response ) -> ChannelManager . joinChannel (request , response ));
148139 //TODO:
149140 //getChannel, getAllChannels, getChannelData, deleteChannel
150141
@@ -163,90 +154,4 @@ public static void main(String[] args) {
163154
164155 Debugger .println ("Initialization complete, lets go!" , 3 );
165156 }
166-
167- /**
168- * Create a new channel.
169- */
170- public static String createChannel (Request request , Response response ){
171- //get parameters (or throw error)
172- RequestParameters params = new RequestPostParameters (request );
173-
174- //authenticate
175- Account userAccount = new Account ();
176- if (userAccount .authenticate (params )){
177- //log.info("Authenticated: " + userAccount.getUserID() + ", roles: " + userAccount.getUserRoles()); //debug
178- if (userAccount .hasRole (Role .developer .name ())){
179- //get parameters
180- String channelId = params .getString ("channelId" );
181- JSONArray initialMembers = params .getJsonArray ("members" );
182- String owner = userAccount .getUserID ();
183- boolean isPublic = params .getBoolOrDefault ("isPublic" , false );
184- boolean addAssistant = params .getBoolOrDefault ("addAssistant" , true );
185-
186- if (channelId == null || channelId .isEmpty ()){
187- JSONObject msgJSON = JSON .make ("result" , "fail" , "error" , "missing channelId" );
188- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 200 );
189- }else {
190- //TODO: filter valid channel names
191- }
192- try {
193- //create channel
194- String channelKey = SocketChannelPool .createChannel (channelId , owner , isPublic );
195- if (channelKey != null ){
196- List <String > members = new ArrayList <>();
197- members .add (owner );
198- if (initialMembers != null && !initialMembers .isEmpty ()){
199- for (Object o : initialMembers ){
200- members .add ((String ) o );
201- }
202- }
203- SocketChannel sc = SocketChannelPool .getChannel (channelId );
204- for (String s : members ){
205- sc .addUser (s , channelKey );
206- //System.out.println("Member: " + s); //DEBUG
207- }
208- if (addAssistant ){
209- sc .addSystemDefaultAssistant (); //Add SEPIA too
210- //System.out.println("Member: " + SocketConfig.systemAssistantId); //DEBUG
211- }
212- JSONObject msgJSON = JSON .make ("result" , "success" , "key" , channelKey , "channelId" , channelId );
213- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 200 );
214-
215- }else {
216- //error
217- JSONObject msgJSON = JSON .make ("result" , "fail" , "error" , "creation failed! Maybe already exists?" );
218- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 200 );
219- }
220- }catch (Exception e ){
221- //error
222- JSONObject msgJSON = JSON .make ("result" , "fail" , "error" , e .getMessage ());
223- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 200 );
224- }
225- }else {
226- //refuse
227- JSONObject msgJSON = JSON .make ("result" , "fail" , "error" , "not authorized, missing required role" );
228- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 404 );
229- }
230- }else {
231- //refuse
232- JSONObject msgJSON = JSON .make ("result" , "fail" , "error" , "not authorized" );
233- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 404 );
234- }
235- }
236- /**
237- * Join a channel.
238- */
239- public static String joinChannel (Request request , Response response ){
240- //TODO:
241- // - authenticate
242- // - get parameters (channelId, key, user)
243- // - return success
244- // ...
245- //get parameters (or throw error)
246- //RequestParameters params = new RequestPostParameters(request);
247-
248- JSONObject msgJSON = JSON .make ("result" , "fail" , "error" , "not yet implemented" );
249- return SparkJavaFw .returnResult (request , response , msgJSON .toJSONString (), 200 );
250- }
251-
252157}
0 commit comments