/aws-sdk-qt

AWS SDK for Qt

Primary LanguageC++GNU General Public License v3.0GPL-3.0

QtAws

Build Status Static Analysis GitHub Release LGPLv3 License

QtAws is an unnoficial AWS SDK for Qt.

The library is still in early stages of development, but already includes much of the basic framework plumbing required for implementing asynchronous AWS clients, including generic classes for managing the building of AWS requests (including all five AWS signature types) and processing of AWS responses.

The first 0.1.0 release included just the signature, endpoint and region classes. But that release was 100% documented (including the internal code) and 100% unit tested.

Work then progressed for the SQS client classes - the basics of which are in place now (see the 0.2.0 pre-release), however that work was put on hold when Amazon released their official AWS SDK for C++, while this project re-evaluated its value proposition, as well as a potential shift to becoming a light Qt-based wrapper for Amazon's SDK (which was not deemed a good fit in the end).

However, now that Amazon has made public the API descriptions used to generate most of the C++ SDK, effort is now being put into a Qt-based code generator that will create the bulk of the service client and model classes from those API descriptions.

Note that the API descriptions do not cover things like the signature, endpoint and region classes, which is where the bulk of the development effort has been to date, making all the investment in this project so far still completely worthwhile :)

Requirements

Qt 5.1+

QtAws requires Qt 5.1 or later, as the library makes use of Qt's QMessageAuthenticationCode class for generating HMAC codes for AWS request signatures, and that class was first added in Qt 5.1.0.

Backporting QMessageAuthenticationCode to Qt 5.0 is relatively simple, but outside the scope of this project.

Note, the code-generation sub-project requires Qt 5.10+ and Grantlee, but this is for development of the SDK itself, not for developers that use the SDK.

Building

This library supports out-of-source builds (highly recommended), for example:

cmake -E make_directory <tmp-build-dir>
cmake -D CMAKE_BUILD_TYPE=Release -S <path-to-cloned-repo> -B <tmp-build-dir>
cmake --build <tmp-build-dir>
#make check

API Documentation

See the API documentation.

There's also internal documentation for anyone interested in the internal library implementation.

Test Coverage

See the test coverage report.