From 57717ce858076e3f1a9124ff6f01866590d94ad9 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Thu, 5 Jul 2018 20:48:56 +0200 Subject: [PATCH 01/15] added package-lock.json to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c72d8c81..014e44e5 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ build/Release # Dependency directory # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git node_modules +package-lock.json ./test resized/ From 555ef7a2c54c45015a8c1d9b8de37a8d90244990 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Fri, 6 Jul 2018 02:20:21 +0200 Subject: [PATCH 02/15] [Impl] functions getUsers and getAvatar --- lib/slack.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/slack.js b/lib/slack.js index a9453aa4..d0797628 100644 --- a/lib/slack.js +++ b/lib/slack.js @@ -22,9 +22,10 @@ module.exports = Slack; * Static variables */ -var loginFormPath = '/?no_sso=1'; -var emojiUploadFormPath = '/admin/emoji'; -var emojiUploadImagePath = '/customize/emoji'; +const loginFormPath = '/?no_sso=1'; +const emojiUploadFormPath = '/admin/emoji'; +const emojiUploadImagePath = '/customize/emoji'; +const listUsersPath = '/api/users.list' /** * Initialize a new `Slack`. @@ -210,4 +211,22 @@ function Slack(opts, debug) { form.append('alias', name); }.bind(this)); }; + + this.getUsers = function *() { + // TODO listUsersPath + var args = { + limit: 0, + token: 'TODO token seems to be stored in cheerio' + }; + + var load = { + url: opts.url + listUsersPath, + jar: opts.jar || args, // to verify + method: 'GET' + }; + }; + + this.getUserAvatar = function *() { + // TODO download avatar + }; } From 2a377eae6d44c8cfe3acd9fb33b1968e1257a312 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 10:19:52 +0200 Subject: [PATCH 03/15] testing public API with web token --- lib/slack.js | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/lib/slack.js b/lib/slack.js index d0797628..c9a65f2c 100644 --- a/lib/slack.js +++ b/lib/slack.js @@ -25,7 +25,7 @@ module.exports = Slack; const loginFormPath = '/?no_sso=1'; const emojiUploadFormPath = '/admin/emoji'; const emojiUploadImagePath = '/customize/emoji'; -const listUsersPath = '/api/users.list' +const listUsersPath = '/stats/export?type=users&date_range=30d&cols=name%2Cusername%2Cemail%2Clast_activity%2Caccount_created&sort_prefix=account_created&sort_dir=desc' /** * Initialize a new `Slack`. @@ -48,6 +48,8 @@ function Slack(opts, debug) { yield this.login(); console.log('Logged in'); yield this.emoji(); + console.log('Fetching users') + yield this.getUsers(); } catch (e) { console.log('Uh oh! ' + e); throw e; @@ -213,20 +215,31 @@ function Slack(opts, debug) { }; this.getUsers = function *() { - // TODO listUsersPath var args = { limit: 0, - token: 'TODO token seems to be stored in cheerio' + token: this.opts.crumb }; + var opts = this.opts; + + console.log(args); + var load = { url: opts.url + listUsersPath, - jar: opts.jar || args, // to verify + jar: opts.jar, method: 'GET' }; + + console.log(opts); + + const res = yield request(load) + + console.log("result: ", res) + + return res; }; - this.getUserAvatar = function *() { + this.getUserAvatar = function () { // TODO download avatar }; } From 2cac22c73a55a921e412d2125ac3d2a4a479bbf7 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 11:31:19 +0200 Subject: [PATCH 04/15] removed unsuccesfull test in slack.js --- lib/slack.js | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/lib/slack.js b/lib/slack.js index c9a65f2c..a9453aa4 100644 --- a/lib/slack.js +++ b/lib/slack.js @@ -22,10 +22,9 @@ module.exports = Slack; * Static variables */ -const loginFormPath = '/?no_sso=1'; -const emojiUploadFormPath = '/admin/emoji'; -const emojiUploadImagePath = '/customize/emoji'; -const listUsersPath = '/stats/export?type=users&date_range=30d&cols=name%2Cusername%2Cemail%2Clast_activity%2Caccount_created&sort_prefix=account_created&sort_dir=desc' +var loginFormPath = '/?no_sso=1'; +var emojiUploadFormPath = '/admin/emoji'; +var emojiUploadImagePath = '/customize/emoji'; /** * Initialize a new `Slack`. @@ -48,8 +47,6 @@ function Slack(opts, debug) { yield this.login(); console.log('Logged in'); yield this.emoji(); - console.log('Fetching users') - yield this.getUsers(); } catch (e) { console.log('Uh oh! ' + e); throw e; @@ -213,33 +210,4 @@ function Slack(opts, debug) { form.append('alias', name); }.bind(this)); }; - - this.getUsers = function *() { - var args = { - limit: 0, - token: this.opts.crumb - }; - - var opts = this.opts; - - console.log(args); - - var load = { - url: opts.url + listUsersPath, - jar: opts.jar, - method: 'GET' - }; - - console.log(opts); - - const res = yield request(load) - - console.log("result: ", res) - - return res; - }; - - this.getUserAvatar = function () { - // TODO download avatar - }; } From 8bfad97f6c1e4a0cdfe58a59ca0bfc28dc2f64c8 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 11:32:09 +0200 Subject: [PATCH 05/15] base class to create emojipack from members --- lib/slack_public_api.js | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 lib/slack_public_api.js diff --git a/lib/slack_public_api.js b/lib/slack_public_api.js new file mode 100644 index 00000000..1d08425f --- /dev/null +++ b/lib/slack_public_api.js @@ -0,0 +1,35 @@ +const { WebClient } = require('@slack/client'); + +function slackPublicAPI(token) { + this.setToken(token); +} + +slackPublicAPI.prototype.setToken = function() { + this.token = token; + this.web = new WebClient(token); +}; + +slackPublicAPI.prototype.getUsers = function() { + this.web.users.list({ limit: 0 }) + .then((res) => { + console.log('Number of users: ', res.members.length); + console.log('Users: ', res.members); + }) + .catch(console.error); +}; + +slackPublicAPI.prototype.getUsernamesWithAvatar = function() { + const usersInfos = this.getUsers(); + var results = []; + + for userInfos in usersInfos { + const username = userInfos.name; + const image = userInfos.profile.image_24; + + if username && image { + results.append({username: username, image: image}); + } + } +}; + +module.exports = slackPublicAPI; \ No newline at end of file From 303e42fb99e9c6289ebb58a0e111768de33bb724 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 11:37:30 +0200 Subject: [PATCH 06/15] fixed loop --- lib/slack_public_api.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/slack_public_api.js b/lib/slack_public_api.js index 1d08425f..412aa0de 100644 --- a/lib/slack_public_api.js +++ b/lib/slack_public_api.js @@ -22,14 +22,17 @@ slackPublicAPI.prototype.getUsernamesWithAvatar = function() { const usersInfos = this.getUsers(); var results = []; - for userInfos in usersInfos { + results = usersInfos.map(function(userInfos) { const username = userInfos.name; const image = userInfos.profile.image_24; + var result; - if username && image { - results.append({username: username, image: image}); + if (username !== null && image !== null){ + result = {username: username, image: image}; } - } + + return result + }); }; module.exports = slackPublicAPI; \ No newline at end of file From d0374980c1bbd8dfdbfcee04dbb84b8ede281182 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 11:56:24 +0200 Subject: [PATCH 07/15] added to cli --- bin/emojipacks | 4 +++- lib/prompt.js | 13 ++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/bin/emojipacks b/bin/emojipacks index 84334185..6b353b9a 100755 --- a/bin/emojipacks +++ b/bin/emojipacks @@ -17,6 +17,8 @@ program .option('-e, --email [value]', 'Admin email address') .option('-p, --password [value]', 'Password for admin email') .option('-y, --pack [value]', 'YAML emoji pack') + .option('--member_avatars', 'Will create emoji from your team users avatars. This option will ask for a token if not specified with -t') + .option('-t, --token [value]', 'Slack Public API token') .parse(process.argv); /** @@ -24,7 +26,7 @@ program */ co(function *() { - var user = yield Prompt.start(program.subdomain, program.email, program.password, program.pack); + var user = yield Prompt.start(program.subdomain, program.email, program.password, program.pack, program.member_avatars, program.token); var pack = yield Pack.get(user.pack); pack = clean(pack); user.emojis = pack.emojis; diff --git a/lib/prompt.js b/lib/prompt.js index 35f6d6af..5d1c9d99 100644 --- a/lib/prompt.js +++ b/lib/prompt.js @@ -15,7 +15,7 @@ var chalk = require('chalk'); * Start. */ -exports.start = function* (subdomain, email, password, pack) { +exports.start = function* (subdomain, email, password, pack, memberAvatar, token) { var load, valid; if (!subdomain) { subdomain = yield ask('Slack subdomain: ', isSubdomain, 'Uh oh! The subdomain should be at least one letter!'); @@ -29,6 +29,9 @@ exports.start = function* (subdomain, email, password, pack) { if (!pack) { pack = yield ask('Path or URL of Emoji yaml file: ', isPath, 'Does the path to the yaml file look right? :)'); } + if (memberAvatar && !token) { + pack = yield ask('Slack API token:', isToken, 'Token seemed invalid. Try again? :'); + } load = { url: url(subdomain), email: email, @@ -77,3 +80,11 @@ function err(message) { function url(subdomain) { return 'https://' + subdomain + '.slack.com'; } + +/** + * is token + */ + +function isToken(path) { + return path.length > 5; // TODO check if user token "xoxp" +} From 1a96f6dff59699bc37ad934192bdc6ee6471096a Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 11:57:07 +0200 Subject: [PATCH 08/15] added dependency to slack/client --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 9f990fd3..1cf743e3 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "emojipacks": "./bin/emojipacks" }, "dependencies": { + "@slack/client": "^4.3.1", "chalk": "^1.1.0", "cheerio": "^0.19.0", "co": "^4.6.0", From ecc9d1fdecd99e2b39248e5be08ecb26446da3f2 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 7 Jul 2018 12:12:46 +0200 Subject: [PATCH 09/15] disable prompt for emojipack if option --member_avatar --- lib/prompt.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/prompt.js b/lib/prompt.js index 5d1c9d99..8de25fb2 100644 --- a/lib/prompt.js +++ b/lib/prompt.js @@ -26,7 +26,7 @@ exports.start = function* (subdomain, email, password, pack, memberAvatar, token if (!password) { password = yield ask('Password: ', isPassword, 'A password (as defined by this script) needs to have at least one character (not including you).'); } - if (!pack) { + if (!memberAvatar && !pack) { pack = yield ask('Path or URL of Emoji yaml file: ', isPath, 'Does the path to the yaml file look right? :)'); } if (memberAvatar && !token) { From 652beb23599bd5f19f3bcbe112f5e9792d901746 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Tue, 10 Jul 2018 09:43:32 +0200 Subject: [PATCH 10/15] WIP integrating Public API --- bin/emojipacks | 31 +++++++++++++++++++++++++------ lib/prompt.js | 7 ++++--- lib/slack_public_api.js | 19 ++++++++++++------- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/bin/emojipacks b/bin/emojipacks index 6b353b9a..309589d1 100755 --- a/bin/emojipacks +++ b/bin/emojipacks @@ -3,9 +3,11 @@ var program = require('commander'); var Prompt = require('../lib/prompt'); var Slack = require('../lib/slack'); +var SlackPublicAPI = require('../lib/slack_public_api'); var Pack = require('../lib/pack'); var co = require('co'); + /** * Usage. */ @@ -26,12 +28,29 @@ program */ co(function *() { - var user = yield Prompt.start(program.subdomain, program.email, program.password, program.pack, program.member_avatars, program.token); - var pack = yield Pack.get(user.pack); - pack = clean(pack); - user.emojis = pack.emojis; - var slack = new Slack(user, program.debug); - yield slack.import(); + const userArgs = yield Prompt.start(program.subdomain, program.email, program.password, program.pack, program.member_avatars, program.token); + const token = userArgs.token; + var user = userArgs.load; + + if (program.member_avatars !== true) { + var pack = yield Pack.get(user.pack); + var slack; + + pack = clean(pack); + user.emojis = pack.emojis; + slack = new Slack(user, program.debug); + console.log("Uploading pack: ", user.pack); + yield slack.import(); + } else { + console.log("Flag members\nToken: ", token) + const slackPublicAPI = new SlackPublicAPI(token); + console.log("# 2\n") + const emojipack = slackPublicAPI.getUsernamesWithAvatar(); + + console.log("Creating emojis: ", emojipack); + // slack.importFromJson(emojipack); // TODO to implement + } + process.exit(); }); diff --git a/lib/prompt.js b/lib/prompt.js index 8de25fb2..b57eb092 100644 --- a/lib/prompt.js +++ b/lib/prompt.js @@ -30,15 +30,16 @@ exports.start = function* (subdomain, email, password, pack, memberAvatar, token pack = yield ask('Path or URL of Emoji yaml file: ', isPath, 'Does the path to the yaml file look right? :)'); } if (memberAvatar && !token) { - pack = yield ask('Slack API token:', isToken, 'Token seemed invalid. Try again? :'); + token = yield ask('Slack API token:', isToken, 'Token seemed invalid. Try again? :'); } + load = { url: url(subdomain), email: email, password: password, pack: pack }; - return load; + return ({load:load, token: token}); } /** @@ -86,5 +87,5 @@ function url(subdomain) { */ function isToken(path) { - return path.length > 5; // TODO check if user token "xoxp" + return path.length > 20; // TODO check if user token "xox" } diff --git a/lib/slack_public_api.js b/lib/slack_public_api.js index 412aa0de..e5c799ba 100644 --- a/lib/slack_public_api.js +++ b/lib/slack_public_api.js @@ -1,25 +1,30 @@ const { WebClient } = require('@slack/client'); -function slackPublicAPI(token) { +function SlackPublicAPI(token) { + this.token = null + this.web = null + this.setToken(token); + console.log("Hello SlackPublicAPI") } -slackPublicAPI.prototype.setToken = function() { +SlackPublicAPI.prototype.setToken = function(token) { this.token = token; - this.web = new WebClient(token); + this.web = new WebClient(this.token); }; -slackPublicAPI.prototype.getUsers = function() { +SlackPublicAPI.prototype.getUsers = function() { this.web.users.list({ limit: 0 }) .then((res) => { console.log('Number of users: ', res.members.length); console.log('Users: ', res.members); }) - .catch(console.error); + .catch(console.error("Couldn't connect to the API")); }; -slackPublicAPI.prototype.getUsernamesWithAvatar = function() { +SlackPublicAPI.prototype.getUsernamesWithAvatar = function() { const usersInfos = this.getUsers(); + if (!usersInfos) { return; }; var results = []; results = usersInfos.map(function(userInfos) { @@ -35,4 +40,4 @@ slackPublicAPI.prototype.getUsernamesWithAvatar = function() { }); }; -module.exports = slackPublicAPI; \ No newline at end of file +module.exports = SlackPublicAPI; \ No newline at end of file From 13c7b794bf19b9f1cff7a1a2f0fad39e820b2fc6 Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Wed, 11 Jul 2018 01:03:14 +0200 Subject: [PATCH 11/15] removed dep to slack node implementation --- bin/emojipacks | 2 +- lib/slack_public_api.js | 29 ++++++++++++++++------------- package.json | 1 - 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/bin/emojipacks b/bin/emojipacks index 309589d1..5e4468a7 100755 --- a/bin/emojipacks +++ b/bin/emojipacks @@ -45,7 +45,7 @@ co(function *() { console.log("Flag members\nToken: ", token) const slackPublicAPI = new SlackPublicAPI(token); console.log("# 2\n") - const emojipack = slackPublicAPI.getUsernamesWithAvatar(); + const emojipack = yield slackPublicAPI.getUsernamesWithAvatar(); console.log("Creating emojis: ", emojipack); // slack.importFromJson(emojipack); // TODO to implement diff --git a/lib/slack_public_api.js b/lib/slack_public_api.js index e5c799ba..3903ba10 100644 --- a/lib/slack_public_api.js +++ b/lib/slack_public_api.js @@ -1,8 +1,9 @@ -const { WebClient } = require('@slack/client'); +var thunkify = require('thunkify-wrap'); +var request = thunkify(require('request')); + function SlackPublicAPI(token) { this.token = null - this.web = null this.setToken(token); console.log("Hello SlackPublicAPI") @@ -10,23 +11,25 @@ function SlackPublicAPI(token) { SlackPublicAPI.prototype.setToken = function(token) { this.token = token; - this.web = new WebClient(this.token); }; -SlackPublicAPI.prototype.getUsers = function() { - this.web.users.list({ limit: 0 }) - .then((res) => { - console.log('Number of users: ', res.members.length); - console.log('Users: ', res.members); - }) - .catch(console.error("Couldn't connect to the API")); +SlackPublicAPI.prototype.getUsers = function *() { + var opts = this.opts; + var load = { + url: "https://slack.com/api/users.list?token=" + this.token + "&pretty=1", + jar: { _jar: { store: { idx: {} } } }, + method: 'GET' + }; + var res = yield request(load); + console.log("-->", JSON.parse(res[0].body).members[0].name) + return res.members; }; -SlackPublicAPI.prototype.getUsernamesWithAvatar = function() { - const usersInfos = this.getUsers(); +SlackPublicAPI.prototype.getUsernamesWithAvatar = function*() { + const usersInfos = yield this.getUsers(); if (!usersInfos) { return; }; var results = []; - + console.log(typeof(userInfos)) results = usersInfos.map(function(userInfos) { const username = userInfos.name; const image = userInfos.profile.image_24; diff --git a/package.json b/package.json index 1cf743e3..9f990fd3 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "emojipacks": "./bin/emojipacks" }, "dependencies": { - "@slack/client": "^4.3.1", "chalk": "^1.1.0", "cheerio": "^0.19.0", "co": "^4.6.0", From a86b4de708f76091d77632ce371c896513b54a2b Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 14 Jul 2018 15:40:55 +0200 Subject: [PATCH 12/15] Fully fonctionnal --- bin/emojipacks | 20 +++++++++++++---- lib/slack_public_api.js | 50 +++++++++++++++++++++++++++++------------ 2 files changed, 52 insertions(+), 18 deletions(-) diff --git a/bin/emojipacks b/bin/emojipacks index 5e4468a7..c8dfcb31 100755 --- a/bin/emojipacks +++ b/bin/emojipacks @@ -42,13 +42,15 @@ co(function *() { console.log("Uploading pack: ", user.pack); yield slack.import(); } else { - console.log("Flag members\nToken: ", token) + var slack; const slackPublicAPI = new SlackPublicAPI(token); - console.log("# 2\n") const emojipack = yield slackPublicAPI.getUsernamesWithAvatar(); - console.log("Creating emojis: ", emojipack); - // slack.importFromJson(emojipack); // TODO to implement + memberEmojisDisclaimer() + user.emojis = emojipack + slack = new Slack(user, program.debug); + + yield slack.import(); } process.exit(); @@ -68,3 +70,13 @@ function clean(object) { } return object; } + +/** + * Standardize the emoji file. + */ + +function memberEmojisDisclaimer() { + console.log(`\n\nThis script doesn\'t override any existing emojis. \n\ +If you want to update your membermojis you have to remove manually the old ones and re-run the script. \n\ +Link: ${program.subdomain}.slack.com/customize/emoji \n\n`); +} \ No newline at end of file diff --git a/lib/slack_public_api.js b/lib/slack_public_api.js index 3903ba10..defe8fe5 100644 --- a/lib/slack_public_api.js +++ b/lib/slack_public_api.js @@ -1,12 +1,10 @@ var thunkify = require('thunkify-wrap'); var request = thunkify(require('request')); - function SlackPublicAPI(token) { this.token = null this.setToken(token); - console.log("Hello SlackPublicAPI") } SlackPublicAPI.prototype.setToken = function(token) { @@ -20,27 +18,51 @@ SlackPublicAPI.prototype.getUsers = function *() { jar: { _jar: { store: { idx: {} } } }, method: 'GET' }; - var res = yield request(load); - console.log("-->", JSON.parse(res[0].body).members[0].name) - return res.members; + const members = JSON.parse((yield request(load))[0].body).members; + + return members; }; SlackPublicAPI.prototype.getUsernamesWithAvatar = function*() { - const usersInfos = yield this.getUsers(); - if (!usersInfos) { return; }; + const members = yield this.getUsers(); + if (!members) { return; }; var results = []; - console.log(typeof(userInfos)) - results = usersInfos.map(function(userInfos) { - const username = userInfos.name; - const image = userInfos.profile.image_24; + + for (var i = 0; i < members.length; i++) { var result; + const member = members[i]; + const image = yield this.extractImage(member); + const username = this.extractUsername(member); if (username !== null && image !== null){ - result = {username: username, image: image}; + result = { + name: username, + src: image + }; } + results.push(result); + } - return result - }); + return results; }; +SlackPublicAPI.prototype.extractUsername = function(obj) { + return obj.name.replace(/[^\w ]/, ''); +} + +SlackPublicAPI.prototype.extractImage = function*(obj) { + const image_url = obj.profile.image_24 + const load = { + method: 'GET', + url: image_url + } + const res = yield request(load); + if (res[0].headers.link === undefined) { return image_url }; + const indexLinkBegin = res[0].headers.link.indexOf('<'); + const indexLinkEnd = res[0].headers.link.indexOf('>'); + const imageLocation = res[0].headers.link.slice(indexLinkBegin + 1, indexLinkEnd); + + return imageLocation; +} + module.exports = SlackPublicAPI; \ No newline at end of file From 539c8d13fe1c2d69792f90e1e19770d68b54581a Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sat, 14 Jul 2018 15:58:06 +0200 Subject: [PATCH 13/15] added membermojis to readme --- README.md | 21 +++++++++++++++++++++ bin/emojipacks | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0425eaed..c809fc09 100644 --- a/README.md +++ b/README.md @@ -166,6 +166,27 @@ emojis: Want to contribute? [Suggest an emoji pack](https://20p.typeform.com/to/xOFDyq)! + + +# Bonus + + ## Membermojis + +Have you ever wanted to react with emojis of your friends and coworkers? +Well here is ***Membermojis*** ! + +The membermojis option will create an emoji for all the users of your slack ! The emojis will simply be their profile picture. + +### Usage: + +```bash +emojipacks --member_avatars -s -e -p -t +``` + +You can find a `` for your workspace here: https://api.slack.com/custom-integrations/legacy-tokens + +And VoilĂ  ! + ## Troubleshooting This script will essentially log into your Slack and then submit a `POST` request on the emoji upload form page. If you are seeing errors, make sure that: diff --git a/bin/emojipacks b/bin/emojipacks index c8dfcb31..03c60eeb 100755 --- a/bin/emojipacks +++ b/bin/emojipacks @@ -76,7 +76,7 @@ function clean(object) { */ function memberEmojisDisclaimer() { - console.log(`\n\nThis script doesn\'t override any existing emojis. \n\ -If you want to update your membermojis you have to remove manually the old ones and re-run the script. \n\ + console.log(`\n\nThis script doesn\'t override any existing emojis\n\ +If you want to update your membermojis you have to remove manually the old ones and re-run the script\n\ Link: ${program.subdomain}.slack.com/customize/emoji \n\n`); } \ No newline at end of file From 68aa3fe2cbc0e9183487b144a51bcd4555ab53ad Mon Sep 17 00:00:00 2001 From: Robin Guignard-Perret Date: Sun, 15 Jul 2018 03:16:35 +0200 Subject: [PATCH 14/15] changed flag name to membermojis --- README.md | 2 +- bin/emojipacks | 14 +++++--------- lib/slack_public_api.js | 6 +++--- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index c809fc09..bb442802 100644 --- a/README.md +++ b/README.md @@ -180,7 +180,7 @@ The membermojis option will create an emoji for all the users of your slack ! Th ### Usage: ```bash -emojipacks --member_avatars -s -e -p -t +emojipacks --membermojis -s -e -p -t ``` You can find a `` for your workspace here: https://api.slack.com/custom-integrations/legacy-tokens diff --git a/bin/emojipacks b/bin/emojipacks index 03c60eeb..29b14119 100755 --- a/bin/emojipacks +++ b/bin/emojipacks @@ -19,7 +19,7 @@ program .option('-e, --email [value]', 'Admin email address') .option('-p, --password [value]', 'Password for admin email') .option('-y, --pack [value]', 'YAML emoji pack') - .option('--member_avatars', 'Will create emoji from your team users avatars. This option will ask for a token if not specified with -t') + .option('--membermojis', 'Will create emoji from your team users avatars. This option will ask for a token if not specified with -t') .option('-t, --token [value]', 'Slack Public API token') .parse(process.argv); @@ -28,30 +28,26 @@ program */ co(function *() { - const userArgs = yield Prompt.start(program.subdomain, program.email, program.password, program.pack, program.member_avatars, program.token); + const userArgs = yield Prompt.start(program.subdomain, program.email, program.password, program.pack, program.membermojis, program.token); const token = userArgs.token; var user = userArgs.load; + var slack; - if (program.member_avatars !== true) { + if (program.membermojis !== true) { var pack = yield Pack.get(user.pack); - var slack; pack = clean(pack); user.emojis = pack.emojis; slack = new Slack(user, program.debug); - console.log("Uploading pack: ", user.pack); - yield slack.import(); } else { - var slack; const slackPublicAPI = new SlackPublicAPI(token); const emojipack = yield slackPublicAPI.getUsernamesWithAvatar(); memberEmojisDisclaimer() user.emojis = emojipack slack = new Slack(user, program.debug); - - yield slack.import(); } + yield slack.import(); process.exit(); }); diff --git a/lib/slack_public_api.js b/lib/slack_public_api.js index defe8fe5..fcf7200d 100644 --- a/lib/slack_public_api.js +++ b/lib/slack_public_api.js @@ -51,13 +51,13 @@ SlackPublicAPI.prototype.extractUsername = function(obj) { } SlackPublicAPI.prototype.extractImage = function*(obj) { - const image_url = obj.profile.image_24 + const imageURL = obj.profile.image_24 const load = { method: 'GET', - url: image_url + url: imageURL } const res = yield request(load); - if (res[0].headers.link === undefined) { return image_url }; + if (res[0].headers.link === undefined) { return imageURL }; const indexLinkBegin = res[0].headers.link.indexOf('<'); const indexLinkEnd = res[0].headers.link.indexOf('>'); const imageLocation = res[0].headers.link.slice(indexLinkBegin + 1, indexLinkEnd); From 8c6890ca8cc36436204ef580823ee645114c1437 Mon Sep 17 00:00:00 2001 From: Robin Date: Mon, 16 Jul 2018 15:37:35 +0200 Subject: [PATCH 15/15] Added separator line in README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index bb442802..53c64307 100644 --- a/README.md +++ b/README.md @@ -187,6 +187,8 @@ You can find a `` for your workspace here: https://api.slack.co And VoilĂ  ! +--- + ## Troubleshooting This script will essentially log into your Slack and then submit a `POST` request on the emoji upload form page. If you are seeing errors, make sure that: