How to use actionhero - 10 common examples

To help you get started, we’ve selected a few actionhero examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github actionhero / actionhero-tutorial / initializers / blog.js View on Github external
await redis.del(commentKey)
    }

    api.blog.commentAdd = async (userName, title, commenterName, comment) => {
      const key = api.blog.buildCommentKey(userName, title)
      const commentId = api.blog.buildCommentId(commenterName)
      const data = {
        comment,
        commenterName,
        createdAt: new Date().getTime(),
        commentId: commentId
      }
      await redis.hset(key, commentId, JSON.stringify(data))
    }

    api.blog.commentsView = async (userName, title) => {
      const key = api.blog.buildCommentKey(userName, title)
      const data = await redis.hgetall(key)
      const comments = Object.keys(data).map((key) => {
        const comment = data[key]
        return JSON.parse(comment)
      })
      return comments
    }

    api.blog.commentDelete = async (userName, title, commentId) => {
      const key = api.blog.buildCommentKey(userName, title)
      await redis.hdel(key, commentId)
    }

    api.blog.buildTitleKey = (userName, title) => {
      // "posts:evan:my first post"
github actionhero / actionhero-tutorial / initializers / blog.js View on Github external
api.blog.commentDelete = async (userName, title, commentId) => {
      const key = api.blog.buildCommentKey(userName, title)
      await redis.hdel(key, commentId)
    }

    api.blog.buildTitleKey = (userName, title) => {
      // "posts:evan:my first post"
      return api.blog.postPrefix + api.blog.separator + userName + api.blog.separator + title
    }

    api.blog.buildCommentKey = (userName, title) => {
      // "comments:evan:my first post"
      return api.blog.commentPrefix + api.blog.separator + userName + api.blog.separator + title
    }

    api.blog.buildCommentId = (commenterName) => {
      return commenterName + new Date().getTime()
    }
  }
github actionhero / actionhero-tutorial / initializers / blog.js View on Github external
return JSON.parse(comment)
      })
      return comments
    }

    api.blog.commentDelete = async (userName, title, commentId) => {
      const key = api.blog.buildCommentKey(userName, title)
      await redis.hdel(key, commentId)
    }

    api.blog.buildTitleKey = (userName, title) => {
      // "posts:evan:my first post"
      return api.blog.postPrefix + api.blog.separator + userName + api.blog.separator + title
    }

    api.blog.buildCommentKey = (userName, title) => {
      // "comments:evan:my first post"
      return api.blog.commentPrefix + api.blog.separator + userName + api.blog.separator + title
    }

    api.blog.buildCommentId = (commenterName) => {
      return commenterName + new Date().getTime()
    }
  }
github actionhero / actionhero-tutorial / initializers / blog.js View on Github external
api.blog.buildTitleKey = (userName, title) => {
      // "posts:evan:my first post"
      return api.blog.postPrefix + api.blog.separator + userName + api.blog.separator + title
    }
github actionhero / actionhero-angular-bootstrap-cors-csrf / actions / status.js View on Github external
'use strict'

const ActionHero = require('actionhero')
const path = require('path')
const packageJSON = require(path.normalize(path.join(__dirname, '..', 'package.json')))

// These values are probably good starting points, but you should expect to tweak them for your application
const maxEventLoopDelay = process.env.eventLoopDelay || 10
const maxMemoryAlloted = process.env.maxMemoryAlloted || 200
const maxResqueQueueLength = process.env.maxResqueQueueLength || 1000

