module CMIS::Helpers
Public Instance Methods
cmis_properties(properties)
click to toggle source
# File lib/cmis/helpers.rb, line 7 def cmis_properties(properties) properties.each do |property_name| method_name = method_name(property_name) self.class.class_eval "def #{method_name};@properties['#{property_name}'];end" self.class.class_eval "def #{method_name}=(value);@properties['#{property_name}']=value;end" end rescue Exception => e raise "Unable to generate accessors for properties: #{properties}" end
initialize_properties(raw)
click to toggle source
# File lib/cmis/helpers.rb, line 3 def initialize_properties(raw) @properties = get_properties_map(raw) end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/cmis/helpers.rb, line 36 def method_missing(name, *args, &block) if @properties.has_key?(name.to_s) @properties[name.to_s] else super end end
respond_to?(name, include_private = false)
click to toggle source
Calls superclass method
# File lib/cmis/helpers.rb, line 28 def respond_to?(name, include_private = false) if @properties.has_key?(name.to_s) true else super end end
with_change_token() { || ... }
click to toggle source
# File lib/cmis/helpers.rb, line 17 def with_change_token(&block) json = yield if props = json['properties'] self.change_token = props['cmis:changeToken']['value'] elsif succinct_props = json['succinctProperties'] self.change_token = succinct_props['cmis:changeToken'] else raise "Unexpected input: #{json}" end end
Private Instance Methods
get_properties_map(raw)
click to toggle source
# File lib/cmis/helpers.rb, line 54 def get_properties_map(raw) if raw['succinctProperties'] raw['succinctProperties'] elsif raw['properties'] raw['properties'].reduce({}) do |h, (k, v)| h.merge(k => sanitize(v)) end else {} end end
method_name(property_name)
click to toggle source
# File lib/cmis/helpers.rb, line 46 def method_name(property_name) if property_name == 'cmis:objectId' 'cmis_object_id' else property_name.gsub('cmis:', '').as_ruby_property end end
sanitize(prop)
click to toggle source
# File lib/cmis/helpers.rb, line 66 def sanitize(prop) value = prop['value'] # Sometimes (when?) single values come in an array. # For now, we do nothing to hide this and leave it up to the user. # # value = value.first if value.is_a?(Array) if !!value && prop['type'] == 'datetime' # CMIS sends millis since epoch if value.is_a? Array value.map! { |v| Time.at(v / 1000.0) } else value = Time.at(value / 1000.0) end end value end