An API for the Threema gateway service to send and receive messages including text, images, files and delivery reports.
Project description
threema-gateway is a Python 3 module for the Threema gateway service. This API can be used to send and receive text messages to and from any Threema user.
Note
On machines where Python 3 is not the default Python runtime, you should use pip3 instead of pip.
Prerequisites
$ sudo apt-get install python3 python3-pip
We recommend using venv to create an isolated Python environment:
$ pyvenv venv
You can switch into the created virtual environment venv by running this command:
$ source venv/bin/activate
While the virtual environment is active, all packages installed using pip will be installed into this environment.
To deactivate the virtual environment, just run:
$ deactivate
If you want easier handling of your virtualenvs, you might also want to take a look at virtualenvwrapper.
Installation
If you are using a virtual environment, activate it first.
Install the module by running:
$ pip install threema.gateway
The dependency libnacl will be installed automatically. However, you may need to install libsodium for libnacl to work.
Command Line Usage
The script threema-gateway provides a command line interface for the Threema gateway. Run the following command to see usage information:
$ threema-gateway --help
Examples
You can find a few example scripts in the examples/ directory.
Note that most of them need to be adjusted to at least add your gateway ID credentials before they run successfully.
Feature Levels
Level |
Text |
Capabilities |
Image |
File |
Credits |
---|---|---|---|---|---|
1 |
X |
||||
2 |
X |
X |
X |
X |
|
3 |
X |
X |
X |
X |
X |
You can see the implemented feature level by invoking the following command:
$ threema-gateway version
Troubleshooting
Invalid environment marker: python_version<=”3.4”
If you’re getting the following error when installing the library:
Unpacking /tmp/threema-msgapi-sdk-python Running setup.py (path:/tmp/pip-5b1d7h0w-build/setup.py) egg_info for package from file:///tmp/threema-msgapi-sdk-python error in threema.gateway setup command: Invalid environment marker: python_version<="3.4" Complete output from command python setup.py egg_info: error in threema.gateway setup command: Invalid environment marker: python_version<="3.4"
… then you have an old version of setuptools installed. If you use a venv (as described in the “Prerequisites” section), enter it (using source venv/bin/activate) and then upgrade setuptools:
$ pip install -U setuptools
Now installing the threema.gateway module should work.
Contributing
If you want to contribute to this project, you should install the optional dev requirements of the project in an editable environment:
$ git clone https://github.com/lgrahl/threema-msgapi-sdk-python.git
$ cd threema-msgapi-sdk-python
$ pip install -e .[dev]
Before creating a pull request, it is recommended to run the following commands to check for code style violations (flake8), optimise imports (isort) and run the project’s tests:
$ flake8 .
$ isort -rc .
$ py.test
You should also run the type checker that might catch some additional bugs:
$ mypy setup.py tests examples threema
Reporting Security Issues
Please report security issues directly to one or both of the following contacts:
Danilo Bargen
Email: mail@dbrgn.ch
Threema: EBEP4UCA
Lennart Grahl
Email: lennart.grahl@gmail.com
Threema: MSFVEW6C
Changelog
4.0.0 (2021-01-23)
General:
Dropped support for Python versions below 3.6.1.
Deprecated ReceiptType.user_ack has been removed. Use ReceiptType.user_acknowledge instead.
util.aio_run has been simplified. It does not allow for passing a specific event loop or closing the event loop on completion any longer.
util.aio_run_proxy_decorator has been renamed to aio_run_proxy and now always creates the class instance within a running event loop.
Client:
In async mode, creation of the Connection instance must now be done within an async function.
If you have used a with context manager block in async mode before, you must now do this within an async with asynchronous context manager. No change is required in blocking mode.
Connection.close is now an async function.
Server:
The callback server has been refactored and the AbstractCallback class has been removed for more flexibility and control of the underlying aiohttp server. Take a look at examples/callback.py on how to use it.
The callback server CLI has been removed because it was redundant. The example provides the same functionality.
3.1.0 (2020-04-21)
Add video message
Fix slightly off calculation of image byte length
3.0.6 (2017-09-22)
Migrate to aiohttp2
3.0.5 (2017-07-25)
Fix to handle new libnacl exceptions.
3.0.4 (2017-05-23)
Fix CLI
3.0.2 (2017-05-12)
Initial publication on PyPI
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file threema.gateway-4.0.0.tar.gz
.
File metadata
- Download URL: threema.gateway-4.0.0.tar.gz
- Upload date:
- Size: 437.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4a7cb17246673c7304019e251db401f069d72fa2f1806c7ce3b06c90a0c58b75 |
|
MD5 | e78c4b819345f382b5a843000749d86e |
|
BLAKE2b-256 | 0e68a8917c4a875084ea9f4ccf6cde68704236cfd72797c85f9a93d35c36593b |
File details
Details for the file threema.gateway-4.0.0-py36.py37.py38.py39-none-any.whl
.
File metadata
- Download URL: threema.gateway-4.0.0-py36.py37.py38.py39-none-any.whl
- Upload date:
- Size: 31.2 kB
- Tags: Python 3.6, Python 3.7, Python 3.8, Python 3.9
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c18c9600fd28ed507e607cfca79b00b38ae2fcde9d1f68050471cfc28728cb1b |
|
MD5 | f431db2e339633c8a16724dcb26f012b |
|
BLAKE2b-256 | b81c7e2d831ffdab645014851ce5c494563be5aed2db14b84de0eb240ce948cc |