66 lines
1.6 KiB
C++
66 lines
1.6 KiB
C++
/*
|
|
This file is part of Telegram Desktop,
|
|
the official desktop application for the Telegram messaging service.
|
|
|
|
For license and copyright information please follow this link:
|
|
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|
*/
|
|
#include "stripe/stripe_token.h"
|
|
|
|
#include "stripe/stripe_decode.h"
|
|
|
|
namespace Stripe {
|
|
|
|
QString Token::tokenId() const {
|
|
return _tokenId;
|
|
}
|
|
|
|
bool Token::livemode() const {
|
|
return _livemode;
|
|
}
|
|
|
|
Card Token::card() const {
|
|
return _card;
|
|
}
|
|
|
|
Token Token::Empty() {
|
|
return Token(QString(), false, QDateTime());
|
|
}
|
|
|
|
Token Token::DecodedObjectFromAPIResponse(QJsonObject object) {
|
|
if (!ContainsFields(object, { u"id", u"livemode", u"created" })) {
|
|
return Token::Empty();
|
|
}
|
|
const auto tokenId = object.value("id").toString();
|
|
const auto livemode = object.value("livemode").toBool();
|
|
const auto created = QDateTime::fromSecsSinceEpoch(
|
|
object.value("created").toDouble());
|
|
auto result = Token(tokenId, livemode, created);
|
|
const auto card = object.value("card");
|
|
if (card.isObject()) {
|
|
result._card = Card::DecodedObjectFromAPIResponse(card.toObject());
|
|
}
|
|
|
|
// TODO incomplete, not used.
|
|
//const auto bankAccount = object.value("bank_account");
|
|
//if (bankAccount.isObject()) {
|
|
// result._bankAccount = bankAccount::DecodedObjectFromAPIResponse(
|
|
// bankAccount.toObject());
|
|
//}
|
|
//result._allResponseFields = object;
|
|
|
|
return result;
|
|
}
|
|
|
|
bool Token::empty() const {
|
|
return _tokenId.isEmpty();
|
|
}
|
|
|
|
Token::Token(QString tokenId, bool livemode, QDateTime created)
|
|
: _tokenId(std::move(tokenId))
|
|
, _livemode(livemode)
|
|
, _created(std::move(created)) {
|
|
}
|
|
|
|
} // namespace Stripe
|