Module: SkipEmbedded::WebServiceUtil::Client
- Included in:
- SkipEmbedded::WebServiceUtil
- Defined in:
- lib/skip_embedded/web_service_util/client.rb
Instance Attribute Summary collapse
Instance Method Summary collapse
- #get_json(url, ca_file = nil) ⇒ Object
-
#open_service(app_name, service_name, params = {}, controller_name = "services") ⇒ Object
別のWebアプリのWeb-APIをコールするためのユーティリティメソッド Webアプリ連携の際は、このメソッドを経由して利用すること 引数 :app_name = 呼び出したいWebアプリケーションのシンボル :service_name = 呼び出したいWeb-APIの名前 :params = 呼び出す際のパラメータ :controller_name = サービスのコントローラパス(デフォルトの規約は“services”) services以外を指定も可能.
- #open_service_with_url(url, params = {}, app_ca_file = nil) ⇒ Object
Instance Attribute Details
#logger ⇒ Object
13 14 15 16 17 18 19 20 21 22 |
# File 'lib/skip_embedded/web_service_util/client.rb', line 13 def logger @logger ||= if defined?(ActiveRecord::Base) ActiveRecord::Base.logger elsif defined?(Rails) Rails.logger elsif require 'logger' Logger.new end end |
Instance Method Details
#get_json(url, ca_file = nil) ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/skip_embedded/web_service_util/client.rb', line 49 def get_json(url, ca_file = nil) uri = URI.parse url http = Net::HTTP.new(uri.host, uri.port) if uri.port == 443 http.use_ssl = true if ca_file http.verify_mode = OpenSSL::SSL::VERIFY_PEER http.ca_file = ca_file http.verify_depth = 5 else http.verify_mode = OpenSSL::SSL::VERIFY_NONE end end response = http.get("#{uri.path}?#{uri.query}", "X-SECRET-KEY" => InitialSettings['skip_collaboration']['secret_key']) if response.code == "200" JSON.parse(response.body) else logger.error "[WebServiceUtil Error] Response code is #{response.code} to access #{url}" nil end rescue Errno::ECONNREFUSED, OpenSSL::SSL::SSLError, SocketError, ArgumentError, JSON::ParserError, URI::InvalidURIError => ex logger.error "[WebServiceUtil Error] #{ex.to_s} to access #{url}" nil end |
#open_service(app_name, service_name, params = {}, controller_name = "services") ⇒ Object
別のWebアプリのWeb-APIをコールするためのユーティリティメソッド Webアプリ連携の際は、このメソッドを経由して利用すること 引数
:app_name = 呼び出したいWebアプリケーションのシンボル
:service_name = 呼び出したいWeb-APIの名前
:params = 呼び出す際のパラメータ
:controller_name = サービスのコントローラパス(デフォルトの規約は"services")
services以外を指定も可能
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/skip_embedded/web_service_util/client.rb', line 31 def open_service app_name, service_name, params={}, controller_name="services" ActiveSupport::Deprecation.warn("use 'open_service_with_url' with specified endopoint.") app_url, app_ca_file = if app = InitialSettings['collaboration_apps'][app_name.to_s] [ app["url"], app["ca_file"] ] else [nil, nil] end url = "#{app_url}/#{controller_name}/#{service_name}" self.open_service_with_url(url, params, app_ca_file) end |
#open_service_with_url(url, params = {}, app_ca_file = nil) ⇒ Object
43 44 45 46 47 |
# File 'lib/skip_embedded/web_service_util/client.rb', line 43 def open_service_with_url url, params = {}, app_ca_file = nil url = "#{url}?" + params.map{|key, val| "#{ERB::Util.u(key.to_s)}=#{ERB::Util.u(val.to_s)}"}.join('&') self.get_json(url, app_ca_file) end |