From 5a3e60f782e92814caaaefd34ee0e85fad3b9874 Mon Sep 17 00:00:00 2001 From: Jonas-Taha El Sesiy Date: Thu, 27 Jul 2017 22:46:23 +0200 Subject: [PATCH] Add cryptocurrency (#88) --- .gitignore | 3 + cryptocurrency/cryptocurrency | 306 ++++++++++++++++++++++++++++++ cryptocurrency/cryptocurrency.png | Bin 0 -> 44923 bytes install.sh | 2 +- uninstall.sh | 2 +- 5 files changed, 311 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100755 cryptocurrency/cryptocurrency create mode 100644 cryptocurrency/cryptocurrency.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9e27aac --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Meta files +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/cryptocurrency/cryptocurrency b/cryptocurrency/cryptocurrency new file mode 100755 index 0000000..b092450 --- /dev/null +++ b/cryptocurrency/cryptocurrency @@ -0,0 +1,306 @@ +#!/usr/bin/env bash +# Author: Jonas-Taha El Sesiy https://github.com/elsesiy + +base="" +exchangeTo="" +currentVersion="1.15.2" +configuredClient="" + +## This function determines which http get tool the system has installed and returns an error if there isnt one +getConfiguredClient() +{ + if command -v curl &>/dev/null; then + configuredClient="curl" + elif command -v wget &>/dev/null; then + configuredClient="wget" + elif command -v fetch &>/dev/null; then + configuredClient="fetch" + else + echo "Error: This tool reqires either curl, wget, or fetch to be installed." + return 1 + fi + +} + +## Allows to call the users configured client without if statements everywhere +httpGet() +{ + case "$configuredClient" in + curl) curl -A curl -s -N "$@" ;; + wget) wget -qO- "$@" ;; + fetch) fetch -o "..." ;; + esac +} + +## Top 10 cryptocurrencies as base +checkValidCurrency() +{ + if [[ $1 != "BTC" && $1 != "ETH" \ + && $1 != "XRP" && $1 != "LTC" && $1 != "XEM" \ + && $1 != "ETC" && $1 != "DASH" && $1 != "MIOTA" \ + && $1 != "XMR" && $1 != "STRAT" ]]; then + echo "1" + else + echo "0" + fi +} + +checkTargetCurrency() +{ + if [[ $1 != "AUD" && $1 != "BRL" \ + && $1 != "CAD" && $1 != "CHF" && $1 != "CNY" \ + && $1 != "EUR" && $1 != "GBP" && $1 != "HKD" \ + && $1 != "IDR" && $1 != "INR" && $1 != "JPY" && $1 != "KRW" \ + && $1 != "MXN" && $1 != "RUB" && $1 != "USD" ]]; then + echo "1" + else + echo "0" + fi +} + +## Grabs the base currency from the user and validates it with all the possible currency +## types available on the API and guides user through input (doesnt take in arguments) +getBase() +{ + echo -n "What is the base currency: " + read -r base + base=$(echo $base | tr /a-z/ /A-Z/) + if [[ $(checkValidCurrency $base) == "1" ]]; then + unset base + echo "Invalid base currency" + getBase + fi +} + +## Checks base currency from the user and validates it with all the possible currency +## types available on the API (requires argument) +checkBase() +{ + base=$1 + base=$(echo $base | tr /a-z/ /A-Z/) + if [[ $(checkValidCurrency $base) == "1" ]]; then + unset base + echo "Invalid base currency" + exit 1 + fi +} + +# Matches the symbol to the appropriate ids regarding the API calling. +transformBase() +{ + case "$base" in + "ETH") reqId="ethereum" ;; + "BTC") reqId="bitcoin" ;; + "XRP") reqId="ripple" ;; + "LTC") reqId="litecoin" ;; + "XEM") reqId="nem" ;; + "ETC") reqId="ethereum-classic" ;; + "DASH") reqId="dash" ;; + "MIOTA") reqId="iota" ;; + "XMR") reqId="monero" ;; + "STRAT") reqId="stratis" ;; + esac +} + +## Grabs the exchange to currency from the user and validates it with all the possible currency +## types available on the API and guides user through input (doesnt take in arguments) +getExchangeTo() +{ + echo -n "What currency to exchange to: " + read -r exchangeTo + exchangeTo=$(echo $exchangeTo | tr /a-z/ /A-Z/) + if [[ $(checkTargetCurrency $exchangeTo) == "1" ]]; then + echo "Invalid exchange currency" + unset exchangeTo + getExchangeTo + fi +} + +## Grabs the exchange to currency from the user and validates it with all the possible currency +## types available on the API (requires arguments) +checkExchangeTo() +{ + exchangeTo=$1 + exchangeTo=$(echo $exchangeTo | tr /a-z/ /A-Z/) + if [[ $(checkTargetCurrency $exchangeTo) == "1" ]]; then + echo "Invalid exchange currency" + unset exchangeTo + exit 1 + fi +} + +## Get the amount that will be exchanged and validate that the user has entered a number (decimals are allowed) +## doesnt take in argument, it guides user through input +getAmount() +{ + echo -n "What is the amount being exchanged: " + read -r amount + if [[ ! "$amount" =~ ^[0-9]+(\.[0-9]+)?$ ]]; then + echo "The amount has to be a number" + unset amount + getAmount + fi +} + +## Get the amount that will be exchanged +## validate that the user has entered a number (decimals are allowed and requires argument) +checkAmount() +{ + amount=$1 + if [[ ! "$amount" =~ ^[0-9]+(\.[0-9]+)?$ ]]; then + echo "The amount has to be a number" + unset amount + exit 1 + fi +} + +checkInternet() +{ + httpGet google.com > /dev/null 2>&1 || { echo "Error: no active internet connection" >&2; return 1; } # query google with a get request +} + +## Grabs the exchange rate and does the math for converting the currency +convertCurrency() +{ + exchangeTo=$(echo "$exchangeTo" | tr '[:upper:]' '[:lower:]') + exchangeRate=$(httpGet "https://api.coinmarketcap.com/v1/ticker/$reqId/?convert=$exchangeTo" | grep -Eo "\"price_$exchangeTo\": \"[0-9 .]*" | sed s/"\"price_$exchangeTo\": \""//g) > /dev/null + exchangeAmount=$(echo "$exchangeRate * $amount" | bc ) + exchangeTo=$(echo "$exchangeTo" | tr '[:lower:]' '[:upper:]') + base=$(echo "$base" | tr '[:lower:]' '[:upper:]') + + cat <&2 + exit 1 + elif [[ $latestVersion == "" ]]; then + echo "Error: no active internet connection" >&2 + exit 1 + else + if [[ "$latestVersion" != "$currentVersion" ]]; then + echo "Version $latestVersion available" + echo -n "Do you wish to update $repositoryName [Y/n]: " + read -r answer + if [[ "$answer" == [Yy] ]]; then + cd ~ || { echo 'Update Failed'; exit 1; } + if [[ -d ~/$repositoryName ]]; then rm -r -f $repositoryName || { echo "Permissions Error: try running the update as sudo"; exit 1; } ; fi + git clone "https://github.com/$githubUserName/$repositoryName" || { echo "Couldn't download latest version"; exit 1; } + cd $repositoryName || { echo 'Update Failed' ; exit 1 ;} + git checkout "v$latestVersion" 2> /dev/null || git checkout "$latestVersion" 2> /dev/null || echo "Couldn't git checkout to stable release, updating to latest commit." + chmod a+x install.sh #this might be necessary in your case but wasnt in mine. + ./$nameOfInstallFile "update" || exit 1 + cd .. + rm -r -f $repositoryName || { echo "Permissions Error: update succesfull but cannot delete temp files located at ~/$repositoryName delete this directory with sudo"; exit 1; } + else + exit 1 + fi + else + echo "$repositoryName is already the latest version" + fi + fi +} + +usage() +{ + cat <&2 + exit 1 + ;; + h) usage + exit 0 + ;; + v) echo "Version $currentVersion" + exit 0 + ;; + u) update + exit 0 + ;; + :) echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done + +if [[ $# == 0 ]]; then + getBase # get base currency + getExchangeTo # get exchange to currency + getAmount # get the amount to be converted + transformBase + convertCurrency # grab the exhange rate and perform the conversion + exit 0 +elif [[ $# == "1" ]]; then + if [[ $1 == "update" ]]; then + update + elif [[ $1 == "help" ]]; then + usage + else + echo "Not a valid argument" + usage + exit 1 + fi +elif [[ $# == "2" ]]; then + echo "Not a valid argument" + usage + exit 1 +elif [[ $# == "3" ]]; then + checkBase $1 + checkExchangeTo $2 + checkAmount $3 + transformBase + convertCurrency + exit 0 +fi diff --git a/cryptocurrency/cryptocurrency.png b/cryptocurrency/cryptocurrency.png new file mode 100644 index 0000000000000000000000000000000000000000..b06626e0ebdb069dd039e91809db9e838163da65 GIT binary patch literal 44923 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

Mg+#!Zq9x*r^a&Fs27 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 EKc;)9-T(jq literal 0 HcmV?d00001 diff --git a/install.sh b/install.sh index e41812c..dbd4326 100755 --- a/install.sh +++ b/install.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Author: Alexander Epstein https://github.com/alexanderepstein currentVersion="1.15.2" -declare -a tools=(currency stocks weather crypt movies taste short geo cheat ytview cloudup qrify siteciphers todo) +declare -a tools=(currency cryptocurrency stocks weather crypt movies taste short geo cheat ytview cloudup qrify siteciphers todo) declare -a extraLinuxTools=(maps) declare -a extraDarwinTools usedGithubInstallMethod="0" diff --git a/uninstall.sh b/uninstall.sh index 29fb260..805f5f0 100755 --- a/uninstall.sh +++ b/uninstall.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Author: Alexander Epstein https://github.com/alexanderepstein -declare -a tools=(currency stocks weather crypt movies taste short geo cheat ytview cloudup qrify siteciphers todo) +declare -a tools=(currency cryptocurrency stocks weather crypt movies taste short geo cheat ytview cloudup qrify siteciphers todo) all="1" askUninstall()