blob: dd2f61a2b626248d2aca10ee7b71000a517bd244 [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
*
*
* @author Lilantha Darshana (lilantha@virtusa.com)
*
*/
#if !defined(_AXIS_URL_HPP)
#define _AXIS_URL_HPP
#include <string>
/* Welknown ports */
const unsigned short HTTP_PORT = 80;
const unsigned short HTTPS_PORT = 443;
const unsigned short FTP_PORT = 21;
/*
* Implementation of URL to manupulate URLs.
*
* This implementation only supports subset of a URL
* note that # references, userinfo query string
* processing are not supported for this version.
*
* URLs are of the form:
*
* URL = protocol "://" server "/" [path]["?" query]
* server = [userinfo "@"] hostname-port
* hostname-port = hostname [ ":" port ]
* userinfo = user[:password]
*
*
* @brief Manupulate URLs
*/
class URL
{
public:
enum Protocol { http, https, ftp, file, unknown};
/* for our purpose currently we need http, https only. This is provided
* To make extensible to support other transports for RPC but file????,
* yes we may require pipes; with web-service????
*/
public:
URL();
URL(std::string url);
~URL();
void setProtocol(std::string prot);
void setProtocol(Protocol prot){m_Protocol = prot;}
void setHostName(std::string host){m_Host= host;}
void setResource(std::string path){m_Path = path;}
void setPort(unsigned short port){m_Port = port;}
Protocol getProtocol(){return m_Protocol;}
const char* getHostName(){return m_Host.c_str();}
std::string getResource(){return m_Path;}
void setURL(const char* cpURL);
const char* getURL();
unsigned short getPort(){return m_Port;}
// other functions are not supported yet
private:
void ParseURL(std::string url);
Protocol m_Protocol;
std::string m_Host;
unsigned short m_Port;
std::string m_Path;
std::string m_Query;
std::string m_Password;
std::string m_User;
std::string m_URL;
};
#endif