(
const string& user)
const= 0;
64 virtual string DecodeUser(
const string& user)
const= 0;
70 virtual string EncodePath(
const string& path)
const= 0;
72 virtual string DecodePath(
const string& path)
const= 0;
177fSemicolonIsArgDelimiter = (1 << 11),
179fEnableParsingAsIndex = (1 << 14),
195m_Flags &= ~fSemicolonIsArgDelimiter;
197m_Flags |= fSemicolonIsArgDelimiter;
221 const string&
value,
222 EArgTypearg_type = eArg_Index) = 0;
227 voidx_SetIndexString(
const string&
query,
250 void clear(
void) { m_IsIndex =
false; m_Args.clear(); }
270 SUrlArg(
const string& aname,
const string& avalue)
271: name(aname),
value(avalue) { }
282{
returnFindFirst(name) != m_Args.end(); }
287 const string& GetValue(
const string& name,
bool* is_found = 0)
const;
291 voidSetValue(
const string& name,
const string&
value);
294 voidAddValue(
const string& name,
const string&
value);
297 voidSetUniqueValue(
const string& name,
const string&
value);
309iterator FindFirst(
const string& name);
313iterator FindNext(
constiterator& iter);
317const_iterator FindFirst(
const string& name)
const;
321const_iterator FindNext(
constconst_iterator& iter)
const;
325{ m_Case = name_case; }
328 virtual voidAddArgument(
unsigned intposition,
330 const string&
value,
333iterator x_Find(
const string& name,
constiterator& start);
334const_iterator x_Find(
const string& name,
335 constconst_iterator& start)
const;
350 #define NCBI_SCHEME_SERVICE "ncbilb" 383 voidSetUrl(
const string& url,
const IUrlEncoder* encoder = 0);
398 const string&
GetScheme(
void)
const{
returnm_Scheme; }
399 voidSetScheme(
const string&
value);
405 const string&
GetUser(
void)
const{
returnm_User; }
411 const string&
GetHost(
void)
const{
returnm_Host; }
412 voidSetHost(
const string&
value);
414 bool IsService(
void)
const{
return!m_Service.empty();}
415 const string&
GetService(
void)
const{
returnm_Service; }
416 voidSetService(
const string&
value);
421 const string&
GetPath(
void)
const{
returnm_Path; }
432{
returnm_ArgsList.get() != 0 && !m_ArgsList->GetArgs().empty(); }
441 CUrl& operator=(
const CUrl& url);
448 boolIsEmpty(
void)
const;
453fUser_Replace = 0x0001,
454fUser_ReplaceIfEmpty = 0x0002,
455fPassword_Replace = 0x0004,
456fPassword_ReplaceIfEmpty = 0x0008,
457fPath_Replace = 0x0010,
458fPath_Append = 0x0020,
459fFragment_Replace = 0x0040,
460fFragment_ReplaceIfEmpty = 0x0080,
461fArgs_Replace = 0x0100,
462fArgs_Append = 0x0200,
463fArgs_Merge = 0x0400,
465fScheme_Replace = 0x0800
477 voidx_SetScheme(
const string& scheme,
const IUrlEncoder& encoder);
478 voidx_SetUser(
const string& user,
const IUrlEncoder& encoder);
479 voidx_SetPassword(
const string& password,
const IUrlEncoder& encoder);
480 voidx_SetHost(
const string& host,
const IUrlEncoder& encoder);
481 voidx_SetService(
const string& service);
482 voidx_SetPort(
const string& port,
const IUrlEncoder& encoder);
483 voidx_SetPath(
const string& path,
const IUrlEncoder& encoder);
485 voidx_SetFragment(
const string& fragment,
const IUrlEncoder& encoder);
487 boolx_IsHostPort(
const string& scheme,
string& unparsed,
const IUrlEncoder& encoder);
521 case eName:
return "Unknown argument name";
522 case eNoArgs:
return "Arguments list is empty";
523 case eFlags:
return "Inconsistent flags set";
548 case eFormat:
return "Url format error";
555std::string::size_type);
Default encoder, uses the selected encoding for argument names/values and eUrlEncode_Path for documen...
Primitive encoder - all methods return the argument value.
CParseTemplException â.
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
void SetQueryString(const string &query, const IUrlEncoder *encoder=0)
NCBI_DEPRECATED_CLASS NCBI_XCGI_EXPORT EUrlEncode decode
NCBI_DEPRECATED_CLASS NCBI_XCGI_EXPORT EUrlEncode encode
string GetQueryString(EAmpEncoding amp_enc, EUrlEncode encode) const
TErrCode GetErrCode(void) const
Get error code.
virtual const char * GetErrCodeString(void) const
Get error code interpreted as text.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
EUrlEncode
URL-encode flags.
static int StringToInt(const CTempString str, TStringToNumFlags flags=0, int base=10)
Convert string to int.
static string URLDecode(const CTempString str, EUrlDecode flag=eUrlDec_All)
URL-decode string.
ECase
Which type of string comparison.
TErrCode GetErrCode(void) const
Get error code.
static string URLEncode(const CTempString str, EUrlEncode flag=eUrlEnc_SkipMarkChars)
URL-encode string.
@ eUrlEnc_PercentOnly
Convert all non-alphanumeric chars including space and '' to %## format.
@ eUrlEnc_URIPath
Encode path part of an URI.
@ eUrlEnc_URIUserinfo
Encode userinfo part of an URI.
@ eUrlEnc_SkipMarkChars
Do not convert chars like '!', '(' etc.
@ eUrlEnc_URIFragment
Encode fragment part of an URI.
@ eUrlDec_All
Decode '+' to space.
@ eUrlDec_Percent
Decode only XX.
unsigned short m_Port
TCP port to listen on.
virtual string DecodePath(const string &path) const =0
Decode path on server.
const string & GetHost(void) const
void SetUser(const string &value)
const CUrlArgs & GetArgs(void) const
Get const list of arguments.
void SetPath(const string &value)
virtual string DecodeUser(const string &user) const
Decode user name.
const string & GetService(void) const
NCBI_EXCEPTION_DEFAULT(CUrlException, CException)
virtual string EncodeFragment(const string &value) const
Encode fragment.
virtual string EncodePassword(const string &password) const
Encode password.
virtual string DecodePassword(const string &password) const
Decode password.
virtual const char * GetErrCodeString(void) const override
Get error code interpreted as text.
virtual string DecodeArgName(const string &name) const
Decode URL argument name.
virtual const char * GetErrCodeString(void) const override
Translate from the error code value to its string representation.
virtual string EncodeArgName(const string &name) const
Encode URL argument name.
void x_SetPort(const string &port, const IUrlEncoder &encoder)
EAmpEncoding
Ampersand encoding for composed URLs.
const string & GetFragment(void) const
virtual string EncodeFragment(const string &value) const =0
Encode fragment.
virtual string EncodePath(const string &path) const
Encode path on server.
void x_SetPassword(const string &password, const IUrlEncoder &encoder)
virtual string DecodeFragment(const string &value) const =0
Decode fragment.
bool GetIsGeneric(void) const
Generic schemes use '//' prefix (after optional scheme).
EAdjustFlags
Flags controlling URL adjustment.
virtual string EncodeUser(const string &user) const =0
Encode user name.
void SetFragment(const string &value)
TArgs & GetArgs(void)
Get the list of arguments.
const string & GetPassword(void) const
virtual string DecodePath(const string &path) const
Decode path on server.
virtual string EncodeArgValue(const string &value) const
Encode URL argument value.
virtual string EncodeArgName(const string &name) const
Encode URL argument name.
void x_SetService(const string &service)
TArgs::const_iterator const_iterator
int TFlags
An inverted subset of CCgiRequest::TFlags.
virtual string EncodeArgValue(const string &value) const
Encode URL argument value.
virtual string DecodePassword(const string &password) const =0
Decode password.
NCBI_EXCEPTION_DEFAULT2(CUrlParserException, CParseTemplException< CUrlException >, std::string::size_type)
void x_SetUser(const string &user, const IUrlEncoder &encoder)
const string & GetOriginalArgsString(void) const
Get the original (unparsed and undecoded) query string.
SUrlArg(const string &aname, const string &avalue)
void x_SetFragment(const string &fragment, const IUrlEncoder &encoder)
virtual string EncodeFragment(const string &value) const
Encode fragment.
virtual ~IUrlEncoder(void)
virtual string DecodeArgValue(const string &value) const
Decode URL argument value.
bool HaveArgs(void) const
Check if the URL contains any arguments.
bool IsSetValue(const string &name) const
Check if an argument with the given name exists.
virtual string DecodeUser(const string &user) const =0
Decode user name.
virtual string DecodeArgName(const string &name) const =0
Decode URL argument name.
CUrlArgs_Parser(TFlags flags=0)
const TArgs & GetArgs(void) const
Get the const list of arguments.
void x_SetPath(const string &path, const IUrlEncoder &encoder)
void clear(void)
Clear the list.
virtual string DecodeArgName(const string &name) const
Decode URL argument name.
CUrl(const char *url, const IUrlEncoder *encoder=0)
iterator FindNext(const iterator &iter)
Take argument name from the iterator, find next argument with the same name, return GetArgs()....
void SetService(const string &value)
const string & GetPath(void) const
CDefaultUrlEncoder(NStr::EUrlEncode encode=NStr::eUrlEnc_SkipMarkChars)
const string & GetPort(void) const
void SetCase(NStr::ECase name_case)
Select case sensitivity of arguments' names.
const string & GetScheme(void) const
static IUrlEncoder * GetDefaultEncoder(void)
Return default URL encoder.
void SetPort(const string &value)
void x_SetScheme(const string &scheme, const IUrlEncoder &encoder)
void x_SetHost(const string &host, const IUrlEncoder &encoder)
void SetSemicolonIsNotArgDelimiter(bool enable=true)
Treat semicolon as query string argument separator.
virtual string EncodePath(const string &path) const
Encode path on server.
virtual string EncodeUser(const string &user) const
Encode user name.
virtual string EncodePath(const string &path) const =0
Encode path on server.
virtual ~CUrlArgs_Parser(void)
virtual string DecodeArgValue(const string &value) const
Decode URL argument value.
virtual string EncodePassword(const string &password) const =0
Encode password.
virtual string EncodeUser(const string &user) const
Encode user name.
virtual string DecodeFragment(const string &value) const
Decode fragment.
void x_SetArgs(const string &args, const IUrlEncoder &encoder)
virtual string EncodeArgName(const string &name) const =0
Encode URL argument name.
const string & GetUser(void) const
virtual string DecodeUser(const string &user) const
Decode user name.
virtual string EncodeArgValue(const string &value) const =0
Encode URL argument value.
iterator x_Find(const string &name, const iterator &start)
virtual string DecodePath(const string &path) const
Decode path on server.
NStr::EUrlEncode m_Encode
virtual string DecodeFragment(const string &value) const
Decode fragment.
void SetHost(const string &value)
void SetIsGeneric(bool value)
virtual string EncodePassword(const string &password) const
Encode password.
void SetPassword(const string &value)
iterator FindFirst(const string &name)
Find the first argument with the given name.
virtual string DecodeArgValue(const string &value) const =0
Decode URL argument value.
virtual void AddArgument(unsigned int position, const string &name, const string &value, EArgType arg_type=eArg_Index)=0
Process next query argument.
bool IsService(void) const
virtual string DecodePassword(const string &password) const
Decode password.
unique_ptr< CUrlArgs > m_ArgsList
EArgType
Query type flag.
@ eAmp_Char
Use & to separate arguments.
@ eArg_Value
Query contains name=value pairs.
#define NCBI_XNCBI_EXPORT
const GenericPointer< typename T::ValueType > T2 value
static int x_SetArgs(SConnNetInfo *info, const char *args)
#define GetArgs
Avoid preprocessor name clash with the NCBI C Toolkit.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4