smartglocal_api_client.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "stripe/stripe_card_params.h"
  9. #include "smartglocal/smartglocal_callbacks.h"
  10. #include <QtNetwork/QNetworkAccessManager>
  11. #include <QtCore/QString>
  12. #include <map>
  13. #include <memory>
  14. namespace SmartGlocal {
  15. struct PaymentConfiguration {
  16. QString publicToken;
  17. QString tokenizeUrl;
  18. bool isTest = false;
  19. };
  20. class APIClient final {
  21. public:
  22. explicit APIClient(PaymentConfiguration configuration);
  23. ~APIClient();
  24. void createTokenWithCard(
  25. Stripe::CardParams card,
  26. TokenCompletionCallback completion);
  27. void createTokenWithData(
  28. QByteArray data,
  29. TokenCompletionCallback completion);
  30. private:
  31. void destroyReplyDelayed(std::unique_ptr<QNetworkReply> reply);
  32. QString _apiUrl;
  33. PaymentConfiguration _configuration;
  34. std::map<QString, QString> _additionalHttpHeaders;
  35. QNetworkAccessManager _manager;
  36. std::unique_ptr<QNetworkReply> _reply;
  37. std::vector<std::unique_ptr<QNetworkReply>> _old;
  38. };
  39. } // namespace SmartGlocal