forked from awa/go-iap
/
converter.go
77 lines (69 loc) · 2.19 KB
/
converter.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package appstore
import (
"strconv"
"time"
)
func ToReceiptInApps(aps []InApp) ReceiptInApps {
var rc ReceiptInApps
for _, ap := range aps {
rc = append(rc, ToReceiptInApp(ap))
}
return rc
}
func ToReceiptInApp(ap InApp) *ReceiptInApp {
return &ReceiptInApp{
Quantity: ToInt64(ap.Quantity),
ProductID: ap.ProductID,
TransactionID: ToInt64(ap.TransactionID),
OriginalTransactionID: ToInt64(ap.OriginalTransactionID),
IsTrialPeriod: ToBool(ap.IsTrialPeriod),
IsInIntroOfferPeriod: ToBool(ap.IsInIntroOfferPeriod),
AppItemID: ToInt64(ap.AppItemID),
VersionExternalIdentifier: ToInt64(ap.VersionExternalIdentifier),
WebOrderLineItemID: ToInt64(ap.WebOrderLineItemID),
PurchaseDate: ToTime(ap.PurchaseDate.PurchaseDateMS),
OriginalPurchaseDate: ToTime(ap.OriginalPurchaseDate.OriginalPurchaseDateMS),
ExpiresDate: ToTime(ap.ExpiresDate.ExpiresDateMS),
CancellationDate: ToTime(ap.CancellationDate.CancellationDateMS),
PromotionalOfferID: ap.PromotionalOfferID,
OfferCodeRefName: ap.OfferCodeRefName,
}
}
func ToInt64(v string) int64 {
intVal, err := strconv.ParseInt(v, 10, 64)
if err != nil {
return 0
}
return intVal
}
func ToBool(v string) bool {
boolVal, err := strconv.ParseBool(v)
if err != nil {
return false
}
return boolVal
}
func ToTime(msString string) time.Time {
ms, err := strconv.Atoi(msString)
if err != nil {
return time.Time{}
}
return time.Unix(int64(ms/1000), 0)
}
func ToReceiptPendingRenewalInfos(pris []PendingRenewalInfo) ReceiptPendingRenewalInfos {
var rpris ReceiptPendingRenewalInfos
for _, pri := range pris {
rpris = append(rpris, ToReceiptPendingRenewalInfo(pri))
}
return rpris
}
func ToReceiptPendingRenewalInfo(pri PendingRenewalInfo) *ReceiptPendingRenewalInfo {
return &ReceiptPendingRenewalInfo{
ExpirationIntent: ToInt64(pri.ExpirationIntent),
AutoRenewProductID: pri.AutoRenewProductID,
RetryFlag: ToBool(pri.RetryFlag),
AutoRenewStatus: ToBool(pri.AutoRenewStatus),
PriceConsentStatus: ToBool(pri.PriceConsentStatus),
ProductID: pri.ProductID,
}
}