/******************************************************************
*
*	CyberREST for Java
*
*	Copyright (C) Satoshi Konno 2002
*	Copyright (C) Jan Newmarch 2004
*
*	File: RESTRequest.java
*
*	Revision;
*
*	12/11/02
*		- first revision as SOAPRequest by Satoshi
*       31/05/04
*               - hacked into RESTRequest by Jan	
******************************************************************/

package org.cybergarage.rest;

import java.io.*;

import org.cybergarage.http.*;
import org.cybergarage.xml.*;
import org.cybergarage.util.*;

public class RESTRequest extends HTTPRequest
{
	
	////////////////////////////////////////////////
	//	Constructor
	////////////////////////////////////////////////
	
	public RESTRequest()
	{
	    /*
		setContentType(SOAP.CONTENT_TYPE);
		setMethod(HTTP.POST);
	    */
	}

	public RESTRequest(HTTPRequest httpReq)
	{
		set(httpReq);
	}

 
	////////////////////////////////////////////////
	//	post
	////////////////////////////////////////////////

	public RESTResponse postMessage(String host, int port)
	{
		HTTPResponse httpRes = post(host, port);
		
		 RESTResponse restRes = new RESTResponse(httpRes);

		 /*
		byte content[] = soapRes.getContent();
		if (content.length <= 0)
			return soapRes;
		
		try {
			ByteArrayInputStream byteIn = new ByteArrayInputStream(content);
			Parser xmlParser = SOAP.getXMLParser();
			Node rootNode = xmlParser.parse(byteIn);
			soapRes.setEnvelopeNode(rootNode);
		}
		catch (Exception e) {
			Debug.warning(e);
		}
		 */

		 return restRes;
	}

	////////////////////////////////////////////////
	//	get
	////////////////////////////////////////////////

	public RESTResponse getMessage(String host, int port)
	{
		HTTPResponse httpRes = post(host, port);
		
		 RESTResponse restRes = new RESTResponse(httpRes);

		 /*
		byte content[] = soapRes.getContent();
		if (content.length <= 0)
			return soapRes;
		
		try {
			ByteArrayInputStream byteIn = new ByteArrayInputStream(content);
			Parser xmlParser = SOAP.getXMLParser();
			Node rootNode = xmlParser.parse(byteIn);
			soapRes.setEnvelopeNode(rootNode);
		}
		catch (Exception e) {
			Debug.warning(e);
		}
		 */

		 return restRes;
	}

    /*
	////////////////////////////////////////////////
	//	Node
	////////////////////////////////////////////////

	private Node rootNode;
	
	private void setRootNode(Node node)
	{
		rootNode = node;
	}
	
	public synchronized Node getRootNode()
	{
		if (rootNode != null)
			return rootNode;
			
		try {
			byte content[] = getContent();
			ByteArrayInputStream contentIn = new ByteArrayInputStream(content);
			Parser parser = SOAP.getXMLParser();
			rootNode = parser.parse(contentIn);
		}
		catch (ParserException e) {
			Debug.warning(e);
		}
		
		return rootNode;
	}
	
	////////////////////////////////////////////////
	//	XML
	////////////////////////////////////////////////

	public void setEnvelopeNode(Node node)
	{
		setRootNode(node);
	}
	
	public Node getEnvelopeNode()
	{
		return getRootNode();
	}
		
	public Node getBodyNode()
	{
		Node envNode = getEnvelopeNode();
		if (envNode == null)
			return null;
		if (envNode.hasNodes() == false)
			return null;
		return envNode.getNode(0);
	}

	////////////////////////////////////////////////
	//	XML Contents
	////////////////////////////////////////////////
	
	public void setContent(Node node)
	{
		// Thanks for Ralf G. R. Bergs <Ralf@Ber.gs>, Inma Marin Lopez <inma@dif.um.es>.
		String conStr = "";
		conStr += SOAP.VERSION_HEADER;
		conStr += "\n";
		conStr += node.toString(); 
		setContent(conStr);
	}

	////////////////////////////////////////////////
	//	print
	////////////////////////////////////////////////
	
	public void print()
	{
		System.out.println(toString());
		if (hasContent() == true)
			return;
		Node rootElem = getRootNode();
		if (rootElem == null)
			return;
		System.out.println(rootElem.toString());
	}
    */
}
