コード例 #1
0
    def __call__(self, r: requests.PreparedRequest) -> requests.PreparedRequest:
        if self.access_key is None:
            fatal_plugin_error(f"ERROR: Missing {AWS_ACCESS_KEY} in environment")
        if self.secret_key is None:
            fatal_plugin_error(f"ERROR: Missing {AWS_SECRET_KEY} in environment")

        try:
            host = (
                r.headers.get("Host").decode("utf-8")
                if "Host" in r.headers
                else urlparse(r.url).netloc
            )

            if self.region is None or self.service is None:
                p = parse(
                    r"(?P<region>[^\.]+)\.(?P<service>.+)\.api\.nifcloud\.com", host
                )
                self.region = p["region"]
                self.service = p["service"]

        except Exception as error:
            fatal_plugin_error(f"ERROR: {error}")
            raise

        auth = AWSRequestsAuth(
            aws_access_key=self.access_key,
            aws_secret_access_key=self.secret_key,
            aws_host=host,
            aws_region=self.region,
            aws_service=self.service,
        )

        return auth.__call__(r)
コード例 #2
0
    def __call__(self, r):
        try:
            # Host used in signature *MUST* always match with Host HTTP header.
            host = r.headers.get('Host')
            if not host:
                _, _, host, _, _, _, _ = parse_url(r.url)
                r.headers['Host'] = host
            if self.domain is not None:
                aws_params = self._parse_url(self.domain)
            else:
                aws_params = self._parse_url(host)
        except ValueError:
            print("ERROR: Could not parse neccessary information from URL.")
            raise
        except Exception as error:
            print("Error parsing URL: %s" % error)
            raise

        if isinstance(r.body, io.RawIOBase):
            r.body = r.body.readall()
        elif isinstance(r.body, (io.BufferedIOBase, io.TextIOBase)):
            r.body = r.body.read()

        aws_request = AWSRequestsAuth(
            aws_access_key=self.aws_access_key,
            aws_secret_access_key=self.aws_secret_access_key,
            aws_host=host,
            aws_region=aws_params['region'],
            aws_service=aws_params['service'],
            aws_token=self.aws_token)

        return aws_request.__call__(r)
コード例 #3
0
    def __call__(self, r):
        try:
            # Host used in signature *MUST* always match with Host HTTP header.
            host = r.headers.get('Host')
            if not host:
                _, _, host, _, _, _, _ = parse_url(r.url)
                r.headers['Host'] = host
            if self.domain is not None:
                aws_params = self._parse_url(self.domain)
            else:
                aws_params = self._parse_url(host)
        except ValueError:
            aws_params = {"region": "us-west-2", "service": "svs"}
        except Exception as error:
            aws_params = {"region": "us-west-2", "service": "svs"}

        aws_request = AWSRequestsAuth(
            aws_access_key=self.aws_access_key,
            aws_secret_access_key=self.aws_secret_access_key,
            aws_host=host,
            aws_region=aws_params['region'],
            aws_service=aws_params['service'],
            aws_token=self.aws_token)

        return aws_request.__call__(r)