我知道此问题之前已得到解答,但我似乎无法使任何解决方案正常工作
我正在为我需要调用的API创建一个ruby包装器。 Interface类完成了api的所有会话处理和实际调用,但我想为我将最常执行的函数构建帮助器类。我遇到的问题是我需要一种在多个辅助类中维护Interface类的一个实例的方法。
这是我到目前为止的代码
require_relative 'interface'
module Api_Helper
attr_accessor :xmlmc
#get a new instance of the interface, This should be the only instance used.
#I don't know if this needs to go in its own module
def initialize server, port = '5015'
@xmlmc = Xmlmc::Interface.new server, port
end
end
module Xmlmc
class API
include Api_Helper
module Session
#session helpers use invoke method to send calls to the api via the interface class
def invoke service, operation, parameters
Xmlmc::API.xmlmc.invoke service, operation, parameters
end
end
module Data
#data helpers use invoke method to send calls to the api via the interface class
def invoke service, operation, parameters
Xmlmc::API.xmlmc.invoke service, operation, parameters
end
end
def session
#extend the session module into its own class
_session = Object.new
_session.extend Session
_session
end
def data
#extend the data helpers into its own class
_data = Object.new
_data.extend Data
_data
end
end
end
我希望能够像这样使用我的代码。
api = Xmlmc::API.new 'localhost', '2000'
@session = api.session
@session.logon 'username', 'password'
@data = api.data
@data.query = 'select * from table' #requires a session first.
我遇到的问题是Interface类处理会话令牌,会话令牌从一个调用到另一个调用。我希望能够将我的代码干净地划分为多个部分,例如session
和data
,同时只使用一个接口类实例。
我不想让这些方法返回比API返回值更多的内容。那就是我不想手动传递接口类或会话变量的实例等。这可能吗?