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
 | 
