Merge branch 'master' of git://git.uucp.hu/sysop/tools
[hband-tools.git] / crawler-bin / entropay
blob514097d3dffbb1635982e4af92aa72b08a45a5aa
1 #!/bin/bash
3 base_url=https://api.entropay.com/api/v2
4 curlopts=(-sS -H "Content-Type: application/json" -H "Accept-Encoding: gzip, deflate" --compressed -H "User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.114 Safari/537.36 Vivaldi/1.9.818.50")
6 showCardNumber=''
7 showExpirationDate=''
8 showCvvCode=''
9 showLog=''
10 machineParseable=''
13 while getopts "hu:p:NXClm" OPT
15 case "$OPT" in
17 user=$OPTARG
20 pass=$OPTARG
23 showCardNumber=1
26 showExpirationDate=1
29 showCvvCode=1
32 machineParseable=1
35 showLog=1
38 echo "Usage: entropay -u USER -p PASS [-N] [-X] [-C] [-m]
39 Options:
40 -N show card number
41 -X show expiration date
42 -C show CVV code
43 -l show transaction activity (log)
44 -m machine parseable"
45 exit 0
47 esac
48 done
50 set -e
51 set -u
52 test -n "$user"
53 test -n "$pass"
56 # Login
57 page1=$(
58 curl "${curlopts[@]}" $base_url/authentication/jwt \
59 -d "{\"username\":\"$user\",\"password\":\"$pass\",\"referrerId\":null,\"referrerType\":null}"
62 token=$(
63 echo "$page1" |\
64 jq -r .token
67 test -n "$token"
68 curlopts+=(-H "Authorization: Bearer $token")
70 JQ()
72 jq -r "$1" <<<"$content"
75 if [ $showLog ]
76 then
77 tsEnd=`date +%s`
78 tsStart=`printf '%(%s)T' 0`
79 datetimeformat='%(%FT%T.000Z)T'
80 dayStart=`printf "$datetimeformat" $tsStart`
81 dayEnd=`printf "$datetimeformat" $tsEnd`
83 curl "${curlopts[@]}" -X POST "$base_url/account/transaction_activity?start=0&max=99" -d "{\"dayStart\":\"$dayStart\",\"dayEnd\":\"$dayEnd\"}" |\
84 jq -r '.entries[] | (
85 "TRANSACTION",
86 "DATE " + .date,
87 "TYPE " + .transactionType,
88 "STATE " + .state,
89 (.additionalInfo[] | select(.key=="MERCHANT_NAME" or .key=="CARD_FRIENDLY_NAME") | .key + " " + .value),
90 if .movements[0] then
91 (.movements[] | ("PARTICIPANT " + .amount + " " + .participant.type + " " + .participant.name))
92 else
93 ("AMOUNT " + .amount + " " + .charge?)
94 end,
95 "END"
96 )' |\
97 while read -r key data
99 set +u
100 declare $key="$data"
102 case "$key" in
103 TRANSACTION)
104 declare -A move=()
106 PARTICIPANT)
107 set -- $data
108 amount=$1
109 shift
110 move[$*]=$amount
112 AMOUNT)
113 move[$CARD_FRIENDLY_NAME]=$data
115 END)
116 echo "$TYPE $STATE -- ${DATE:0:10} ${DATE:11:8}"
117 if [ -n "$MERCHANT_NAME" ]
118 then
119 echo " Merchant: $MERCHANT_NAME"
121 for ptcp in "${!move[@]}"
123 money=${move[$ptcp]}
124 amount=${money//[!0-9.-]/}
125 currency=${money//[0-9.-]/}
126 LANG=C printf " %-4s %+10.2f %s\n" "$currency" "$amount" "$ptcp"
127 done
128 echo
130 esac
131 done
132 else
133 # Get cards' data
134 content=$(
135 curl "${curlopts[@]}" "$base_url/cards/virtual/search?start=0&max=99&availableBalance=true" -d '{"deleted":false}'
138 # Display details
139 n_cards=`JQ '.entries | length'`
141 while [ $n -lt $n_cards ]
143 cardName=`JQ ".entries[$n].displayName"`
144 balanceActual=`JQ ".entries[$n].actualBalance"`
145 balanceAvailable=`JQ ".entries[$n].availableBalance"`
146 [ $showCardNumber ] && cardNumber=`JQ ".entries[$n].cardNumber"` || cardNumber=''
147 holder=`JQ ".entries[$n].nameOnCard"`
148 [ $showExpirationDate ] && expire=`JQ ".entries[$n].expiryMonth"`/`JQ ".entries[$n].expiryYear"` || expire=''
149 if [ $showCvvCode ]
150 then
151 cvv=`curl "${curlopts[@]}" "$base_url/cards/virtual/$(JQ ".entries[$n].id")/cvv" | jq -r .cvv`
152 else
153 cvv=''
156 if [ ! $machineParseable ]
157 then
158 balanceActual=${balanceActual/USD/$}
159 balanceAvailable=${balanceAvailable/USD/$}
162 if [ "$balanceActual" = "$balanceAvailable" ]
163 then
164 balance="$balanceActual"
165 else
166 balance="$balanceActual ($balanceAvailable)"
169 if [ $machineParseable ]
170 then
171 echo "$cardNumber;$balanceActual;$balanceAvailable;$expire;$cvv;$holder;$cardName"
172 else
173 if [ $showCardNumber$showExpirationDate$showCvvCode ]
174 then
175 echo "$cardName"
176 echo " $balance"
177 echo " ${cardNumber:+${cardNumber:0:4}-${cardNumber:4:4}-${cardNumber:8:4}-${cardNumber:12} }${expire:+[$expire] }${cvv:+CVV:$cvv}"
178 echo " $holder"
179 else
180 echo "$cardName $balance"
184 n=$[n+1]
185 done