Sha256: daaa01b34ff56c70e99b211b244ed5d4f7e0616e94bc5b4ba402ecd2a6b30722

Contents?: true

Size: 1.66 KB

Versions: 65

Compression:

Stored size: 1.66 KB

Contents

module FbGraph
  module Connections
    module Settings
      AVAILABLE_SETTINGS = [
        :users_can_post,
        :users_can_post_photos,
        :users_can_tag_photos,
        :users_can_post_videos
      ]

      def self.included(klass)
        AVAILABLE_SETTINGS.each do |setting|
          klass.class_eval <<-SETTING
            def #{setting}?(options = {})
              settings(options).include? :#{setting}
            end

            def #{setting}!(options = {})
              enable! :#{setting}, options
            end

            def #{setting.to_s.sub('can', 'cannot')}!(options = {})
              disable! :#{setting}, options
            end
          SETTING
        end
      end

      def settings(options = {})
        @settings = nil if options[:no_cache]
        @settings ||= self.connection(:settings, options).inject([]) do |_settings_, _setting_|
          _settings_ << _setting_[:setting].downcase.to_sym if _setting_[:value]
          _settings_
        end
      end

      def enable!(setting, options = {})
        __update_setting__ setting, true, options
      end

      def disable!(setting, options = {})
        __update_setting__ setting, false, options
      end

      private

      def __update_setting__(setting, value, options = {})
        succeeded = post options.merge(
          :setting => setting.to_s.upcase,
          :value => value,
          :connection => :settings
        )
        if succeeded
          @settings ||= []
          if value
            @settings << setting.to_sym
          else
            @settings.delete_if { |key| key == setting.to_sym }
          end
        end
        succeeded
      end
    end
  end
end

Version data entries

65 entries across 65 versions & 1 rubygems

Version Path
fb_graph-2.7.17 lib/fb_graph/connections/settings.rb
fb_graph-2.7.16 lib/fb_graph/connections/settings.rb
fb_graph-2.7.15 lib/fb_graph/connections/settings.rb
fb_graph-2.7.14 lib/fb_graph/connections/settings.rb
fb_graph-2.7.13 lib/fb_graph/connections/settings.rb
fb_graph-2.7.12 lib/fb_graph/connections/settings.rb
fb_graph-2.7.11 lib/fb_graph/connections/settings.rb
fb_graph-2.7.10 lib/fb_graph/connections/settings.rb
fb_graph-2.7.9 lib/fb_graph/connections/settings.rb
fb_graph-2.7.8 lib/fb_graph/connections/settings.rb
fb_graph-2.7.7 lib/fb_graph/connections/settings.rb
fb_graph-2.7.6 lib/fb_graph/connections/settings.rb
fb_graph-2.7.5 lib/fb_graph/connections/settings.rb
fb_graph-2.7.4 lib/fb_graph/connections/settings.rb
fb_graph-2.7.3 lib/fb_graph/connections/settings.rb
fb_graph-2.7.2 lib/fb_graph/connections/settings.rb
fb_graph-2.7.1 lib/fb_graph/connections/settings.rb
fb_graph-2.7.0 lib/fb_graph/connections/settings.rb
fb_graph-2.6.7 lib/fb_graph/connections/settings.rb
fb_graph-2.6.6 lib/fb_graph/connections/settings.rb