99 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			99 lines
		
	
	
	
		
			2.2 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
 | 
						|
*/
 | 
						|
#pragma once
 | 
						|
 | 
						|
#include <QtCore/QString>
 | 
						|
 | 
						|
class QJsonObject;
 | 
						|
 | 
						|
namespace Stripe {
 | 
						|
 | 
						|
enum class CardBrand {
 | 
						|
	Visa,
 | 
						|
	Amex,
 | 
						|
	MasterCard,
 | 
						|
	Discover,
 | 
						|
	JCB,
 | 
						|
	DinersClub,
 | 
						|
	UnionPay,
 | 
						|
	Unknown,
 | 
						|
};
 | 
						|
 | 
						|
enum class CardFundingType {
 | 
						|
	Debit,
 | 
						|
	Credit,
 | 
						|
	Prepaid,
 | 
						|
	Other,
 | 
						|
};
 | 
						|
 | 
						|
class Card final {
 | 
						|
public:
 | 
						|
	Card(const Card &other) = default;
 | 
						|
	Card &operator=(const Card &other) = default;
 | 
						|
	Card(Card &&other) = default;
 | 
						|
	Card &operator=(Card &&other) = default;
 | 
						|
	~Card() = default;
 | 
						|
 | 
						|
	[[nodiscard]] static Card Empty();
 | 
						|
	[[nodiscard]] static Card DecodedObjectFromAPIResponse(
 | 
						|
		QJsonObject object);
 | 
						|
 | 
						|
	[[nodiscard]] QString cardId() const;
 | 
						|
	[[nodiscard]] QString name() const;
 | 
						|
	[[nodiscard]] QString last4() const;
 | 
						|
	[[nodiscard]] QString dynamicLast4() const;
 | 
						|
	[[nodiscard]] CardBrand brand() const;
 | 
						|
	[[nodiscard]] CardFundingType funding() const;
 | 
						|
	[[nodiscard]] QString fingerprint() const;
 | 
						|
	[[nodiscard]] QString country() const;
 | 
						|
	[[nodiscard]] QString currency() const;
 | 
						|
	[[nodiscard]] quint32 expMonth() const;
 | 
						|
	[[nodiscard]] quint32 expYear() const;
 | 
						|
	[[nodiscard]] QString addressLine1() const;
 | 
						|
	[[nodiscard]] QString addressLine2() const;
 | 
						|
	[[nodiscard]] QString addressCity() const;
 | 
						|
	[[nodiscard]] QString addressState() const;
 | 
						|
	[[nodiscard]] QString addressZip() const;
 | 
						|
	[[nodiscard]] QString addressCountry() const;
 | 
						|
 | 
						|
	[[nodiscard]] bool empty() const;
 | 
						|
	[[nodiscard]] explicit operator bool() const {
 | 
						|
		return !empty();
 | 
						|
	}
 | 
						|
 | 
						|
private:
 | 
						|
	Card(
 | 
						|
		QString id,
 | 
						|
		QString last4,
 | 
						|
		CardBrand brand,
 | 
						|
		quint32 expMonth,
 | 
						|
		quint32 expYear);
 | 
						|
 | 
						|
	QString _cardId;
 | 
						|
	QString _name;
 | 
						|
	QString _last4;
 | 
						|
	QString _dynamicLast4;
 | 
						|
	CardBrand _brand = CardBrand::Unknown;
 | 
						|
	CardFundingType _funding = CardFundingType::Other;
 | 
						|
	QString _fingerprint;
 | 
						|
	QString _country;
 | 
						|
	QString _currency;
 | 
						|
	quint32 _expMonth = 0;
 | 
						|
	quint32 _expYear = 0;
 | 
						|
	QString _addressLine1;
 | 
						|
	QString _addressLine2;
 | 
						|
	QString _addressCity;
 | 
						|
	QString _addressState;
 | 
						|
	QString _addressZip;
 | 
						|
	QString _addressCountry;
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
[[nodiscard]] QString CardBrandToString(CardBrand brand);
 | 
						|
 | 
						|
} // namespace Stripe
 |