Loading...
Searching...
No Matches
globus_url.h
Go to the documentation of this file.
/*
* Copyright 1999-2006 University of Chicago
*
* 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.
*/
#ifndef GLOBUS_URL_H
#define GLOBUS_URL_H
#ifdef __cplusplus
extern "C" {
#endif
/* Supported URL Schemes */
typedef enum
{
GLOBUS_URL_SCHEME_FTP=0,
GLOBUS_URL_SCHEME_GSIFTP,
GLOBUS_URL_SCHEME_HTTP,
GLOBUS_URL_SCHEME_HTTPS,
GLOBUS_URL_SCHEME_LDAP,
GLOBUS_URL_SCHEME_FILE,
GLOBUS_URL_SCHEME_X_NEXUS,
GLOBUS_URL_SCHEME_X_GASS_CACHE,
GLOBUS_URL_SCHEME_UNKNOWN,
GLOBUS_URL_SCHEME_SSHFTP,
GLOBUS_URL_NUM_SCHEMES
} globus_url_scheme_t;
/*
Other schemes defined in RFCs but _not_ supported here are
'news', 'nntp', 'telnet', 'gopher', 'wais', 'mailto', and 'prospero'
*/
typedef struct
{
char *scheme;
globus_url_scheme_t scheme_type;
/*
* Other fields as seen in these known url schemes:
*
* ftp://[user[:password]@]host[:port]/[url_path]
* gsiftp://[user[:password]@]host[:port]/[url_path]
* http://host[:port]/url_path
* x-nexus://host:port
* x-gass-cache://url_path
* ldap://host[:port]/dn?attributes?scope?filter
* otherurl://host[:port]/url_path or
* otherurl://url_specific_part
*/
char *user;
char *password;
char *host;
unsigned short port;
char *url_path;
char *dn;
char *attributes;
char *scope;
char *filter;
char *url_specific_part;
} globus_url_t;
/* Fill in the data structure pointed to by url */
int globus_url_parse(const char *url_string, globus_url_t *url);
/* Fill in the data structure pointed to by url */
int globus_url_parse_rfc1738(const char *url_string, globus_url_t *url);
/* Fill in the data structure pointed to by url */
int globus_url_parse_loose(const char *url_string, globus_url_t *url);
/* Destroy the fields of the data structure pointed to by url */
int globus_url_destroy(globus_url_t *url);
/* Create a copy of a globus_url_t structure */
int globus_url_copy(globus_url_t * dest, const globus_url_t * src);
/* Find out the URL scheme type */
int globus_url_get_scheme(const char *url_string,
globus_url_scheme_t *scheme_type);
void
globus_url_string_hex_decode(
char * s);
char *
globus_url_string_hex_encode(
const char * s,
const char * enc);
/* Return conditions */
#define GLOBUS_URL_SUCCESS 0
#define GLOBUS_URL_ERROR_NULL_STRING -1
#define GLOBUS_URL_ERROR_NULL_URL -2
#define GLOBUS_URL_ERROR_BAD_SCHEME -3
#define GLOBUS_URL_ERROR_BAD_USER -4
#define GLOBUS_URL_ERROR_BAD_PASSWORD -5
#define GLOBUS_URL_ERROR_BAD_HOST -6
#define GLOBUS_URL_ERROR_BAD_PORT -7
#define GLOBUS_URL_ERROR_BAD_PATH -8
/* for ldap URLs */
#define GLOBUS_URL_ERROR_BAD_DN -9
#define GLOBUS_URL_ERROR_BAD_ATTRIBUTES -10
#define GLOBUS_URL_ERROR_BAD_SCOPE -11
#define GLOBUS_URL_ERROR_BAD_FILTER -12
/* when malloc fails */
#define GLOBUS_URL_ERROR_OUT_OF_MEMORY -13
/* for nexus errors/former assertion failures */
#define GLOBUS_URL_ERROR_INTERNAL_ERROR -14
#define GLOBUS_URL_TRUE 1
#define GLOBUS_URL_FALSE 0
#ifdef __cplusplus
}
#endif
#endif /* GLOBUS_URL_H */
globus_url_parse_loose
int globus_url_parse_loose(const char *url_string, globus_url_t *url)
Definition globus_url.c:616
globus_url_get_scheme
int globus_url_get_scheme(const char *url_string, globus_url_scheme_t *scheme_type)
Definition globus_url.c:2126
globus_url_parse
int globus_url_parse(const char *url_string, globus_url_t *url)
Definition globus_url.c:130
globus_url_copy
int globus_url_copy(globus_url_t *dest, const globus_url_t *src)
Definition globus_url.c:2204
globus_url_scheme_t
globus_url_scheme_t
URL Schemes.
Definition globus_url.h:51
globus_url_destroy
int globus_url_destroy(globus_url_t *url)
Definition globus_url.c:821
globus_url_parse_rfc1738
int globus_url_parse_rfc1738(const char *url_string, globus_url_t *url)
Definition globus_url.c:364
GLOBUS_URL_SCHEME_FILE
@ GLOBUS_URL_SCHEME_FILE
Definition globus_url.h:63
GLOBUS_URL_NUM_SCHEMES
@ GLOBUS_URL_NUM_SCHEMES
Definition globus_url.h:72
GLOBUS_URL_SCHEME_GSIFTP
@ GLOBUS_URL_SCHEME_GSIFTP
Definition globus_url.h:55
GLOBUS_URL_SCHEME_X_NEXUS
@ GLOBUS_URL_SCHEME_X_NEXUS
Definition globus_url.h:65
GLOBUS_URL_SCHEME_HTTP
@ GLOBUS_URL_SCHEME_HTTP
Definition globus_url.h:57
GLOBUS_URL_SCHEME_LDAP
@ GLOBUS_URL_SCHEME_LDAP
Definition globus_url.h:61
GLOBUS_URL_SCHEME_FTP
@ GLOBUS_URL_SCHEME_FTP
Definition globus_url.h:53
GLOBUS_URL_SCHEME_HTTPS
@ GLOBUS_URL_SCHEME_HTTPS
Definition globus_url.h:59
GLOBUS_URL_SCHEME_UNKNOWN
@ GLOBUS_URL_SCHEME_UNKNOWN
Definition globus_url.h:69
GLOBUS_URL_SCHEME_X_GASS_CACHE
@ GLOBUS_URL_SCHEME_X_GASS_CACHE
Definition globus_url.h:67
globus_url_t
Parsed URLs.
Definition globus_url.h:89
globus_url_t::port
unsigned short port
Definition globus_url.h:114
globus_url_t::url_path
char * url_path
Definition globus_url.h:116
globus_url_t::attributes
char * attributes
Definition globus_url.h:120
globus_url_t::url_specific_part
char * url_specific_part
Definition globus_url.h:126
globus_url_t::host
char * host
Definition globus_url.h:112
globus_url_t::dn
char * dn
Definition globus_url.h:118
globus_url_t::user
char * user
Definition globus_url.h:110
globus_url_t::password
char * password
Definition globus_url.h:111
globus_url_t::scope
char * scope
Definition globus_url.h:122
globus_url_t::scheme
char * scheme
Definition globus_url.h:91
globus_url_t::scheme_type
globus_url_scheme_t scheme_type
Definition globus_url.h:94
globus_url_t::filter
char * filter
Definition globus_url.h:123