gpt4 book ai didi

ruby-on-rails - 是否有任何通过 Ruby 使用 LocationLabs 或 Loc-Aid 的开源示例?

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:21 25 4
gpt4 key购买 nike

LocationLabsLoc-Aid是公开 REST API 的位置聚合服务。他们目前提供 Java、.NET 和 PHP SDK。 API 并不复杂,但作为一种学习工具,如果有一个 Ruby 教程或示例可以使用、扩展等,那就太好了。

最佳答案

经过进一步分析,我在 Loc-Aid 上构建了我的应用程序的基础设施。由于我找不到很多 Ruby 示例,因此我分享了我的应用程序中的一个片段。

  # Get SAVON soap client locaid location services
# Parameters:
# - none
# Returns: SOAP client for locaid location services
def get_location_client
Savon::Client.new do
wsdl.document = LOCAID_CONFIG['use_local_wsdl'] ?
File.expand_path(LOCAID_CONFIG['get_location_wsdl'].to_s, ::Rails.root.to_s) :
LOCAID_CONFIG['get_location_wsdl'].to_s
wsdl.endpoint = LOCAID_CONFIG['get_location_endpoint'].to_s
end
end


# Strip the return result from locaid response as a hash
# Parameters:
# - raw_response: Raw response XMLfrom locaid services
# - response_name: Response name which wrap the response return result in locaid response XML
# Returns: Hash corresponding to the key "return" in locaid soap response hash.
# Sample Raw Response:
# {:subscribe_phone_response=>{:return=>{:error=>{:error_code=>"00001", :error_message=>"Invalid or inactive user"}, :transaction_id=>"14028251"},
# :"@xmlns:ns2"=>"http://webservice.portico.locaid.net/"}}
def strip_locaid_return(raw_response, response_name)
unless raw_response.to_hash.has_key?(response_name)
raise TropoExceptions::ExternalError
end
raw_response[response_name][:return]
end

# Get location from locaid by the caller id
# Parameters:
# - @caller_id: Caller id get from scope value
# Returns: none
def location_from_locaid
client = get_location_client
client.http.read_timeout = LOCAID_CONFIG['get_location_timeout'].to_i
# Call locaider service to get location
response = client.request :wsdl, :get_locations_x do |soap|
soap.body = {
:login => LOCAID_CONFIG['login'],
:password => LOCAID_CONFIG['password'],
:class_id => LOCAID_CONFIG['class_id'],
:msisdn_list => ["1#{@caller_id}"],
:coor_type => "DECIMAL",
:location_method => LOCAID_CONFIG['location_method'],
:sync_type => "SYN",
:overage => "1"
}
end

result_hash = strip_locaid_return(response, :get_locations_x_response)
if result_hash.has_key?(:error)
raise TropoExceptions::ExternalError
end

yield result_hash[:location_response].is_a?(Array) ?
result_hash[:location_response][0] :
result_hash[:location_response]

rescue Savon::Error, Timeout::Error => e
logger.error e
yield nil
end
end

关于ruby-on-rails - 是否有任何通过 Ruby 使用 LocationLabs 或 Loc-Aid 的开源示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5844339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com