mirror of
https://github.com/YunoHost-Apps/hubzilla_ynh.git
synced 2024-09-03 19:26:21 +02:00
234 lines
5.4 KiB
Bash
Executable file
234 lines
5.4 KiB
Bash
Executable file
#!/bin/bash
|
|
# Copyright (c) 2012 Fabio Comuni
|
|
# Copyright (c) 2010, 2012 Yu-Jie Lin
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
# this software and associated documentation files (the "Software"), to deal in
|
|
# the Software without restriction, including without limitation the rights to
|
|
# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
# of the Software, and to permit persons to whom the Software is furnished to do
|
|
# so, subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be included in all
|
|
# copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
# SOFTWARE.
|
|
|
|
FCLI_RC="$HOME/.shred.rc"
|
|
|
|
|
|
|
|
usage () {
|
|
echo "usage: $0 options
|
|
|
|
OPTIONS:
|
|
-h Show this message
|
|
|
|
-c Command
|
|
|
|
-C Config-Filename
|
|
|
|
Valid Commands:
|
|
statuses_update
|
|
home_timeline
|
|
|
|
Use -h -c command to get options for the command.
|
|
"
|
|
exit $1
|
|
}
|
|
|
|
show_config_help () {
|
|
echo "Please create $FCLI_RC with:
|
|
hubzilla_url=YOR_SERVER_URL (no trailing /)
|
|
oauth_consumer_key=YOUR_CONSUMER_KEY
|
|
oauth_consumer_secret=YOUR_CONSUMER_SECRET
|
|
|
|
You can register new app consumer key and secret at
|
|
http://yourserver.com/settings/oauth
|
|
"
|
|
exit $1
|
|
}
|
|
|
|
|
|
show_statuses_update () {
|
|
echo "Command statuses_update
|
|
|
|
Requires:
|
|
-s status
|
|
|
|
Optional:
|
|
-r in_reply_to_status_id
|
|
"
|
|
exit $1
|
|
}
|
|
|
|
show_home_timeline () {
|
|
echo "Command home_timeline"
|
|
|
|
exit $1
|
|
}
|
|
|
|
#json helper
|
|
#
|
|
# usage:
|
|
# echo "$parsed_json" | js key1 [key2 [key3 ...]][,]
|
|
#
|
|
# echoes the value of json[key1][key2][key3], without surronding quotes
|
|
# with "," as last argument, no newline is printed
|
|
#
|
|
js () {
|
|
local arg
|
|
local rg='^\['
|
|
local ret
|
|
for arg in $@
|
|
do
|
|
[[ "$arg" == "," ]] && break;
|
|
if [[ $arg == ${arg//[0-9]/} ]]
|
|
then
|
|
rg="${rg}\"$arg\","
|
|
else
|
|
rg="${rg}$arg,"
|
|
fi
|
|
done
|
|
rg="${rg%?}\]"
|
|
ret=$(grep $rg | cut -f 2 | sed 's/^"\(.*\)"$/\1/' | sed "s/\\\\\//\//g" )
|
|
if [[ "$arg" == "," ]]
|
|
then
|
|
echo -e "$ret" | tr -d '\012\015'
|
|
else
|
|
echo -e "$ret"
|
|
fi
|
|
}
|
|
|
|
|
|
load_config () {
|
|
|
|
# Source Config
|
|
[[ -f "$FCLI_RC" ]] && . "$FCLI_RC" || show_config_help 1
|
|
|
|
THISDIR=$(dirname $0)
|
|
if [ $THISDIR == '' ]; then THISDIR=. ; fi
|
|
PATH=$THISDIR:$PATH
|
|
|
|
# Source ShredOAuth.sh
|
|
OAuth_sh=$(which ShredOAuth.sh)
|
|
(( $? != 0 )) && echo 'Unable to locate ShredOAuth.sh! Make sure it is in searching PATH.' && exit 1
|
|
source "$OAuth_sh"
|
|
|
|
# Source JSON.sh
|
|
JSON_sh=$(which JSON.sh)
|
|
(( $? != 0 )) && echo 'Unable to locate JSON.sh! Make sure it is in searching PATH.' && exit 1
|
|
source "$JSON_sh"
|
|
|
|
|
|
[[ "$oauth_consumer_key" == "" ]] && show_config_help 1
|
|
[[ "$oauth_consumer_secret" == "" ]] && show_config_help 1
|
|
|
|
|
|
FO_init
|
|
|
|
if [[ "$oauth_token" == "" ]] || [[ "$oauth_token_secret" == "" ]]; then
|
|
FO_access_token_helper
|
|
if (( $? == 0 )); then
|
|
oauth_token=${FO_ret[0]}
|
|
oauth_token_secret=${FO_ret[1]}
|
|
echo "oauth_token='${FO_ret[0]}'" >> "$FCLI_RC"
|
|
echo "oauth_token_secret='${FO_ret[1]}'" >> "$FCLI_RC"
|
|
echo "Token saved."
|
|
else
|
|
echo 'Unable to get access token'
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
main () {
|
|
|
|
fcli_command=
|
|
fcli_status=
|
|
fcli_in_reply_to_status_id=
|
|
fcli_file=
|
|
fcli_help_flag=
|
|
fcli_opts=
|
|
fcli_post=
|
|
|
|
while getopts "C:c:s:r:f:q:hp" name
|
|
do
|
|
case $name in
|
|
c) fcli_command="$OPTARG";;
|
|
C) FCLI_RC="$OPTARG";;
|
|
s) fcli_status="$OPTARG";;
|
|
r) fcli_in_reply_to_status_id="$OPTARG";;
|
|
f) fcli_file="$OPTARG";;
|
|
h) fcli_help_flag="1";;
|
|
p) fcli_post="1";;
|
|
q) fcli_opts=("${fcli_opts[@]}" "$OPTARG");;
|
|
?) usage
|
|
exit 2;;
|
|
esac
|
|
done
|
|
load_config
|
|
|
|
if [[ "$fcli_help_flag" == "1" ]]; then case $fcli_command in
|
|
# statuses_update)
|
|
# show_statuses_update 0
|
|
# ;;
|
|
home_timeline)
|
|
show_home_timeline 0
|
|
;;
|
|
*)
|
|
[[ "$fcli_command" == "" ]] && usage 0
|
|
usage 1
|
|
esac ; fi
|
|
|
|
case $fcli_command in
|
|
home_timeline)
|
|
FO_statuses_home_timeline 'json' '' 5
|
|
JS_Parsed=$(echo "$FO_ret" | tokenize | parse)
|
|
for id in 0 1 2 3 4
|
|
do
|
|
echo "$JS_Parsed" | js $id "user" "name" ,
|
|
echo -n " - "
|
|
echo "$JS_Parsed" | js $id "created_at"
|
|
echo "$JS_Parsed" | js $id "text"
|
|
echo ""
|
|
echo "------------------------------------------------------------------------------"
|
|
done
|
|
|
|
return $FO_rval
|
|
;;
|
|
statuses_update)
|
|
[[ "$fcli_status" == "" ]] && show_statuses_update 1
|
|
FO_statuses_update 'json' "$fcli_status" "$fcli_in_reply_to_status_id"
|
|
JS_Parsed=$(echo "$FO_ret" | tokenize | parse)
|
|
echo "$JS_Parsed" | js "user" "name" ,
|
|
echo -n " - "
|
|
echo "$JS_Parsed" | js "created_at"
|
|
echo "$JS_Parsed" | js "text"
|
|
echo ""
|
|
echo "------------------------------------------------------------------------------"
|
|
return $FO_rval
|
|
;;
|
|
|
|
*)
|
|
|
|
# echo "${fcli_opts[@]}"
|
|
|
|
FO_command "$fcli_command" "$fcli_post" fcli_opts[@]
|
|
|
|
echo $FO_ret
|
|
|
|
return $FO_rval
|
|
|
|
;;
|
|
esac
|
|
return 0
|
|
}
|
|
|
|
main "$@"
|