Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
# unsurted URI will never have a scheme, add one
originalURI = 'http://{0}'.format(unsurt(original))
tmData = '<{0}>; rel="original",\n'.format(originalURI)
tmData += '<{0}>; rel="self timemap"; '.format(tmself)
tmData += 'type="application/link-format",\n'
cdxjTMURI = tmself.replace('/timemap/link/', '/timemap/cdxj/')
tmData += '<{0}>; rel="timemap"; '.format(cdxjTMURI)
tmData += 'type="application/cdxj+ors",\n'
tmData += '<{0}>; rel="timegate"'.format(tgURI)
for i, line in enumerate(cdxjLines):
(surtURI, datetime, json) = line.split(' ', 2)
dtRFC1123 = ipwbUtils.digits14ToRFC1123(datetime)
firstLastStr = ''
if len(cdxjLines) > 1:
if i == 0:
firstLastStr = 'first '
elif i == len(cdxjLines) - 1:
firstLastStr = 'last '
elif len(cdxjLines) == 1:
firstLastStr = 'first last '
tmData += ',\n<{0}memento/{1}/{2}>; rel="{3}memento"; datetime="{4}"' \
.format(hostAndPort, datetime, unsurt(surtURI), firstLastStr,
dtRFC1123)
return tmData + '\n'
tmData = '!context ["http://tools.ietf.org/html/rfc7089"]\n'
tmData += '!id {{"uri": "{0}"}}\n'.format(tmself)
tmData += '!keys ["memento_datetime_YYYYMMDDhhmmss"]\n'
tmData += '!meta {{"original_uri": "{0}"}}\n'.format(originalURI)
tmData += '!meta {{"timegate_uri": "{0}"}}\n'.format(tgURI)
linkTMURI = tmself.replace('/timemap/cdxj/', '/timemap/link/')
tmData += ('!meta {{"timemap_uri": {{'
'"link_format": "{0}", '
'"cdxj_format": "{1}"'
'}}}}\n').format(linkTMURI, tmself)
hostAndPort = tmself[0:tmself.index('timemap/')]
for i, line in enumerate(cdxjLines):
(surtURI, datetime, json) = line.split(' ', 2)
dtRFC1123 = ipwbUtils.digits14ToRFC1123(datetime)
firstLastStr = ''
if len(cdxjLines) > 1:
if i == 0:
firstLastStr = 'first '
elif i == len(cdxjLines) - 1:
firstLastStr = 'last '
elif len(cdxjLines) == 1:
firstLastStr = 'first last '
tmData += ('{1} {{'
'"uri": "{0}memento/{1}/{2}", '
'"rel": "{3}memento", '
'"datetime"="{4}"}}\n').format(
hostAndPort, datetime, unsurt(surtURI),
firstLastStr, dtRFC1123)
cdxjLinesWithURIR = getCDXJLinesWithURIR(urir, indexPath)
if len(cdxjLinesWithURIR) == 1:
fields = cdxjLinesWithURIR[0].split(' ', 2)
redirectURI = '/memento/{1}/{0}'.format(unsurt(fields[0]), fields[1])
return redirect(redirectURI, code=302)
msg = ''
if cdxjLinesWithURIR:
msg += '<p>{0} capture(s) available:</p><ul>'.format(
len(cdxjLinesWithURIR))
for line in cdxjLinesWithURIR:
fields = line.split(' ', 2)
dt14 = fields[1]
dtrfc1123 = ipwbUtils.digits14ToRFC1123(fields[1])
msg += ('<li><a href="/memento/{1}/{0}">{0} at {2}</a></li>'
.format(unsurt(fields[0]), dt14, dtrfc1123))
msg += '</ul>'
else: # No captures for URI-R
msg = generateNoMementosInterface_noDatetime(urir)
return Response(msg)
# Add ipwb header for additional SW logic
newPayload = resp.get_data()
lineJSON = cdxjLine.split(' ', 2)[2]
mime = json.loads(lineJSON)['mime_type']
if 'text/html' in mime:
ipwbjsinject = """
"""
newPayload = newPayload.decode('utf-8').replace(
'', ipwbjsinject + '')
resp.set_data(newPayload)
resp.headers['Memento-Datetime'] = ipwbUtils.digits14ToRFC1123(datetime)
if header is None:
resp.headers['X-Headers-Generated-By'] = 'InterPlanetary Wayback'
# Get TimeMap for Link response header
# respWithLinkHeader = getLinkHeaderAbbreviatedTimeMap(path, datetime)
# resp.headers['Link'] = respWithLinkHeader.replace('\n', ' ')
if status[0] == '3' and isUri(resp.headers.get('Location')):
# Bad assumption that the URI-M will contain \d14 but works for now.
uriBeforeURIR = request.url[:re.search(r'/\d{14}/', request.url).end()]
newURIM = uriBeforeURIR + resp.headers['Location']
resp.headers['Location'] = newURIM
return resp