Sha256: 67ec7af02b5a047badfd196f47ca768daf06e252e3996b3e6c017d752b8ec0fb

Contents?: true

Size: 1.76 KB

Versions: 5

Compression:

Stored size: 1.76 KB

Contents

module Ecoportal
  module API
    class Internal
      class Account < Common::BaseModel
        passthrough :policy_group_ids, :landing_page_id, :permissions_preset, :permissions_custom, :preferences, :prefilter, :filter_tags, :login_provider_ids, :starred_ids, :accept_eula, :send_invites, :default_tag, to: :doc

        VALID_TAG_REGEX = /^[A-Za-z0-9 &_'\/-]+$/

        def preset=(value)
          self.permissions_preset = value == "custom" ? nil : value
        end

        def filter_tags=(value)
          unless value.is_a?(Array)
            raise "filter_tags= needs to be passed an Array, got #{value.class}"
          end
          doc["filter_tags"] = value.map do |tag|
            unless tag.match(VALID_TAG_REGEX)
              raise "Invalid filter tag #{tag.inspect}"
            end
            tag.upcase
          end
        end

        def preset
          self.permissions_preset.nil? ? "custom" : self.permissions_preset
        end

        def as_json
          super.tap do |hash|
            if preset == "custom"
              hash["permissions_custom"] = permissions.as_json
            else
              hash.delete "permissions_custom"
            end
            hash["preferences"] = preferences.as_json
          end
        end

        def permissions
          return @permissions if defined?(@permissions)
          doc["permissions_custom"] ||= {}
          @permissions = Internal::Permissions.new(doc["permissions_custom"])
        end

        def preferences
          return @preferences if defined?(@preferences)
          doc["preferences"] ||= {}
          @preferences = Internal::Preferences.new(doc["preferences"])
        end
      end
    end
  end
end
require 'ecoportal/api/internal/permissions'
require 'ecoportal/api/internal/preferences'

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ecoportal-api-0.3.8 lib/ecoportal/api/internal/account.rb
ecoportal-api-0.3.6 lib/ecoportal/api/internal/account.rb
ecoportal-api-0.3.5 lib/ecoportal/api/internal/account.rb
ecoportal-api-0.3.4 lib/ecoportal/api/internal/account.rb
ecoportal-api-0.3.3 lib/ecoportal/api/internal/account.rb