Logs in to plug.dj.
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
src
test
.babelrc
.gitignore
.npmignore
.npmrc
.travis.yml
CHANGELOG.md
LICENSE
README.md
package.json
rollup.config.js

README.md

plug-login

Logs into plug.dj using a email address and password.

Travis NPM

Usage

const plugLogin = require('plug-login')

plugLogin('my-plug-email@example.com', 'hunter2')
  .then(rejoice)
  .catch(() => {
    // Login failed
  })

API

plugLogin(email, password, opts={})

plugLogin.user(email, password, opts={})

Logs in to plug.dj using the given email address and password. You can optionally pass options in the third parameter.

Pass { authToken: true } in the options opts to also generate a WebSocket authentication token. (See below.) Other properties are passed through to node-fetch.

Returns a promise. The promise resolves with an object with the properties, { body, session, cookie, token }, where body is plug.dj's login response, session is the session token, cookie is a cookie string with the session token filled in, and token is the auth token (if you asked for one). You can then use the cookie string for Cookie: headers in subsequent requests so plug.dj will recognise you, and you can use the auth token to set up a connection to the plug.dj WebSocket server.

Using the cookie string with the node-fetch library:

const fetch = require('node-fetch')
async function main () {
  const result = await plugLogin('fetch@example.com', 'fetch-is-small-and-good')
  const response = await fetch('https://plug.dj/_/users/me', {
    headers: { cookie: result.cookie }
  })
  const body = await response.json()
  console.log('logged in as', body.data[0])
})

Using the cookie string with the request library:

const request = require('request')
let jar = request.jar()
plugLogin('admin@plug.dj', 'hunter3').then((result) => {
  // Store it in a jar for the correct domain.
  jar.setCookie(result.cookie, 'https://plug.dj/')
  request('https://plug.dj/_/users/me', { jar: jar, json: true }, (err, response) => {
    console.log('logged in as', response.body.data[0])
  })
})

plugLogin(opts={})

plugLogin.guest(opts={})

Gets a plug.dj session cookie and, optionally, WebSocket authentication token as a guest user.

opts takes the same options as user-style plugLogin().

Returns a promise that resolves with an object with the properties, { session, cookie, token }. See plugLogin.user for what those properties mean.

// "logging in" as a guest
plugLogin.guest({ authToken: true }).then((result) => {
  // result.token contains an authentication token for the plug.dj WebSocket.
  require('plug-socket')(result.token)
})

License

MIT