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

Instance Attribute Details

#loggerObject



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