package org.wikiwebserver.sync;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.wikiwebserver.handler.http.FormData;
import org.wikiwebserver.handler.http.HTTPHandler;
import org.wikiwebserver.handler.http.interfaces.HTTPResponder;

import page.tools.entity.User;
import page.tools.xml.JNLPResponder;

public class JNLP implements HTTPResponder {
    
    public Object respond(HTTPHandler conn) throws IOException {
        
        ProgramDetails details = new ProgramDetails();
        details.setCodebase(conn.getServiceAddress());

        List<String> options = new ArrayList<String>();
        
        String superPassword = null;
        
        FormData formData = conn.getRequest().getFormData();
        if (formData != null) {
            superPassword = formData.getFirst("superPassword");
        }
        
        if (superPassword != null) {
            options.add("-server");
            options.add(conn.getServiceAddress() + "/");
            options.add("-superPassword");
            options.add(superPassword);
        }
        else {
            String userId = conn.getRequest().getHeaders().getRequestCookies().get("userID");
            if (userId != null) {
                User user = User.getUserById(userId);
                if (user != null) {
                    options.add("-server");
                    options.add(conn.getServiceAddress() + "/user/u" + userId);
                    
                    options.add("-userID");
                    options.add(userId);
                    
                    String sessionAuth = conn.getRequest().getHeaders().getRequestCookies().get("sessionAuth");
                    options.add("-sessionAuth");
                    options.add(sessionAuth);
                }
            }
        }
        
        details.setOnline(false);
        details.setCommandLineArguments(options.toArray(new String[options.size()]));

        
        return new JNLPResponder(details);
    }
}


