S3Operations 3.Sh
S3Operations 3.Sh
/bin/bash
# Color Code and Name
NC='\033[0m' # No Color
Light_Red='\033[1;31m'
Green='\033[0;32m'
Light_Green='\033[1;32m'
Yellow='\033[1;33m'
Blue='\033[0;34m'
Purple='\033[0;35m'
Light_Purple='\033[1;36m'
function operation_completed() {
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
printf "${Green}S3 file upload completed successfully ! ${NC}\n"
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
}
function print_by_message() {
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
printf "${Green}${1} ${NC}\n"
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
}
function operation_failed() {
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
printf "${Light_Red}${1} ${NC}\n"
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
}
function helpFunction() {
echo ""
echo "Usage: $0 -f filePath -ca checksumAlgo -t tags -i fileId"
echo -e "\t-f Valid file path to be uploaded to s3 bucket"
echo -e "\t-a Checksum algorithm, allowed value: one of
[CRC32,CRC32C,SHA1,SHA256]"
echo -e "\t-t Tags as valid json, example -t
'[{\"tagName\":\"companyCode\",\"tagValue\":\"4\"},
{\"tagName\":\"acquisitionChannel\",\"tagValue\":\"acq\"},
{\"tagName\":\"fileFormat\",\"tagValue\":\"pain00100109\"},
{\"tagName\":\"customerReference\",\"tagValue\":\"12345\"}]'"
echo -e "\t-i file id to be downloaded from s3 bucket"
exit 1 # Exit script after printing help
}
function getCompanyCode() {
namespace=$1
companyCode=""
case $namespace in
pm2intnl | pm2asbnl | dcaccnl) companyCode="2" ;;
pm2intuk) companyCode="5" ;;
pm2intbe | pm2asbbe | dcaccbe | dcmain02) companyCode="1" ;;
**) companyCode="4" ;;
esac
echo "$companyCode"
}
printf "\n$
{Yellow}***************************************************************************
*****${NC}\n"
printf "${Light_Green}S3 file operation ${NC}\n"
printf "$
{Yellow}***************************************************************************
*****${NC}\n\n"
printf "\n"
if [ -n "$filePath" ]; then
file="$filePath"
echo "File passed from shell script : $file"
printf "\n"
printf "\n"
bucket=""
if [ -n "$filePath" ]; then
PS3=$'\nPlease select the right mode[Provide the input as number] : '
modeArr=("hybrid" "sbcp")
selectedMode=""
select choosenMode in "${modeArr[@]}"; do
if [[ ! ${modeArr[*]} =~ $choosenMode ]]; then
printf "$
{Yellow}***************************************************************************
******${NC}\n"
printf "${Light_Red}Invalid value ! Please select valid option. ${NC}\n"
printf "$
{Yellow}***************************************************************************
*****${NC}\n"
continue
fi
selectedMode="$choosenMode"
printf "\n${Green}You have selected option for : $selectedMode ${NC}\n \n"
break
done
fi
awsResult=""
if [[ "${selectedMode}" = "sbcp" || -z $selectedMode ]]; then
environment="pm2dev2"
domain="sbcp.io"
companyCode=$(getCompanyCode "$selectedNs")
tokenEndPointAuth=""
if [ "${selectedNs}" == "dcaccnl" ] || [ "${selectedNs}" == "dcaccbe" ]; then
environment="dcrdqaew1"
domain="soprabanking.cloud"
fi
loginURL="https://login.$selectedNs.$environment.$domain"
case $selectedNs in
pm2intnl | pm2asbnl | pm2intuk | pm2intbe | pm2asbbe | pm2asbuk | pm2asbbe |
dcaccnl | dcaccbe | dcmain02)
intTokenURL="https://api.$selectedNs.$environment.$domain/core/authentication/
external/v1/private/token"
tokenEndPointAuth="dGVzdC10ZW5hbnQtaW50ZXJuYWwtYXBwOnRlc3QtdGVuYW50LWludGVybmFsLWFw
cC1zZWNyZXQ="
;;
*)
intTokenURL="$loginURL/reactive-server-external-auth/private/oauth/token"
tokenEndPointAuth="a2Fma2EtcmVzdC1wcm94eS1lbmNyeXB0ZWQtaW50ZXJuYWwtYXBwOlEua2IsPHcr
PSN9aCFZeVQ8LHJgamUpdiRTOm4nXQ=="
;;
esac
internalToken=$(curl --location -s --request POST "$intTokenURL" \
--header "Authorization: Basic $tokenEndPointAuth" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'scope=default-scope' \
--data-urlencode 'token_type=TENANT_INTERNAL_APP' \
--data-urlencode 'grant_type=client_credentials' | jq -r '.access_token')
if [ ! -z "$filePath" ]; then
if [ -n "$tags" ]; then
request_body='{
"name": "'"$file"'",
"tags": '$tags'
}'
else
request_body='{
"name": "'"$file"'"
}'
fi
result=$(curl -s --location --request POST "$loginURL/service-pom-payment-
order-bulk-processing/v1/initiated-payment-orders-file" \
--header "X-SBS-Current-Company: $companyCode" \
--header "Authorization: Bearer $internalToken" \
--header 'Content-Type: application/json' \
--data-raw "$request_body")
else
result=$(curl -s --location --request GET "$loginURL/service-pom-payment-order-
bulk-processing/v1/initiated-payment-orders-file-report/$fileId" \
--header "X-SBS-Current-Company: $companyCode" \
--header "Authorization: Bearer $internalToken" \
--header 'Content-Type: application/json'
)
fi
printf "\n"
if [ -n "$filePath" ]; then
awsResult=$(aws --endpoint-url $externalTransferUrl s3 cp $filename
s3://$bucket/$prefix/$id)
commandResult=$?
printf "\n"
if [ $commandResult -eq 0 ]; then
echo "awsResult : $awsResult"
print_by_message "File successfully uploaded in S3 bucket!"
fi
else
awsResult=$(aws --endpoint-url "$externalTransferUrl" s3 cp
"s3://$bucket/$prefix/$id" "${filename}.xml")
commandResult=$?
printf "\n"
if [ $commandResult -eq 0 ]; then
echo "awsResult : $awsResult"
print_by_message "File successfully downloaded from S3 bucket!"
fi
fi
fi
else
if [ "${selectedNs}" = "dcaccnl" ] || [ "${selectedNs}" = "dcaccbe" ]; then
bucket="sbcp-dcrdqaew1-file-mgmt"
else
bucket="sbcp-pm2dev2-file-mgmt"
fi
prefix="${selectedNs}/other/pom-create-initiated-payment-orders-file-sftp"
filename=$(basename "$file")
externalTransferUrl="https://s3.eu-west-1.amazonaws.com"