Method: Medea::JasonBase.resolve
- Defined in:
- lib/medea/jason_base.rb
.resolve(key, mode = :lazy) ⇒ Object
the resolve method takes a key and returns the JasonObject that has that key This is useful when you have the key, but not the class
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/medea/jason_base.rb', line 13 def self.resolve(key, mode=:lazy) q = JasonDeferredQuery.new :filters => {:VERSION0 => nil, :FILTER => {:HTTP_X_KEY => key, :HTTP_X_ACTION => :POST}} q.filters[:FILTER] ||= {} q.filters[:FILTER][:HTTP_X_KEY] = key resp = JSON.parse(RestClient.get(q.to_url)) if resp.has_key? "1" #this is the object, figure out its class resp["1"]["POST_TO"] =~ /([^\/]+)\/#{key}/ begin result = Kernel.const_get($1).get_by_key key, :lazy if result["1"].has_key? "CONTENT" result.instance_variable_set(:@__jason_data, result["1"]["CONTENT"]) result.instance_variable_set(:@__jason_state, :stale) end if mode == :eager result.send(:load) end rescue nil end end end |