module.exports = class RandomNumber extends ActionHero.Action {
  constructor () {
    super()
    this.name = 'status'
    this.description = 'I will return some basic information about the API'
    this.outputExample = {
      id: '192.168.2.11',
      actionheroVersion: '9.4.1',
      uptime: 10469
    }
  }

  async checkRam (data) {
    const consumedMemoryMB = Math.round(process.memoryUsage().heapUsed / 1024 / 1024 * 100) / 100
    data.response.consumedMemoryMB = consumedMemoryMB
    if (consumedMemoryMB > maxMemoryAlloted) {
      data.response.nodeStatus = data.connection.localize('Unhealthy')
github actionhero / actionhero-tutorial / actions / status.js View on Github external
'use strict'

const ActionHero = require('actionhero')
const path = require('path')
const packageJSON = require(path.normalize(path.join(__dirname, '..', 'package.json')))

// These values are probably good starting points, but you should expect to tweak them for your application
const maxEventLoopDelay = process.env.eventLoopDelay || 10
const maxMemoryAlloted = process.env.maxMemoryAlloted || 500
const maxResqueQueueLength = process.env.maxResqueQueueLength || 1000

module.exports = class RandomNumber extends ActionHero.Action {
  constructor () {
    super()
    this.name = 'status'
    this.description = 'I will return some basic information about the API'
    this.outputExample = {
      id: '192.168.2.11',
      actionheroVersion: '9.4.1',
      uptime: 10469
    }
  }

  async checkRam (data) {
    const consumedMemoryMB = Math.round(process.memoryUsage().heapUsed / 1024 / 1024 * 100) / 100
    data.response.consumedMemoryMB = consumedMemoryMB
    if (consumedMemoryMB > maxMemoryAlloted) {
      data.response.nodeStatus = data.connection.localize('Unhealthy')
github actionhero / ah-resque-ui / initializers / ah-resque-ui.js View on Github external
api.routes.registerRoute('post', '/resque/delDelayed', 'resque:delDelayed')
    api.routes.registerRoute('post', '/resque/runDelayed', 'resque:runDelayed')
    api.routes.registerRoute('post', '/resque/delLock', 'resque:delLock')

    /* ----- Proxy Middleware ----- */

    const middleware = {
      'ah-resque-ui-proxy-middleware': {
        name: 'ah-resque-ui-proxy-middleware',
        global: false,
        preProcessor: () => { },
        postProcessor: () => { }
      }
    }

    if (api.config['ah-resque-ui'].middleware && api.config['ah-resque-ui'].middleware.length > 0) {
      middleware['ah-resque-ui-proxy-middleware'].preProcessor = async (data) => {
        for (const i in api.config['ah-resque-ui'].middleware) {
          const middlewareName = api.config['ah-resque-ui'].middleware[i]
          const middleware = api.actions.middleware[middlewareName]
          if (typeof middleware.preProcessor === 'function') {
            await middleware.preProcessor(data)
          }
        }
      }

      middleware['ah-resque-ui-proxy-middleware'].postProcessor = async (data) => {
        for (const i in api.config['ah-resque-ui'].middleware) {
          const middlewareName = api.config['ah-resque-ui'].middleware[i]
          const middleware = api.actions.middleware[middlewareName]
          if (typeof middleware.postProcessor === 'function') {
            await middleware.postProcessor(data)
github actionhero / actionhero-angular-bootstrap-cors-csrf / initializers / session.js View on Github external
async initialize () {
    const redis = api.redis.clients.client

    api.session = {
      prefix: 'session:',
      ttl: 60 * 60 * 24, // 1 day

      load: async (connection) => {
        const key = api.session.prefix + connection.fingerprint

        const data = await redis.get(key)
        if (!data) { return false }
        return JSON.parse(data)
      },

      create: async (connection, user) => {
        const key = api.session.prefix + connection.fingerprint
        const randomBuffer = await util.promisify(crypto.randomBytes)(64)
github actionhero / ah-resque-ui / initializers / ah-resque-ui.js View on Github external
async initialize () {
    /* ----- Route Injection ----- */

    api.routes.registerRoute('get', '/resque/packageDetails', 'resque:packageDetails')
    api.routes.registerRoute('get', '/resque/redisInfo', 'resque:redisInfo')
    api.routes.registerRoute('get', '/resque/resqueDetails', 'resque:resqueDetails')
    api.routes.registerRoute('get', '/resque/queued', 'resque:queued')
    api.routes.registerRoute('get', '/resque/loadWorkerQueues', 'resque:loadWorkerQueues')
    api.routes.registerRoute('get', '/resque/resqueFailedCount', 'resque:resqueFailedCount')
    api.routes.registerRoute('get', '/resque/resqueFailed', 'resque:resqueFailed')
    api.routes.registerRoute('get', '/resque/delayedjobs', 'resque:delayedjobs')
    api.routes.registerRoute('get', '/resque/locks', 'resque:locks')

    api.routes.registerRoute('post', '/resque/removeFailed', 'resque:removeFailed')
    api.routes.registerRoute('post', '/resque/retryAndRemoveFailed', 'resque:retryAndRemoveFailed')
    api.routes.registerRoute('post', '/resque/removeAllFailed', 'resque:removeAllFailed')
    api.routes.registerRoute('post', '/resque/retryAndRemoveAllFailed', 'resque:retryAndRemoveAllFailed')
    api.routes.registerRoute('post', '/resque/forceCleanWorker', 'resque:forceCleanWorker')
    api.routes.registerRoute('post', '/resque/delQueue', 'resque:delQueue')
    api.routes.registerRoute('post', '/resque/delDelayed', 'resque:delDelayed')
github actionhero / ah-resque-ui / initializers / ah-resque-ui.js View on Github external
api.routes.registerRoute('get', '/resque/resqueDetails', 'resque:resqueDetails')
    api.routes.registerRoute('get', '/resque/queued', 'resque:queued')
    api.routes.registerRoute('get', '/resque/loadWorkerQueues', 'resque:loadWorkerQueues')
    api.routes.registerRoute('get', '/resque/resqueFailedCount', 'resque:resqueFailedCount')
    api.routes.registerRoute('get', '/resque/resqueFailed', 'resque:resqueFailed')
    api.routes.registerRoute('get', '/resque/delayedjobs', 'resque:delayedjobs')
    api.routes.registerRoute('get', '/resque/locks', 'resque:locks')

    api.routes.registerRoute('post', '/resque/removeFailed', 'resque:removeFailed')
    api.routes.registerRoute('post', '/resque/retryAndRemoveFailed', 'resque:retryAndRemoveFailed')
    api.routes.registerRoute('post', '/resque/removeAllFailed', 'resque:removeAllFailed')
    api.routes.registerRoute('post', '/resque/retryAndRemoveAllFailed', 'resque:retryAndRemoveAllFailed')
    api.routes.registerRoute('post', '/resque/forceCleanWorker', 'resque:forceCleanWorker')
    api.routes.registerRoute('post', '/resque/delQueue', 'resque:delQueue')
    api.routes.registerRoute('post', '/resque/delDelayed', 'resque:delDelayed')
    api.routes.registerRoute('post', '/resque/runDelayed', 'resque:runDelayed')
    api.routes.registerRoute('post', '/resque/delLock', 'resque:delLock')

    /* ----- Proxy Middleware ----- */

    const middleware = {
      'ah-resque-ui-proxy-middleware': {
        name: 'ah-resque-ui-proxy-middleware',
        global: false,
        preProcessor: () => { },
        postProcessor: () => { }
      }
    }

    if (api.config['ah-resque-ui'].middleware && api.config['ah-resque-ui'].middleware.length > 0) {
      middleware['ah-resque-ui-proxy-middleware'].preProcessor = async (data) => {
        for (const i in api.config['ah-resque-ui'].middleware) {