webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Quoridor.java
changeset 82 9ac7acee7d9f
parent 52 45fb5f885591
child 83 8dd8b041a3e1
     1.1 --- a/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Quoridor.java	Sun Aug 30 16:04:27 2009 +0200
     1.2 +++ b/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Quoridor.java	Sun Sep 13 16:48:54 2009 +0200
     1.3 @@ -32,9 +32,19 @@
     1.4  import com.sun.jersey.spi.resource.Singleton;
     1.5  import com.sun.net.httpserver.HttpServer;
     1.6  import java.io.File;
     1.7 +import java.io.FileInputStream;
     1.8  import java.io.IOException;
     1.9  import java.net.ServerSocket;
    1.10 +import java.util.HashMap;
    1.11 +import java.util.Map;
    1.12 +import java.util.Properties;
    1.13 +import java.util.UUID;
    1.14 +import javax.ws.rs.GET;
    1.15 +import javax.ws.rs.PUT;
    1.16  import javax.ws.rs.Path;
    1.17 +import javax.ws.rs.Produces;
    1.18 +import javax.ws.rs.QueryParam;
    1.19 +import javax.ws.rs.core.MediaType;
    1.20  
    1.21  /**
    1.22   *
    1.23 @@ -45,6 +55,7 @@
    1.24  public final class Quoridor {
    1.25      private final File path;
    1.26      private Games games;
    1.27 +    private final Map<UUID,String> loggedIn;
    1.28  
    1.29      public Quoridor() {
    1.30          final String prop = System.getProperty("quoridor.dir"); // NOI18N
    1.31 @@ -53,16 +64,50 @@
    1.32          }
    1.33          path = new File(prop);
    1.34          path.mkdirs();
    1.35 +        loggedIn = new HashMap<UUID, String>();
    1.36      }
    1.37  
    1.38      @Path("games")
    1.39      public Games getGames() {
    1.40          if (games == null) {
    1.41 -            games = new Games(new File(path, "games"));
    1.42 +            games = new Games(new File(path, "games"), this); // NOI18N
    1.43          }
    1.44          return games;
    1.45      }
    1.46  
    1.47 +    @Path("login")
    1.48 +    @PUT
    1.49 +    @Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
    1.50 +    public String login(
    1.51 +        @QueryParam("name") String name,
    1.52 +        @QueryParam("password") String password
    1.53 +    ) {
    1.54 +        File f = new File(path, "passwd"); // NOI18Nt
    1.55 +        Properties p = new Properties();
    1.56 +        try {
    1.57 +            p.load(new FileInputStream(f));
    1.58 +        } catch (IOException ex) {
    1.59 +            ex.printStackTrace();
    1.60 +        }
    1.61 +        if (name != null && password.equals(p.getProperty(name))) {
    1.62 +            UUID uuid = UUID.randomUUID();
    1.63 +            loggedIn.put(uuid, name);
    1.64 +            return uuid.toString();
    1.65 +        } else {
    1.66 +            return null;
    1.67 +        }
    1.68 +        
    1.69 +    }
    1.70 +
    1.71 +    @Path("login")
    1.72 +    @GET
    1.73 +    @Produces({ MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
    1.74 +    public String isLoggedIn(
    1.75 +        @QueryParam("id") String id
    1.76 +    ) {
    1.77 +        return id == null ? null : loggedIn.get(UUID.fromString(id));
    1.78 +    }
    1.79 +
    1.80      //
    1.81      // start the server
    1.82      //