Class: Ooor::ObjectService
Instance Method Summary collapse
- #inject_session_context(service, method, *args) ⇒ Object
- #object_service(service, obj, method, *args) ⇒ Object
Methods inherited from Service
Constructor Details
This class inherits a constructor from Ooor::Service
Instance Method Details
#inject_session_context(service, method, *args) ⇒ Object
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/ooor/services.rb', line 111 def inject_session_context(service, method, *args) if service == :object && (i = Ooor.irregular_context_position(method)) && args.size >= i c = HashWithIndifferentAccess.new(args[i]) args[i] = @session.session_context(c) elsif args[-1].is_a? Hash #context if args[-1][:context] c = HashWithIndifferentAccess.new(args[-1][:context]) args[-1][:context] = @session.session_context(c) else c = HashWithIndifferentAccess.new(args[-1]) args[-1] = @session.session_context(c) end end args end |
#object_service(service, obj, method, *args) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/ooor/services.rb', line 89 def object_service(service, obj, method, *args) @session.login_if_required() args = inject_session_context(service, method, *args) uid = @session.config[:user_id] db = @session.config[:database] @session.logger.debug "OOOR object service: rpc_method: #{service}, db: #{db}, uid: #{uid}, pass: #, obj: #{obj}, method: #{method}, *args: #{args.inspect}" if @session.config[:force_xml_rpc] pass = @session.config[:password] send(service, db, uid, pass, obj, method, *args) else json_conn = @session.get_client(:json, "#{@session.base_jsonrpc2_url}") json_conn.oe_service(@session.web_session, service, obj, method, *args) end rescue InvalidSessionError @session.config[:force_xml_rpc] = true #TODO set v6 version too retry rescue SessionExpiredError @session.logger.debug "session for uid: #{uid} has expired, trying to login again" @session.login(@session.config[:database], @session.config[:username], @session.config[:password]) retry # TODO put a retry limit to avoid infinite login attempts end |