Class: Riddl::Utils::Properties::UpdContent
- Inherits:
-
Implementation
- Object
- Implementation
- Riddl::Utils::Properties::UpdContent
- Defined in:
- lib/ruby/riddl/utils/properties.rb
Overview
}}}
Instance Method Summary collapse
-
#response ⇒ Object
{{{.
Methods inherited from Implementation
#headers, #initialize, #status
Constructor Details
This class inherits a constructor from Riddl::Implementation
Instance Method Details
#response ⇒ Object
{{{
494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 |
# File 'lib/ruby/riddl/utils/properties.rb', line 494 def response backend = @a[0] handler = @a[1] property = @r[1] value = @p.detect{|p| p.name == 'value'}; value = value.nil? ? value : value.value content = @p.detect{|p| p.name == 'content'}; content = content.nil? ? content : content.value minor = @r[2] unless backend.modifiable?(property) @status = 500 return # change properties.schema end path = "/p:properties/*[name()=\"#{property}\"]#{minor.nil? ? '' : "/p:#{minor}"}" nodes = backend.data.find(path) if nodes.empty? @status = 404 return # this property does not exist end if backend.is_state?(property) unless backend.valid_state?(property,nodes.first.to_s,value) @status = 404 return # not a valid state from here on end end newstuff = value.nil? ? XML::Smart.string(content).root.children : value backend.modify do |doc| nodes = doc.root.find(path) nods = nodes.map{|ele| ele.children.delete_all!; ele} nods.each do |ele| if value.nil? ele.add newstuff ele.children.first.attributes['changed'] = Time.now.xmlschema if backend.is_state?(property) else ele.text = newstuff ele.attributes['changed'] = Time.now.xmlschema if backend.is_state?(property) end end end || begin @status = 400 return # bad request end EM.defer{handler.property(property).update} unless handler.nil? return end |