%global _empty_manifest_terminate_build 0 Name: python-aws-request-signer Version: 1.2.0 Release: 1 Summary: A python library to sign AWS requests using AWS Signature V4. License: MIT URL: https://www.github.com/iksteen/aws-request-signer Source0: https://mirrors.nju.edu.cn/pypi/web/packages/63/ab/2ca5870971f1e3601e27d22c0290a75dd90bcce066a67884d9034b7cf765/aws_request_signer-1.2.0.tar.gz BuildArch: noarch Requires: python3-requests Requires: python3-requests_toolbelt %description # aws-request-signer > A python library to sign AWS requests using AWS Signature V4. This small python library serves only purpose: Helping you sign HTTP requests for use with AWS (and compatible) services. The library is unopinionated and should work with just about anything that makes HTTP requests (requests, aiohttp). It supports generating authorization headers for HTTP requests, pre-signing URLs so you can easily use them elsewhere and signing S3 POST policies for use in HTML forms. This library has no requirements, but comes with an authentication helper for the requests package. ## Installation `aws-request-signer` is available from pypi: ```sh pip install aws-request-signer ``` ## Usage example Here's an example of how to use the library to sign a request to upload a file to a [minio](https://minio.io/) S3 bucket running on your local machine: ```python import hashlib import requests from aws_request_signer import AwsRequestSigner AWS_REGION = "" AWS_ACCESS_KEY_ID = "minio" AWS_SECRET_ACCESS_KEY = "minio123" URL = "http://127.0.0.1:9000/demo/hello_world.txt" # Demo content for our target file. content = b"Hello, World!\n" content_hash = hashlib.sha256(content).hexdigest() # Create a request signer instance. request_signer = AwsRequestSigner( AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, "s3" ) # The headers we'll provide and want to sign. headers = {"Content-Type": "text/plain", "Content-Length": str(len(content))} # Add the authentication headers. headers.update( request_signer.sign_with_headers("PUT", URL, headers, content_hash) ) # Make the request. r = requests.put(URL, headers=headers, data=content) r.raise_for_status() ``` _For more examples and usage, please refer to [demo.py](https://github.com/iksteen/aws-request-signer/blob/master/demo.py)._ ## Development setup For development purposes, you can clone the repository and use [poetry](https://poetry.eustace.io/) to install and maintain the dependencies. There is no test suite. It comes with a set of pre-commit hooks that can format (isort, black) and check your code (mypy, flake8) automatically. ```sh git clone git@github.com:iksteen/aws-request-signer.git cd aws-request-signer poetry install -E demo poetry run pre-commit install ``` ## Release History * 1.2.0 * Add support for passing a security token to `AwsRequestSigner` and `AwsAuth` helper for request. Thanks @ajpl. * 1.1.1 * Use `quote` instead of the default `quote_plus` so query arguments that contain spaces work (thanks @eraser-77). * 1.1.0 * Minimum supported python version is now 3.6.1. * Assume empty content when signing a HEAD or DELETE request just as we do when signing a GET request. Thanks @alvassin! * Fix bug where `sign_with_headers` did not include valueless query arguments in the signing process (f.e. `?acl`). * 1.0.0 * Initial Release. ## Meta Ingmar Steen – [@iksteen](https://twitter.com/iksteen) Distributed under the MIT license. See ``LICENSE`` for more information. [https://github.com/iksteen/](https://github.com/iksteen/) ## Contributing 1. Fork it () 2. Create your feature branch (`git checkout -b feature/fooBar`) 3. Commit your changes (`git commit -am 'Add some fooBar'`) 4. Push to the branch (`git push origin feature/fooBar`) 5. Create a new Pull Request %package -n python3-aws-request-signer Summary: A python library to sign AWS requests using AWS Signature V4. Provides: python-aws-request-signer BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-aws-request-signer # aws-request-signer > A python library to sign AWS requests using AWS Signature V4. This small python library serves only purpose: Helping you sign HTTP requests for use with AWS (and compatible) services. The library is unopinionated and should work with just about anything that makes HTTP requests (requests, aiohttp). It supports generating authorization headers for HTTP requests, pre-signing URLs so you can easily use them elsewhere and signing S3 POST policies for use in HTML forms. This library has no requirements, but comes with an authentication helper for the requests package. ## Installation `aws-request-signer` is available from pypi: ```sh pip install aws-request-signer ``` ## Usage example Here's an example of how to use the library to sign a request to upload a file to a [minio](https://minio.io/) S3 bucket running on your local machine: ```python import hashlib import requests from aws_request_signer import AwsRequestSigner AWS_REGION = "" AWS_ACCESS_KEY_ID = "minio" AWS_SECRET_ACCESS_KEY = "minio123" URL = "http://127.0.0.1:9000/demo/hello_world.txt" # Demo content for our target file. content = b"Hello, World!\n" content_hash = hashlib.sha256(content).hexdigest() # Create a request signer instance. request_signer = AwsRequestSigner( AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, "s3" ) # The headers we'll provide and want to sign. headers = {"Content-Type": "text/plain", "Content-Length": str(len(content))} # Add the authentication headers. headers.update( request_signer.sign_with_headers("PUT", URL, headers, content_hash) ) # Make the request. r = requests.put(URL, headers=headers, data=content) r.raise_for_status() ``` _For more examples and usage, please refer to [demo.py](https://github.com/iksteen/aws-request-signer/blob/master/demo.py)._ ## Development setup For development purposes, you can clone the repository and use [poetry](https://poetry.eustace.io/) to install and maintain the dependencies. There is no test suite. It comes with a set of pre-commit hooks that can format (isort, black) and check your code (mypy, flake8) automatically. ```sh git clone git@github.com:iksteen/aws-request-signer.git cd aws-request-signer poetry install -E demo poetry run pre-commit install ``` ## Release History * 1.2.0 * Add support for passing a security token to `AwsRequestSigner` and `AwsAuth` helper for request. Thanks @ajpl. * 1.1.1 * Use `quote` instead of the default `quote_plus` so query arguments that contain spaces work (thanks @eraser-77). * 1.1.0 * Minimum supported python version is now 3.6.1. * Assume empty content when signing a HEAD or DELETE request just as we do when signing a GET request. Thanks @alvassin! * Fix bug where `sign_with_headers` did not include valueless query arguments in the signing process (f.e. `?acl`). * 1.0.0 * Initial Release. ## Meta Ingmar Steen – [@iksteen](https://twitter.com/iksteen) Distributed under the MIT license. See ``LICENSE`` for more information. [https://github.com/iksteen/](https://github.com/iksteen/) ## Contributing 1. Fork it () 2. Create your feature branch (`git checkout -b feature/fooBar`) 3. Commit your changes (`git commit -am 'Add some fooBar'`) 4. Push to the branch (`git push origin feature/fooBar`) 5. Create a new Pull Request %package help Summary: Development documents and examples for aws-request-signer Provides: python3-aws-request-signer-doc %description help # aws-request-signer > A python library to sign AWS requests using AWS Signature V4. This small python library serves only purpose: Helping you sign HTTP requests for use with AWS (and compatible) services. The library is unopinionated and should work with just about anything that makes HTTP requests (requests, aiohttp). It supports generating authorization headers for HTTP requests, pre-signing URLs so you can easily use them elsewhere and signing S3 POST policies for use in HTML forms. This library has no requirements, but comes with an authentication helper for the requests package. ## Installation `aws-request-signer` is available from pypi: ```sh pip install aws-request-signer ``` ## Usage example Here's an example of how to use the library to sign a request to upload a file to a [minio](https://minio.io/) S3 bucket running on your local machine: ```python import hashlib import requests from aws_request_signer import AwsRequestSigner AWS_REGION = "" AWS_ACCESS_KEY_ID = "minio" AWS_SECRET_ACCESS_KEY = "minio123" URL = "http://127.0.0.1:9000/demo/hello_world.txt" # Demo content for our target file. content = b"Hello, World!\n" content_hash = hashlib.sha256(content).hexdigest() # Create a request signer instance. request_signer = AwsRequestSigner( AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, "s3" ) # The headers we'll provide and want to sign. headers = {"Content-Type": "text/plain", "Content-Length": str(len(content))} # Add the authentication headers. headers.update( request_signer.sign_with_headers("PUT", URL, headers, content_hash) ) # Make the request. r = requests.put(URL, headers=headers, data=content) r.raise_for_status() ``` _For more examples and usage, please refer to [demo.py](https://github.com/iksteen/aws-request-signer/blob/master/demo.py)._ ## Development setup For development purposes, you can clone the repository and use [poetry](https://poetry.eustace.io/) to install and maintain the dependencies. There is no test suite. It comes with a set of pre-commit hooks that can format (isort, black) and check your code (mypy, flake8) automatically. ```sh git clone git@github.com:iksteen/aws-request-signer.git cd aws-request-signer poetry install -E demo poetry run pre-commit install ``` ## Release History * 1.2.0 * Add support for passing a security token to `AwsRequestSigner` and `AwsAuth` helper for request. Thanks @ajpl. * 1.1.1 * Use `quote` instead of the default `quote_plus` so query arguments that contain spaces work (thanks @eraser-77). * 1.1.0 * Minimum supported python version is now 3.6.1. * Assume empty content when signing a HEAD or DELETE request just as we do when signing a GET request. Thanks @alvassin! * Fix bug where `sign_with_headers` did not include valueless query arguments in the signing process (f.e. `?acl`). * 1.0.0 * Initial Release. ## Meta Ingmar Steen – [@iksteen](https://twitter.com/iksteen) Distributed under the MIT license. See ``LICENSE`` for more information. [https://github.com/iksteen/](https://github.com/iksteen/) ## Contributing 1. Fork it () 2. Create your feature branch (`git checkout -b feature/fooBar`) 3. Commit your changes (`git commit -am 'Add some fooBar'`) 4. Push to the branch (`git push origin feature/fooBar`) 5. Create a new Pull Request %prep %autosetup -n aws-request-signer-1.2.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-aws-request-signer -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 1.2.0-1 - Package Spec generated