from collections import namedtuple
import os
import posixpath
import re
import sys
from .lib import yellow, toabs
ExtractedPath = namedtuple('ExtractedPath',
('protocol', 'path')
)
ALLOWED_PROTOCOLS = [ 'sqs', 'fq', 'mem', 'pubsub']
def mkpath(extracted_path):
return extracted_path.protocol + "://" + extracted_path.path
def get_protocol(cloudpath):
protocol_re = re.compile(r'(?P\w+)://')
match = re.match(protocol_re, cloudpath)
if not match:
return None
return match.group("proto")
def pop_protocol(cloudpath):
protocol_re = re.compile(r'(\w+)://')
match = re.match(protocol_re, cloudpath)
if not match:
return ("sqs", cloudpath)
(protocol,) = match.groups()
cloudpath = re.sub(protocol_re, '', cloudpath, count=1)
return (protocol, cloudpath)
def extract_path(cloudpath):
protocol, queue_path = pop_protocol(cloudpath)
if protocol in ('http', 'https'):
if 'sqs' in queue_path and 'amazonaws.com' in queue_path:
protocol = 'sqs'
queue_path = cloudpath
return ExtractedPath(protocol, queue_path)