From 5b2714c76259899e58b280265f9b6df0b15df0c7 Mon Sep 17 00:00:00 2001 From: Toni Leino Date: Wed, 5 Sep 2018 11:49:26 +0300 Subject: [PATCH] Avatar upload and delete --- README.md | 13 +++++++++++++ src/slack | 35 +++++++++++++++++++++++++++++++++-- test/assets/avatar.png | Bin 0 -> 764 bytes test/integration/avatar.bats | 11 +++++++++++ 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 test/assets/avatar.png create mode 100644 test/integration/avatar.bats diff --git a/README.md b/README.md index 8f501b3..9dd1c25 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,19 @@ $ export SLACK_CLI_TOKEN='token' ## Examples and Recipes +### `avatar` + +```console +$ # Upload avatar via prompts: +$ slack avatar upload +$ +$ # Upload avatar via arguments: +$ slack avatar upload avatar.png +$ +$ # Delete avatar: +$ slack avatar delete +``` + ### `chat send` ```console diff --git a/src/slack b/src/slack index 018e120..5d4c08f 100755 --- a/src/slack +++ b/src/slack @@ -14,7 +14,7 @@ cmd="${1}" ; shift # SUBCOMMAND PARSING ############################################################################## case "${cmd}${1}" in - chatdelete|chatsend|chatupdate|\ + avatarupload|avatardelete|chatdelete|chatsend|chatupdate|\ filedelete|fileinfo|filelist|fileupload|\ presenceactive|presenceaway|\ reminderadd|remindercomplete|reminderdelete|reminderinfo|reminderlist| \ @@ -99,6 +99,9 @@ while (( "$#" )); do --user|-ur*) user=${2} ; shift ; shift ;; *) case "${cmd}${sub}" in + avatarupload) + [ -n "${1}" ] && [ -z "${file}" ] && file=${1} + ;; chatdelete) [ -n "${1}" ] && [ -n "${timestamp}" ] && [ -z "${channel}" ] && channel=${1} [ -n "${1}" ] && [ -z "${timestamp}" ] && timestamp=${1} @@ -147,6 +150,9 @@ ${trace} # ARGUMENT AND OPTION PROMPTING ################################################################### case "${cmd}${sub}" in + avatarupload) + [ -z "${file}" ] && read -e -p 'Enter avatar upload (e.g. avatar.png): ' file + ;; chatdelete) [ -z "${channel}" ] && read -e -p 'Enter channel (e.g. #general): ' channel [ -z "${timestamp}" ] && read -e -p 'Enter timestamp (e.g. 1405894322.002768): ' timestamp @@ -432,6 +438,10 @@ function help() { echo ' status clear Clear status' echo ' status edit Edit status' echo + echo 'Avatar Commands:' + echo ' avatar upload Upload avatar' + echo ' avatar delete Delete avatar' + echo echo 'More Information:' echo ' repo https://github.com/rockymadden/slack-cli' } @@ -518,6 +528,27 @@ function fileupload() { jqify "${msg}" } +function avatarupload() { + if [ -f "${file}" ]; then + local _file=${file} + fi + + local msg=$(\ + curl -s -X POST https://slack.com/api/users.setPhoto \ + ${_file:+ --form "image=@${_file}"} \ + --form "token=${token}") + + jqify "${msg}" +} + +function avatardelete() { + local msg=$(\ + curl -s https://slack.com/api/users.deletePhoto \ + --form "token=${token}") + + jqify "${msg}" +} + function init() { echo "${token}" > "${etcdir}/.slack" @@ -652,7 +683,7 @@ case "${cmd}${sub}" in --help|-h) help ; exit 0 ;; --version|-v) version ; exit 0 ;; init) init ; exit $? ;; - chatdelete|chatsend|chatupdate|\ + avatarupload|avatardelete|chatdelete|chatsend|chatupdate|\ filedelete|fileinfo|filelist|fileupload|\ presenceactive|presenceaway|\ reminderadd|remindercomplete|reminderdelete|reminderinfo|reminderlist|\ diff --git a/test/assets/avatar.png b/test/assets/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8f02a7b4c3b3be906ca94211a2975bd4be612a GIT binary patch literal 764 zcmeAS@N?(olHy`uVBq!ia0y~yVAKI&4kn<;H+e}VAjMhW5n0T@pr;JNj1^1m%YcIH zC7!;n?2kBEIaC>K3XK;7g(OQ{BTAg}b8}PkN*J7rQWHy3QxwWGOEMJPJ$(bh8~MZ; z7?{dDT^vIyZoR#1$jiXM!D4t||8sX{VQ=k+lU}Q^{*mN7(30RZkk~*m!D(Re3;_eh rfyF)?GXw?>t4(3>;ZS3tCe9OEdXP1A?&aB_RL$V&>gTe~DWM4fd}`0k literal 0 HcmV?d00001 diff --git a/test/integration/avatar.bats b/test/integration/avatar.bats new file mode 100644 index 0000000..659081e --- /dev/null +++ b/test/integration/avatar.bats @@ -0,0 +1,11 @@ +#!/usr/bin/env bats + +load suite + +@test 'avatar upload should succeed' { + build/bin/slack avatar upload test/assets/avatar.png +} + +@test 'avatar delete should succeed' { + build/bin/slack avatar delete +}