Metadata-Version: 2.1
Name: threema.gateway
Version: 3.0.6
Summary: An API for the Threema gateway service to send and receive messages including text, images, files and delivery reports.
Home-page: https://gateway.threema.ch/
Author: Lennart Grahl
Author-email: lennart.grahl@gmail.com
License: MIT License
Keywords: threema gateway service sdk api
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Communications :: Chat
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Logging
Provides-Extra: dev
Provides-Extra: uvloop
License-File: LICENSE

Threema Gateway API
===================

|Travis| |codecov|

**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
*************

.. code-block:: bash

    $ sudo apt-get install python3 python3-pip

We recommend using `venv`_ to create an isolated Python environment:

.. code-block:: bash

    $ pyvenv venv

You can switch into the created virtual environment *venv* by running
this command:

.. code-block:: bash

    $ 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:

.. code-block:: bash

    $ 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:

.. code-block:: bash

    $ 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:

.. code-block:: bash

    $ threema-gateway --help

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:

.. code-block:: bash

    $ threema-gateway version

Callback Server
---------------

The callback server can be used to receive messages. The demo script
``threema-callback-server`` prints out received message on the command
line. Run the following command to see usage information.

.. code-block:: bash

    $ threema-callback-server --help

The script resides `here <threema/gateway/bin/callback_server.py>`_.

Contributing
************

If you want to contribute to this project, you should install the
optional ``dev`` requirements of the project in an editable environment:

.. code-block:: bash

    $ 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:

.. code-block:: bash

    $ flake8 .
    $ isort -rc .
    $ py.test

You should also run the type checker that might catch some additional bugs:

.. code-block:: bash

    $ mypy .

Reporting Security Issues
*************************

Please report security issues directly to one or both of the following
contacts:

-  Danilo Bargen

   -  Email: mail@dbrgn.ch
   -  Threema: EBEP4UCA
   -  GPG: `EA456E8BAF0109429583EED83578F667F2F3A5FA`_

-  Lennart Grahl

   -  Email: lennart.grahl@gmail.com
   -  Threema: MSFVEW6C
   -  GPG: `3FDB14868A2B36D638F3C495F98FBED10482ABA6`_

.. _asyncio: https://docs.python.org/3/library/asyncio.html
.. _venv: https://docs.python.org/3/library/venv.html
.. _virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/
.. _libsodium: https://download.libsodium.org/doc/installation/index.html

.. |Travis| image:: https://travis-ci.org/lgrahl/threema-msgapi-sdk-python.svg?branch=master
   :target: https://travis-ci.org/lgrahl/threema-msgapi-sdk-python
.. |codecov| image:: https://codecov.io/gh/lgrahl/threema-msgapi-sdk-python/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/lgrahl/threema-msgapi-sdk-python
.. |PyPI| image:: https://badge.fury.io/py/threema.gateway.svg
   :target: https://badge.fury.io/py/threema.gateway
.. _EA456E8BAF0109429583EED83578F667F2F3A5FA: https://keybase.io/dbrgn
.. _3FDB14868A2B36D638F3C495F98FBED10482ABA6: https://keybase.io/lgrahl

Changelog
*********

`3.0.6`_ (2017-09-22)
---------------------

- Migrate to aiohttp2

`3.0.5`_ (2017-07-25)
---------------------

- Fix to handle new `libnacl <https://github.com/saltstack/libnacl/pull/91>`_
  exceptions.

`3.0.4`_ (2017-05-23)
---------------------

- Fix CLI

`3.0.2`_ (2017-05-12)
---------------------

- Initial publication on PyPI

.. _3.0.6: https://github.com/lgrahl/threema-msgapi-sdk-python/compare/v3.0.5...v3.0.6
.. _3.0.5: https://github.com/lgrahl/threema-msgapi-sdk-python/compare/v3.0.4...v3.0.5
.. _3.0.4: https://github.com/lgrahl/threema-msgapi-sdk-python/compare/v3.0.2...v3.0.4
.. _3.0.2: https://github.com/lgrahl/threema-msgapi-sdk-python/compare/e982c74cbe564c76cc58322d3154916ee7f6863b...v3.0.2
