{* Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. *} {* * apr_uri.h: External Interface of apr_uri.c *} {** * @file apr_uri.h * @brief APR-UTIL URI Routines *} //#ifndef APR_URI_H //#define APR_URI_H //#include "apu.h" //#include "apr_network_io.h" (** * @defgroup APR_Util_URI URI * @ingroup APR_Util * @{ *) const APR_URI_FTP_DEFAULT_PORT = 21; //**< default FTP port */ APR_URI_SSH_DEFAULT_PORT = 22; //**< default SSH port */ APR_URI_TELNET_DEFAULT_PORT = 23; //**< default telnet port */ APR_URI_GOPHER_DEFAULT_PORT = 70; //**< default Gopher port */ APR_URI_HTTP_DEFAULT_PORT = 80; //**< default HTTP port */ APR_URI_POP_DEFAULT_PORT = 110; //**< default POP port */ APR_URI_NNTP_DEFAULT_PORT = 119; //**< default NNTP port */ APR_URI_IMAP_DEFAULT_PORT = 143; //**< default IMAP port */ APR_URI_PROSPERO_DEFAULT_PORT = 191; //**< default Prospero port */ APR_URI_WAIS_DEFAULT_PORT = 210; //**< default WAIS port */ APR_URI_LDAP_DEFAULT_PORT = 389; //**< default LDAP port */ APR_URI_HTTPS_DEFAULT_PORT = 443; //**< default HTTPS port */ APR_URI_RTSP_DEFAULT_PORT = 554; //**< default RTSP port */ APR_URI_SNEWS_DEFAULT_PORT = 563; //**< default SNEWS port */ APR_URI_ACAP_DEFAULT_PORT = 674; //**< default ACAP port */ APR_URI_NFS_DEFAULT_PORT = 2049; //**< default NFS port */ APR_URI_TIP_DEFAULT_PORT = 3372; //**< default TIP port */ APR_URI_SIP_DEFAULT_PORT = 5060; //**< default SIP port */ //** Flags passed to unparse_uri_components(): */ //** suppress "scheme://user\@site:port" */ APR_URI_UNP_OMITSITEPART = (1 shl 0); //** Just omit user */ APR_URI_UNP_OMITUSER = (1 shl 1); //** Just omit password */ APR_URI_UNP_OMITPASSWORD = (1 shl 2); //** omit "user:password\@" part */ APR_URI_UNP_OMITUSERINFO = (APR_URI_UNP_OMITUSER or APR_URI_UNP_OMITPASSWORD); //** Show plain text password (default: show XXXXXXXX) */ APR_URI_UNP_REVEALPASSWORD = (1 shl 3); //** Show "scheme://user\@site:port" only */ APR_URI_UNP_OMITPATHINFO = (1 shl 4); //** Omit the "?queryarg" from the path */ APR_URI_UNP_OMITQUERY = (1 shl 5); //** @see apr_uri_t */ //typedef struct apr_uri_t apr_uri_t; type Papr_uri_t = ^apr_uri_t; {** * A structure to encompass all of the fields in a uri *} apr_uri_t = record { scheme ("http"/"ftp"/...) } scheme: PChar; { combined [user[:password]\@]host[:port] } hostinfo: PChar; { user name, as in http://user:passwd\@host:port/ } user: PChar; { password, as in http://user:passwd\@host:port/ } password: PChar; { hostname from URI (or from Host: header) } hostname: PChar; { port string (integer representation is in "port") } port_str: PChar; { the request path (or "/" if only scheme://host was given) } path: PChar; { Everything after a '?' in the path, if present } query: PChar; { Trailing "#fragment" string, if present } fragment: PChar; { structure returned from gethostbyname() } hostent: Pointer; { The port number, numeric, valid only if port_str != NULL } port: apr_port_t; BitFlags : Cardinal; // Takes care of is_initialized, dns_looked_up and dns_resolved { has the structure been initialized } // unsigned is_initialized:1; { has the DNS been looked up yet } // unsigned dns_looked_up:1; { has the dns been resolved yet } // unsigned dns_resolved:1; end; {end apr_uri.h} //* apr_uri.c */ {** * Return the default port for a given scheme. The schemes recognized are * http, ftp, https, gopher, wais, nntp, snews, and prospero * @param scheme_str The string that contains the current scheme * @return The default port for this scheme *} //APU_DECLARE(apr_port_t) apr_uri_port_of_scheme(const char *scheme_str); function apr_uri_port_of_scheme(const scheme_str: PChar): apr_port_t; {$IFDEF WINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external LibAPRUtil name LibNamePrefix + 'apr_uri_port_of_scheme' + LibSuff4; {** * Unparse a apr_uri_t structure to an URI string. Optionally * suppress the password for security reasons. * @param p The pool to allocate out of * @param uptr All of the parts of the uri * @param flags How to unparse the uri. One of: *
 *    APR_URI_UNP_OMITSITEPART        Suppress "scheme://user\@site:port" 
 *    APR_URI_UNP_OMITUSER            Just omit user 
 *    APR_URI_UNP_OMITPASSWORD        Just omit password 
 *    APR_URI_UNP_OMITUSERINFO        Omit "user:password\@" part
 *    APR_URI_UNP_REVEALPASSWORD      Show plain text password (default: show XXXXXXXX)
 *    APR_URI_UNP_OMITPATHINFO        Show "scheme://user\@site:port" only 
 *    APR_URI_UNP_OMITQUERY           Omit "?queryarg" or "#fragment" 
 * 
* @return The uri as a string *} //APU_DECLARE(char *) apr_uri_unparse(apr_pool_t *p, // const apr_uri_t *uptr, // unsigned flags); function apr_uri_unparse(p: Papr_pool_t; const uptr: Papr_uri_t; flags: cuint): PChar; {$IFDEF WINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external LibAPRUtil name LibNamePrefix + 'apr_uri_unparse' + LibSuff12; {** * Parse a given URI, fill in all supplied fields of a apr_uri_t * structure. This eliminates the necessity of extracting host, port, * path, query info repeatedly in the modules. * @param p The pool to allocate out of * @param uri The uri to parse * @param uptr The apr_uri_t to fill out * @return APR_SUCCESS for success or error code *} //APU_DECLARE(apr_status_t) apr_uri_parse(apr_pool_t *p, const char *uri, // apr_uri_t *uptr); function apr_uri_parse(p: Papr_pool_t; const uri: PChar; uptr: Papr_uri_t): apr_status_t; {$IFDEF WINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external LibAPRUtil name LibNamePrefix + 'apr_uri_parse' + LibSuff12; {** * Special case for CONNECT parsing: it comes with the hostinfo part only * @param p The pool to allocate out of * @param hostinfo The hostinfo string to parse * @param uptr The apr_uri_t to fill out * @return APR_SUCCESS for success or error code *} //APU_DECLARE(apr_status_t) apr_uri_parse_hostinfo(apr_pool_t *p, // const char *hostinfo, // apr_uri_t *uptr); function apr_uri_parse_hostinfo(p: Papr_pool_t; const hostinfo: PChar; uptr: Papr_uri_t): apr_status_t; {$IFDEF WINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF} external LibAPRUtil name LibNamePrefix + 'apr_uri_parse_hostinfo' + LibSuff12; (** @} *) //#endif /* APR_URI_H */