Module: ActiveFedora::ServiceDefinitions::ClassMethods
- Defined in:
- lib/active_fedora/service_definitions.rb
Instance Method Summary collapse
- #add_method!(sdef_pid, method_name) ⇒ Object
-
#add_sdef_methods!(sdef_pid) ⇒ Object
iterate over SDef pointers, identify symbols in yaml map inject methods by symbol key.
- #has_service_definition(sdef_uri) ⇒ Object
- #sdef_pids ⇒ Object
Instance Method Details
#add_method!(sdef_pid, method_name) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/active_fedora/service_definitions.rb', line 74 def add_method!(sdef_pid, method_name) # find method_key method_key = ServiceDefinitions.lookup_method(sdef_pid, method_name) if method_key and not method_defined? method_key define_method(method_key) { |*args, &block| opts = args[0] || {} opts = opts.merge({:pid => pid, :sdef => sdef_pid, :method => method_name }) # dispatch to the dissemination method on restAPI client ActiveFedora::Base.connection_for_pid(pid).dissemination opts, &block } end end |
#add_sdef_methods!(sdef_pid) ⇒ Object
iterate over SDef pointers, identify symbols in yaml map inject methods by symbol key
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/active_fedora/service_definitions.rb', line 60 def add_sdef_methods! sdef_pid unless sdef_pid == "fedora-system:3" content = ActiveFedora::Base.connection_for_pid(sdef_pid).datastream_dissemination(:pid=>sdef_pid, :dsid=>"METHODMAP") method_map = Nokogiri::XML.parse(content) methods = method_map.xpath('//fmm:Method').collect { |method| method["operationName"] } else methods = ["viewObjectProfile","viewMethodIndex","viewItemIndex","viewDublinCore"] end methods.each { |method| add_method!(sdef_pid, method) } end |
#has_service_definition(sdef_uri) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/active_fedora/service_definitions.rb', line 51 def has_service_definition sdef_uri sdef_pid = sdef_uri.split('/')[-1] unless sdef_pids.include? sdef_pid self.add_sdef_methods! sdef_pid sdef_pids << sdef_pid end end |
#sdef_pids ⇒ Object
48 49 50 |
# File 'lib/active_fedora/service_definitions.rb', line 48 def sdef_pids @sdef_pids ||= [] end |