Package edu.wpi.cs.wpisuitetng.network.dummyserver

Source Code of edu.wpi.cs.wpisuitetng.network.dummyserver.DummyServer$Handler

/*******************************************************************************
* Copyright (c) 2013 -- WPI Suite
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    JPage
******************************************************************************/

package edu.wpi.cs.wpisuitetng.network.dummyserver;

import java.io.IOException;
import java.io.PrintStream;
import java.net.InetSocketAddress;
import java.net.SocketAddress;

import org.simpleframework.http.Cookie;
import org.simpleframework.http.Request;
import org.simpleframework.http.Response;
import org.simpleframework.http.core.Container;
import org.simpleframework.http.core.ContainerServer;
import org.simpleframework.transport.Server;
import org.simpleframework.transport.connect.Connection;
import org.simpleframework.transport.connect.SocketConnection;

import edu.wpi.cs.wpisuitetng.network.models.HttpMethod;
import edu.wpi.cs.wpisuitetng.network.models.RequestModel;
import edu.wpi.cs.wpisuitetng.network.models.ResponseModel;

/**
* For testing Requests sent over the network.
*
* TODO finish RequestModel generation and canned response fulfillment.
*/
public class DummyServer {
  private final Handler container;
  private final Server server;
  private final Connection connection;
  private final SocketAddress address;

  public DummyServer(int port) {
    container = new Handler();
    try {
      server = new ContainerServer(container);
      connection = new SocketConnection(server);
    }
    catch (IOException e) {
      throw new RuntimeException(e);
    }
    address = new InetSocketAddress(port);
  }

  public void start() {
    try {
      connection.connect(address);
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }

  public void stop() {
    try {
      connection.close();
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
  }
 
  public RequestModel getLastReceived() {
    return container.getLastReceived();
  }
 
  public void setResponse(ResponseModel response) {
    container.setResponse(response);
  }

  private class Handler implements Container {
    private RequestModel lastReceived;
    private ResponseModel cannedResponse;
   
    public Handler() {
      cannedResponse = new ResponseModel();
      cannedResponse.setStatusCode(200);
      cannedResponse.setStatusMessage("OK");
      cannedResponse.setBody("");
    }

    public void handle(Request request, Response response) {
      try {
        RequestModel rm = new RequestModel();
        rm.setBody(request.getContent());
       
        for (String key : request.getQuery().keySet()) {
          rm.addQueryData(key, request.getQuery().get(key));
        }
       
        String cookies = "";
        boolean firstCookie = true;
        for (Cookie cookie : request.getCookies()) {
          if (!firstCookie) {
            cookies += "; ";
          }
          cookies += cookie.getName() + "=" + cookie.getValue();
          firstCookie = false;
        }
        rm.addHeader("Cookie", cookies);
        rm.setHttpMethod(HttpMethod.valueOf(request.getMethod().toUpperCase()));
       
        //TODO finish building RequestModel
       
        lastReceived = rm;
       
        response.setCode(cannedResponse.getStatusCode());
       
        // TODO finish building response from canned response
       
        if (cannedResponse.getBody() != null) {
          PrintStream body = response.getPrintStream();
          body.println(cannedResponse.getBody());
          body.close();
        }
      } catch(Exception e) {
        e.printStackTrace();
      }
    }
   
    public RequestModel getLastReceived() {
      return lastReceived;
    }
   
    public void setResponse(ResponseModel response) {
      cannedResponse = response;
    }
  }
}
TOP

Related Classes of edu.wpi.cs.wpisuitetng.network.dummyserver.DummyServer$Handler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.