├── README.md ├── example.smsapi.rc └── smsapi /README.md: -------------------------------------------------------------------------------- 1 | Send message using linux terminal 2 | =========== 3 | 4 | SMSAPI bash client that allows you to send messages from your SMSAPI.pl or SMSAPI.com account 5 | 6 | ## Send message using smsapi.pl service 7 | ```bash 8 | $ ./smsapi sms send --service SMSAPI_PL --oauth TOKEN --from Info PhoneNumber1,PhoneNumber2 "Hello world" 9 | ``` 10 | 11 | ## Send message using smsapi.com service 12 | ```bash 13 | $ ./smsapi sms send --service SMSAPI_COM --oauth TOKEN --from Info PhoneNumber1,PhoneNumber2 "Hello world" 14 | ``` 15 | 16 | ## Send message using configuration file 17 | ```bash 18 | $ ./smsapi 19 | Usage: smsapi sms send [OPTIONS] 20 | Options: 21 | --service 22 | --oauth 23 | --from Sender name 24 | --encoding Message encoding (default:utf8) 25 | -f, --fast <0|1> Fast 26 | -n, --normalize <0|1> Normalize message 27 | -v Verbose" 28 | ``` 29 | 30 | you have to create .smsapi.rc file using example.smsapi.rc 31 | -------------------------------------------------------------------------------- /example.smsapi.rc: -------------------------------------------------------------------------------- 1 | OAUTH="TOKEN" 2 | SERVICE="SMSAPI_PL" 3 | #OR 4 | #SERVICE="SMSAPI_COM" 5 | OPTIONS[encoding]=utf8 6 | #OPTIONS[from]= 7 | #OPTIONS[normalize]=1 8 | -------------------------------------------------------------------------------- /smsapi: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | VERBOSE=0 3 | OAUTH="" 4 | SMSAPI_PL="https://api.smsapi.pl/" 5 | SMSAPI_COM="https://api.smsapi.com/" 6 | help() { 7 | echo "Usage: smsapi sms send [OPTIONS] " 8 | echo "Options: 9 | --service 10 | --oauth 11 | --from Sender name 12 | --encoding Message encoding (default:utf8) 13 | -f, --fast <0|1> Fast 14 | -n, --normalize <0|1> Normalize message 15 | -v Verbose" 16 | exit 0; 17 | } 18 | ARGS=( ) 19 | declare -A OPTIONS 20 | if [ -f ./.smsapi.rc ]; then 21 | source ./.smsapi.rc 22 | elif [ -f ~/.smsapi.rc ]; then 23 | source ~/.smsapi.rc 24 | fi 25 | setOption() { 26 | case $1 in 27 | "f") OPTIONS[fast]="$2" ;; 28 | "n") OPTIONS[normalize]="$2" ;; 29 | *) OPTIONS[$1]="$2"; 30 | esac 31 | } 32 | setParam() { 33 | case $1 in 34 | "v") VERBOSE=$2 ;; 35 | "oauth") OAUTH="$2" ;; 36 | "service") SERVICE="$2" ;; 37 | *) OPTIONS[$1]="$2"; 38 | esac 39 | } 40 | while [ ! -z "$1" ]; do 41 | if [[ $1 =~ ^-([a-zA-Z0-9])$ ]]; then 42 | setParam ${BASH_REMATCH[1]} 1 43 | elif [[ $1 =~ ^--([a-z0-9A-Z_\-]+)=(.*)$ ]]; then 44 | setParam ${BASH_REMATCH[1]} "${BASH_REMATCH[2]}" 45 | elif [[ $1 =~ ^--([a-z0-9A-Z_\-]+)$ ]]; then 46 | shift 47 | setParam ${BASH_REMATCH[1]} "$1" 48 | elif [[ $1 =~ ^--$ ]]; then 49 | shift 50 | ARGS[${#ARGS[@]}]="$1" 51 | else 52 | ARGS[${#ARGS[@]}]="$1" 53 | fi 54 | shift 55 | done 56 | rawurlencode() { 57 | local string="${1}" 58 | local strlen=${#string} 59 | local encoded="" 60 | for (( pos=0 ; pos&2 73 | fi 74 | } 75 | sms_send() { 76 | local url="${!SERVICE}sms.do" 77 | local params=() 78 | params[${#params[@]}]=to=$(rawurlencode "$1") 79 | params[${#params[@]}]=message=$(rawurlencode "$2") 80 | if [ ! -z ${OPTIONS[normalize]} ] && [ ${OPTIONS[normalize]} -eq 1 ]; then 81 | params[${#params[@]}]="normalize=1" 82 | fi 83 | if [ ! -z ${OPTIONS[encoding]} ]; then 84 | params[${#params[@]}]="encoding=${OPTIONS[encoding]}" 85 | else 86 | params[${#params[@]}]="encoding=utf8" 87 | fi 88 | if [ ! -z "${OPTIONS[from]}" ]; then 89 | local fromName=$(rawurlencode "${OPTIONS[from]}") 90 | params[${#params[@]}]="from=${fromName}" 91 | fi 92 | if [ ! -z ${OPTIONS[fast]} ] && [ ${OPTIONS[fast]} -eq 1 ]; then 93 | params[${#params[@]}]="fast=1" 94 | fi 95 | verbose "${params[@]}" 96 | local data=$( printf "&%s" "${params[@]}" ) 97 | data=${data:1} 98 | token=${OAUTH} 99 | RESULT=$(curl "$url" -A "smsapi/bash-client" --header "Authorization: Bearer $token" -d "$data" -s -S 2>&2) 100 | echo $RESULT 101 | } 102 | if [ ${#ARGS[@]} -lt 2 ]; then help; fi 103 | COMMAND="${ARGS[0]}" 104 | ACTION="${ARGS[1]}" 105 | ARGS=("${ARGS[@]:2}") 106 | if [ "$COMMAND" == "sms" ]; then 107 | if [ "$ACTION" == "send" ]; then 108 | sms_send "${ARGS[0]}" "${ARGS[1]}" 109 | else 110 | help "$COMMAND" 111 | fi 112 | else 113 | help 114 | fi 115 | --------------------------------------------------------------------------------