def s3_read(uri): parsed = urlparse(uri) if parsed.scheme == "s3": bucket = parsed.netloc key = parsed.path.lstrip("/") s3 = boto3.resource("s3") obj = s3.Object(bucket, key) return obj.get()["Body"].read().decode("utf-8") else: return STAC_IO.default_read_text_method(uri)
def s3_read(uri): parsed = urlparse(uri) if parsed.scheme == 's3': bucket = parsed.netloc key = parsed.path[1:] s3 = boto3.resource('s3') obj = s3.Object(bucket, key) return obj.get()['Body'].read().decode('utf-8') else: return STAC_IO.default_read_text_method(uri)
def read_text_method(uri): """Overwrites the default method for reading text from a URL or file to allow :class:`urllib.request.Request` instances as input. This method also raises any :exc:`urllib.error.HTTPError` exceptions rather than catching them to allow us to handle different response status codes as needed.""" if isinstance(uri, Request): logger.debug( f"Requesting {uri.get_full_url()} with headers {uri.headers}") with urlopen(uri) as response: resp = response.read() return resp.decode("utf-8") elif bool(urlparse(uri).scheme): logger.debug(f"Requesting {uri}") resp = requests.get(uri) return resp.content.decode("utf-8") else: return STAC_IO.default_read_text_method(uri)
def read_remote_stacs(uri): """ Reads STACs from a remote location. To be used to set STAC_IO Defaults to local storage. """ parsed = urlparse(uri) if parsed.scheme == "s3": bucket = parsed.netloc key = parsed.path[1:] s3 = boto3.resource("s3") obj = s3.Object(bucket, key) return json.loads(obj.get()["Body"].read().decode("utf-8")) if parsed.scheme in ["http", "https"]: with urllib.request.urlopen(uri) as url: stac = json.loads(url.read().decode()) return stac else: return STAC_IO.default_read_text_method(uri)
def my_read_method(uri): parsed = urlparse(uri) if parsed.scheme.startswith('http'): if os.environ.get('STAGEIN_PASSWORD') is None: return requests.get(uri).text else: return requests.get(uri, auth=HTTPBasicAuth(os.environ.get('STAGEIN_USERNAME'), os.environ.get('STAGEIN_PASSWORD')) ).text else: return STAC_IO.default_read_text_method(uri)
def my_read_method(uri): parsed = urlparse(uri) if parsed.scheme.startswith('http'): return requests.get(uri).text else: return STAC_IO.default_read_text_method(uri)
def s3stac_read(uri): if uri.startswith('s3'): return json.dumps(s3().read_json(uri)) else: return STAC_IO.default_read_text_method(uri)