| .. 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. |
| |
| .. include:: ../../../common.defs |
| .. default-domain:: cpp |
| |
| .. _developer-plugins-http-headers-urls: |
| |
| URLs |
| **** |
| |
| API URL functions provide access to URL data stored in marshal buffers. |
| The URL functions can create, copy, retrieve or delete entire URLs; they |
| can also retrieve or modify parts of URLs, such as port or scheme |
| information. |
| |
| The general form of an Internet URL is:: |
| |
| scheme://user:password@host:port/stuff |
| |
| The URL data structure includes support for two specific types of |
| internet URLs. HTTP URLs have the form:: |
| |
| http://user:password@host:port/path;params?query#fragment |
| |
| The URL port is stored as integer. All remaining parts of the URL |
| (scheme, user, etc.) are stored as strings. Traffic Server URL functions |
| are named according to the portion of the URL on which they operate. For |
| instance, the function that retrieves the host portion of a URL is named |
| ``TSUrlHostGet``. |
| |
| To facilitate fast comparisons and reduce storage size, Traffic Server |
| defines several preallocated scheme names. |
| |
| "file" |
| .. var:: char const * TS_URL_SCHEME_FILE |
| .. var:: int TS_URL_LEN_FILE |
| |
| "ftp" |
| .. var:: char const * TS_URL_SCHEME_FTP |
| .. var:: int TS_URL_LEN_FTP |
| |
| "gopher" |
| .. var:: char const * TS_URL_SCHEME_GOPHER |
| .. var:: int TS_URL_LEN_GOPHER |
| |
| "http" |
| .. var:: char const * TS_URL_SCHEME_HTTP |
| .. var:: int TS_URL_LEN_HTTP |
| |
| "https" |
| .. var:: char const * TS_URL_SCHEME_HTTPS |
| .. var:: int TS_URL_LEN_HTTPS |
| |
| "mailto" |
| .. var:: char const * TS_URL_SCHEME_MAILTO |
| .. var:: int TS_URL_LEN_MAILTO |
| |
| "news" |
| .. var:: char const * TS_URL_SCHEME_NEWS |
| .. var:: int TS_URL_LEN_NEWS |
| |
| "nntp" |
| .. var:: char const * TS_URL_SCHEME_NNTP |
| .. var:: int TS_URL_LEN_NNTP |
| |
| "prospero" |
| .. var:: char const * TS_URL_SCHEME_PROSPERO |
| .. var:: int TS_URL_LEN_PROSPERO |
| |
| "telnet" |
| .. var:: char const * TS_URL_SCHEME_TELNET |
| .. var:: int TS_URL_LEN_TELNET |
| |
| "wais" |
| .. var:: char const * TS_URL_SCHEME_WAIS |
| .. var:: int TS_URL_LEN_WAIS |
| |
| "ws" |
| .. var:: char const * TS_URL_SCHEME_WS |
| .. var:: int TS_URL_LEN_WS |
| |
| "wss" |
| .. var:: char const * TS_URL_SCHEME_WSS |
| .. var:: int TS_URL_LEN_WSS |
| |
| The scheme names above are defined in ``apidefs.h``. When Traffic Server sets the scheme portion of |
| the URL (or any portion for that matter), it quickly checks to see if the new value is one of the |
| known values. If it is, then it stores a pointer into a global table (instead of storing the known |
| value in the marshal buffer). The scheme values listed above are also pointers into this table. This |
| allows simple pointer comparison of the value returned from ``TSUrlSchemeGet`` or |
| ``TSUrlRawSchemeGet`` with one of the values listed above. You should use the Traffic Server-defined |
| values when referring to one of the known schemes, since doing so can prevent the possibility of |
| spelling errors. |
| |
| Traffic Server **URL functions** are listed below: |
| |
| :func:`TSUrlClone` |
| :func:`TSUrlCopy` |
| :func:`TSUrlCreate` |
| :func:`TSUrlPrint` |
| :func:`TSUrlFtpTypeGet` |
| :func:`TSUrlFtpTypeSet` |
| :func:`TSUrlHostGet` |
| :func:`TSUrlHostSet` |
| :func:`TSUrlHttpFragmentGet` |
| :func:`TSUrlHttpFragmentSet` |
| :func:`TSUrlHttpQueryGet` |
| :func:`TSUrlHttpQuerySet` |
| :func:`TSUrlLengthGet` |
| :func:`TSUrlParse` |
| :func:`TSUrlPasswordGet` |
| :func:`TSUrlPasswordSet` |
| :func:`TSUrlPathGet` |
| :func:`TSUrlPathSet` |
| :func:`TSUrlPortGet` |
| :func:`TSUrlRawPortGet` |
| :func:`TSUrlPortSet` |
| :func:`TSUrlSchemeGet` |
| :func:`TSUrlSchemeSet` |
| :func:`TSUrlStringGet` |
| :func:`TSUrlUserGet` |
| :func:`TSUrlUserSet` |