Module: Ooor::Transport::JsonClient::OeAdapter
- Defined in:
- lib/ooor/transport/json_client.rb
Overview
NOTE use a middleware here?
Instance Method Summary collapse
- #oe_request(session_info, url, params, method, *args) ⇒ Object
- #oe_service(session_info, service, obj, method, *args) ⇒ Object
Instance Method Details
#oe_request(session_info, url, params, method, *args) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/ooor/transport/json_client.rb', line 27 def oe_request(session_info, url, params, method, *args) if session_info[:req_id] session_info[:req_id] += 1 else session_info[:req_id] = 1 end if session_info[:sid] # required on v7 but forbidden in v8 params.merge!({"session_id" => session_info[:session_id]}) end response = JSON.parse(post do |req| req.headers['Cookie'] = session_info[:cookie] req.url url req.headers['Content-Type'] = 'application/json' req.body = {"jsonrpc"=>"2.0","method"=>"call", "params" => params, "id"=>session_info[:req_id]}.to_json end.body) if response["error"] faultCode = response["error"]['data']['fault_code'] || response["error"]['data']['debug'] raise OpenERPServerError.build(faultCode, response["error"]['message'], method, *args) else response["result"] end end |
#oe_service(session_info, service, obj, method, *args) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/ooor/transport/json_client.rb', line 8 def oe_service(session_info, service, obj, method, *args) if service == :exec_workflow url = '/web/dataset/exec_workflow' params = {"model"=>obj, "id"=>args[0], "signal"=>method} elsif service == :execute url = '/web/dataset/call_kw' if (i = Ooor.irregular_context_position(method)) && args.size < i kwargs = {"context"=> args[i]} else kwargs = {} end params = {"model"=>obj, "method"=> method, "kwargs"=> kwargs, "args"=>args}#, "context"=>context} else url = "/web/dataset/#{service}" params = args[0].merge({"model"=>obj}) end oe_request(session_info, url, params, method, *args) end |