51 lines
1011 B
Ruby
51 lines
1011 B
Ruby
require "db/exceptions/invalid_record"
|
|
require "db/mongo/models/mongo_model"
|
|
require "json"
|
|
|
|
class Key < MongoModel
|
|
|
|
SYSTEM = "system"
|
|
USER = "user"
|
|
|
|
attr_accessor :id, :path, :scope
|
|
types :id => {:type => String, :empty => false},
|
|
:path => {:type => String, :empty => false},
|
|
:scope => {:type => String, :empty => false}
|
|
|
|
def initialize p={}
|
|
self.id = p["id"]
|
|
self.path = p["path"]
|
|
self.scope = p["scope"] || USER
|
|
end
|
|
|
|
def self.create_from_bson s
|
|
key = Key.new s
|
|
key.id = s["_id"]
|
|
key
|
|
end
|
|
|
|
def self.create_from_json json
|
|
Key.new( JSON.parse(json) )
|
|
end
|
|
|
|
def filename
|
|
File.basename(self.path)
|
|
end
|
|
|
|
def to_hash_without_id
|
|
o = {
|
|
"path" => self.path,
|
|
"scope" => self.scope
|
|
}
|
|
o
|
|
end
|
|
|
|
def validate!
|
|
super
|
|
raise InvalidRecord.new "File does not exist" unless File.exist?(self.path)
|
|
raise InvalidRecord.new "Key parameter 'scope' is invalid" unless [SYSTEM, USER].include?(self.scope)
|
|
true
|
|
end
|
|
|
|
end
|