RobDWaller/fableau

View on GitHub
src/js/service/facebook/helper/page-loop.js

Summary

Maintainability
C
1 day
Test Coverage
'use strict'

/**
 * Provides facade for looping through Facebook API requests
 *
 * @author Rob Waller <rdwaller1984@googlemail.com>
 */
class FacebookPageLoop {
  /**
   * @param Object facebookRequests
   */
  constructor (facebookRequests) {
    this.facebookRequests = facebookRequests

    this.data = []
  }

  /**
   * Get page data from Facebook
   *
   * @param array pageIds
   * @return Promise
   */
  getPages (pageIds) {
    let data = []

    return Promise.all(pageIds.map((page) => {
      return this.facebookRequests.getPage(page).then((result) => {
        data.push(result)
      })
    })).then(() => {
      return data
    })
  }

  /**
   * Get Facebook page metric data
   *
   * @param array pageIds
   * @return Promise
   */
  getPageMetrics (pageIds) {
    let data = []

    return Promise.all(pageIds.map((page) => {
      return this.facebookRequests.getPageMetrics(page).then((result) => {
        data.push(result)
      })
    })).then(() => {
      return data
    })
  }

  /**
   * Get Facebook posts data, posts made to pages
   *
   * @param array pageIds
   * @return Promise
   */
  getPosts (pageIds) {
    let data = []

    return Promise.all(pageIds.map((page) => {
      return this.facebookRequests.getPosts(page).then((result) => {
        data.push(result)
      })
    })).then(() => {
      return data
    })
  }

  /**
   * Get Facebook posts metric data
   *
   * @param array pageIds
   * @return Promise
   */
  getPostMetrics (pageIds) {
    let data = []

    return Promise.all(pageIds.map((page) => {
      return this.facebookRequests.getPostMetrics(page).then((result) => {
        data.push(result)
      })
    })).then(() => {
      return data
    })
  }
}

export default FacebookPageLoop