Sha256: ac54e5f69c50f5ccaed73fc5f2b1ff48900b0220682248d40a1fceac407990ec

Contents?: true

Size: 1.17 KB

Versions: 20

Compression:

Stored size: 1.17 KB

Contents

module Doorkeeper
  module OAuth
    class Scopes
      include Enumerable
      include Comparable

      def self.from_string(string)
        string ||= ''
        new.tap do |scope|
          scope.add(*string.split)
        end
      end

      def self.from_array(array)
        new.tap do |scope|
          scope.add(*array)
        end
      end

      delegate :each, :empty?, to: :@scopes

      def initialize
        @scopes = []
      end

      def exists?(scope)
        @scopes.include? scope.to_s
      end

      def add(*scopes)
        @scopes.push(*scopes.map(&:to_s))
        @scopes.uniq!
      end

      def all
        @scopes
      end

      def to_s
        @scopes.join(' ')
      end

      def has_scopes?(scopes)
        scopes.all? { |s| exists?(s) }
      end

      def +(other)
        if other.is_a? Scopes
          self.class.from_array(self.all + other.all)
        else
          super(other)
        end
      end

      def <=>(other)
        self.map(&:to_s).sort <=> other.map(&:to_s).sort
      end

      def &(other)
        other_array = other.present? ? other.all : []
        self.class.from_array(all & other_array)
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
doorkeeper-4.0.0.rc3 lib/doorkeeper/oauth/scopes.rb
doorkeeper-4.0.0.rc2 lib/doorkeeper/oauth/scopes.rb
doorkeeper-4.0.0.rc1 lib/doorkeeper/oauth/scopes.rb
doorkeeper-3.1.0 lib/doorkeeper/oauth/scopes.rb
doorkeeper-3.0.1 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.2.2 lib/doorkeeper/oauth/scopes.rb
doorkeeper-3.0.0 lib/doorkeeper/oauth/scopes.rb
doorkeeper-3.0.0.rc2 lib/doorkeeper/oauth/scopes.rb
doorkeeper-3.0.0.rc1 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.2.1 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.2.0 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.1.4 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.1.3 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.1.2 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.1.1 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.1.0 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.0.1 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.0.0 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.0.0.rc3 lib/doorkeeper/oauth/scopes.rb
doorkeeper-2.0.0.rc2 lib/doorkeeper/oauth/scopes.rb