'Add a link header to the response.
(See also: RFC 5988, Section 1)
Note:
Calling this method repeatedly will cause each link to be
appended to the Link header value, separated by commas.
Note:
So-called "link-extension" elements, as defined by RFC 5988,
are not yet supported. See also Issue #288.
Args:
target (str): Target IRI for the resource identified by the
link. Will be converted to a URI, if necessary, per
RFC 3987, Section 3.1.
rel (str): Relation type of the link, such as "next" or
"bookmark".
(See also: http://www.iana.org/assignments/link-relations/link-relations.xhtml)
Keyword Args:
title (str): Human-readable label for the destination of
the link (default ``None``). If the title includes non-ASCII
characters, you will need to use `title_star` instead, or
provide both a US-ASCII version using `title` and a
Unicode version using `title_star`.
title_star (tuple of str): Localized title describing the
destination of the link (default ``None``). The value must be a
two-member tuple in the form of (*language-tag*, *text*),
where *language-tag* is a standard language identifier as
defined in RFC 5646, Section 2.1, and *text* is a Unicode
string.
Note:
*language-tag* may be an empty string, in which case the
client will assume the language from the general context
of the current request.
Note:
*text* will always be encoded as UTF-8. If the string
contains non-ASCII characters, it should be passed as
a ``unicode`` type string (requires the \'u\' prefix in
Python 2).
anchor (str): Override the context IRI with a different URI
(default None). By default, the context IRI for the link is
simply the IRI of the requested resource. The value
provided may be a relative URI.
hreflang (str or iterable): Either a single *language-tag*, or
a ``list`` or ``tuple`` of such tags to provide a hint to the
client as to the language of the result of following the link.
A list of tags may be given in order to indicate to the
client that the target resource is available in multiple
languages.
type_hint(str): Provides a hint as to the media type of the
result of dereferencing the link (default ``None``). As noted
in RFC 5988, this is only a hint and does not override the
Content-Type header returned when the link is followed.'

def add_link(self, target, rel, title=None, title_star=None, anchor=None, hreflang=None, type_hint=None):

    if ('//' in rel):
        if ('    ' in rel):
            rel = (('"' + '    '.join([uri_encode(r) for r in rel.split()])) + '"')
        else:
            rel = (('"' + uri_encode(rel)) + '"')
    value = ((('<' + uri_encode(target)) + '>;    rel=') + rel)
    if (title is not None):
        value += ((';    title="' + title) + '"')
    if (title_star is not None):
        value += (((";    title*=UTF-8'" + title_star[0]) + "'") + uri_encode_value(title_star[1]))
    if (type_hint is not None):
        value += ((';    type="' + type_hint) + '"')
    if (hreflang is not None):
        if isinstance(hreflang, STRING_TYPES):
            value += (';    hreflang=' + hreflang)
        else:
            value += ';    '
            value += ';    '.join([('hreflang=' + lang) for lang in hreflang])
    if (anchor is not None):
        value += ((';    anchor="' + uri_encode(anchor)) + '"')
    if PY2:
        value = str(value)
    _headers = self._headers
    if ('link' in _headers):
        _headers['link'] += (',    ' + value)
    else:
        _headers['link'] = value
