Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# frozen_string_literal: true

module ActionSprout::Facebook
  module Services
    class GetPageData
      PAGE_FIELDS = 'name,category,description,about,fan_count,picture.type(square){url}'

      method_object :facebook_page_id, :api

      def call
        check_args
        page
      end

      private

      def check_args
        raise ArgumentError.new('"facebook_page_id" must be present') unless facebook_page_id.present?
        raise ArgumentError.new('"api" must be present') unless api.present?
      end

      def page
        page_data.except("id", "picture").merge({
          "facebook_page_id" => page_data["id"],
          "picture_url" => picture_url,
        })
      end

      def picture_url
        page_data.dig('picture', 'data', 'url')
      end

      def page_data
        @_page_data ||= Page.new(facebook_page_id, api: api, fields: PAGE_FIELDS).data
      end

    end
  end
end