Class: Ooor::ObjectService

Inherits:
Service
  • Object
show all
Defined in:
lib/ooor/services.rb

Instance Method Summary collapse

Methods inherited from Service

define_service, #initialize

Constructor Details

This class inherits a constructor from Ooor::Service

Instance Method Details

#inject_session_context(service, method, *args) ⇒ Object



126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/ooor/services.rb', line 126

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



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/ooor/services.rb', line 99

def object_service(service, obj, method, *args)
  unless @session.config[:user_id]
    @session.common.(@session.config[:database], @session.config[:username], @session.config[:password], @session.config[:params])
  end
  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
    unless @session.web_session[:session_id]
      @session.common.(@session.config[:database], @session.config[:username], @session.config[:password])
    end
    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.common.(@session.config[:database], @session.config[:username], @session.config[:password])
    retry
end