From 7316898b362d05b8694b8d0e08a34928f6de0bdb Mon Sep 17 00:00:00 2001 From: Erandi Ganepola Date: Sun, 26 Mar 2017 21:03:53 +0530 Subject: [PATCH] #6 - Added features for get_auth_backends, dev_get_emails and dev_fetch_api_key --- examples/accounts.js | 7 +++++++ examples/auth.js | 14 ++++++++++++++ examples/emails.js | 11 +++++++++++ examples/users.js | 6 ++++++ src/index.js | 4 ++++ src/resources/accounts.js | 11 +++++++++++ src/resources/auth.js | 35 +++++++++++++++++++++++++++++++++++ src/resources/emails.js | 15 +++++++++++++++ src/resources/messages.js | 7 +++++++ src/resources/users.js | 6 ++++++ 10 files changed, 116 insertions(+) create mode 100644 examples/auth.js create mode 100644 examples/emails.js create mode 100644 src/resources/auth.js create mode 100644 src/resources/emails.js diff --git a/examples/accounts.js b/examples/accounts.js index b47ac59..8464105 100644 --- a/examples/accounts.js +++ b/examples/accounts.js @@ -6,3 +6,10 @@ zulip({ realm: process.env.ZULIP_REALM, }).then(z => z.accounts.retrieve()) .then(console.log); + +zulip({ + username: process.env.ZULIP_USERNAME, + password: process.env.ZULIP_PASSWORD, + realm: process.env.ZULIP_REALM, +}).then(z => z.accounts.dev.retrieve()) + .then(console.log); diff --git a/examples/auth.js b/examples/auth.js new file mode 100644 index 0000000..0f4aba3 --- /dev/null +++ b/examples/auth.js @@ -0,0 +1,14 @@ +const zulip = require('../lib/'); + +const config = { + username: process.env.ZULIP_USERNAME, + password: process.env.ZULIP_PASSWORD, + realm: process.env.ZULIP_REALM, +}; + +zulip(config) + .then((z) => { + // [ 'password', 'dev' ] + z.auth.backends.retrieve().then(console.log); + }) + .catch(err => console.log(err.msg)); diff --git a/examples/emails.js b/examples/emails.js new file mode 100644 index 0000000..b6e85a5 --- /dev/null +++ b/examples/emails.js @@ -0,0 +1,11 @@ +const zulip = require('../lib/'); + +const config = { + username: process.env.ZULIP_USERNAME, + password: process.env.ZULIP_PASSWORD, + realm: process.env.ZULIP_REALM, +}; + +zulip(config).then((z) => { + z.emails.dev.retrieve().then(console.log); +}).catch(err => console.log(err.msg)); diff --git a/examples/users.js b/examples/users.js index b6efd80..5906135 100644 --- a/examples/users.js +++ b/examples/users.js @@ -25,5 +25,11 @@ zulip(config) // Prints // { msg: '', pointer: 3432741029383298, result: 'success' } z.users.me.pointer.retrieve().then(console.log); + + const presenceParams = { + status: 'active', + new_user_input: true, + }; + z.users.me.presence.retrieve(presenceParams).then(console.log).catch(console.log); }) .catch(err => console.log(err.msg)); diff --git a/src/index.js b/src/index.js index 6836dd9..d4ffab2 100644 --- a/src/index.js +++ b/src/index.js @@ -8,6 +8,8 @@ const events = require('./resources/events'); const users = require('./resources/users'); const emojis = require('./resources/emojis'); const typing = require('./resources/typing'); +const auth = require('./resources/auth'); +const emails = require('./resources/emails'); function resources(config) { return { @@ -20,6 +22,8 @@ function resources(config) { users: users(config), emojis: emojis(config), typing: typing(config), + auth: auth(config), + emails: emails(config), }; } diff --git a/src/resources/accounts.js b/src/resources/accounts.js index bc8f0d7..3fd8110 100644 --- a/src/resources/accounts.js +++ b/src/resources/accounts.js @@ -14,6 +14,17 @@ function accounts(config) { body: form, }).then(res => res.json()); }, + dev: { + retrieve: () => { + const url = `${config.apiURL}/dev_fetch_api_key`; + const form = new FormData(); + form.append('username', config.username); + return fetch(url, { + method: 'POST', + body: form, + }).then(res => res.json()); + }, + }, }; } diff --git a/src/resources/auth.js b/src/resources/auth.js new file mode 100644 index 0000000..3b5071a --- /dev/null +++ b/src/resources/auth.js @@ -0,0 +1,35 @@ +const api = require('../api'); + +function auth(config) { + return { + backends: { + /** + * Retrieves the auth backends available. Returns a promise which in turns will return an + * array of available backend names + * @param params + * @returns {*} + */ + retrieve: (params) => { + const url = `${config.apiURL}/get_auth_backends`; + + return api(url, config, 'GET', params).then((res) => { + const backends = []; + + if (res.result === 'success') { + if (res.password) backends.push('password'); + if (res.google) backends.push('google'); + if (res.dev) backends.push('dev'); + } + + if (!backends) { + throw new Error('No backends available.'); + } + + return backends; + }); + }, + }, + }; +} + +module.exports = auth; diff --git a/src/resources/emails.js b/src/resources/emails.js new file mode 100644 index 0000000..3064648 --- /dev/null +++ b/src/resources/emails.js @@ -0,0 +1,15 @@ +const api = require('../api'); + +function emails(config) { + return { + dev: { + retrieve: (params) => { + const url = `${config.apiURL}/dev_get_emails`; + + return api(url, config, 'GET', params); + }, + }, + }; +} + +module.exports = emails; diff --git a/src/resources/messages.js b/src/resources/messages.js index 5078eee..7243a9a 100644 --- a/src/resources/messages.js +++ b/src/resources/messages.js @@ -14,6 +14,13 @@ function messages(config) { const url = `${config.apiURL}/messages`; return api(url, config, 'POST', params); }, + // TODO : Improve and finalize + flags: { + retrieve: (params) => { + const url = `${config.apiURL}/messages/flags`; + return api(url, config, 'POST', params); + }, + }, }; } diff --git a/src/resources/users.js b/src/resources/users.js index a429525..8c370aa 100644 --- a/src/resources/users.js +++ b/src/resources/users.js @@ -13,6 +13,12 @@ function users(config) { return api(url, config, 'GET', params); }, }, + presence: { + retrieve: (params) => { + const url = `${config.apiURL}/users/me/presence`; + return api(url, config, 'POST', params); + }, + }, }, }; }