Class: CPEE::Instantiation::ContinueTask

Inherits:
Riddl::Implementation
  • Object
show all
Defined in:
lib/cpee-instantiation/instantiation.rb

Overview

}}}

Instance Method Summary collapse

Instance Method Details

#responseObject

{{{



372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
# File 'lib/cpee-instantiation/instantiation.rb', line 372

def response
  cblist       = @a[1]
  topic        = @p[1].value
  event_name   = @p[2].value
  notification = if @p[3].class === Riddl::Parameter::Simple
    JSON.parse(@p[3].value)
  else
    JSON.parse(@p[3].value.read)
  end

  key = @r.last
  cb, condition, instance, uuid, instance_url = cblist.lrange(key,0,-1)

  cpee = File.dirname(instance_url)

  send = {
    'CPEE-INSTANCE' => instance,
    'CPEE-INSTANCE-URL' => instance_url,
    'CPEE-INSTANCE-UUID' => uuid,
    'CPEE-STATE' => notification['content']['state']
  }

  if notification['content']['state'] == condition
    cblist.del(key)
    srv = Riddl::Client.new(cpee, File.join(cpee,'?riddl-description'))
    res = srv.resource("/#{instance}/properties/dataelements")
    status, response = res.get
    if status >= 200 && status < 300
      doc = XML::Smart.string(response[0].value.read)
      doc.register_namespace 'p', 'http://cpee.org/ns/properties/2.0'
      doc.find('/p:dataelements/*').each do |e|
        send[e.qname.name] = CPEE::ValueHelper::parse(e.text)
      end
    end
    Riddl::Client.new(cb).put Riddl::Parameter::Complex.new('dataelements','application/json',JSON::generate(send))
  else
    Riddl::Client.new(cb).put [
      Riddl::Header.new('CPEE-UPDATE','true'),
      Riddl::Parameter::Complex.new('dataelements','application/json',JSON::generate(send))
    ]
  end
end