Sha256: 865b7b8e816de7eaf765635b258eb8eb3dec9b6dec679673e98471674e01c83b

Contents?: true

Size: 843 Bytes

Versions: 9

Compression:

Stored size: 843 Bytes

Contents

module Duracloud
  class SpaceAcls < Properties

    READ  = "READ".freeze
    WRITE = "WRITE".freeze

    ACL_PREFIX = (PREFIX + "acl-").freeze

    attr_reader :space

    def initialize(space)
      @space = space
      if space.persisted?
        response = Client.get_space_acls(space.space_id, **query)
        super(response.headers)
      else
        super()
      end
    end

    def query
      { storeID: space.store_id }
    end

    def show
      each_with_object({}) do |(k, v), memo|
        memo[k.sub(ACL_PREFIX, "")] = v
      end
    end

    def grant(perm, to)
      prop = ACL_PREFIX + to
      self[prop] = perm
    end

    def grant_write(to)
      grant WRITE, to
    end

    def grant_read(to)
      grant READ, to
    end

    def revoke(from)
      prop = ACL_PREFIX + from
      delete prop
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
duracloud-client-0.10.2 lib/duracloud/space_acls.rb
duracloud-client-0.10.1 lib/duracloud/space_acls.rb
duracloud-client-0.10.0 lib/duracloud/space_acls.rb
duracloud-client-0.9.1 lib/duracloud/space_acls.rb
duracloud-client-0.9.0 lib/duracloud/space_acls.rb
duracloud-client-0.8.0 lib/duracloud/space_acls.rb
duracloud-client-0.7.2 lib/duracloud/space_acls.rb
duracloud-client-0.7.1 lib/duracloud/space_acls.rb
duracloud-client-0.7.0 lib/duracloud/space_acls.rb