class Saklient::Cloud::Client
@private
Public Class Methods
new(token, secret)
click to toggle source
# File lib/saklient/cloud/client.rb, line 12 def initialize(token, secret) @config = { api_root: 'https://secure.sakura.ad.jp/cloud/', api_root_suffix: nil, timeout_sec: 180 } set_access_key token, secret self end
Public Instance Methods
clone_instance()
click to toggle source
# File lib/saklient/cloud/client.rb, line 26 def clone_instance instance = self.class.new(@config[:token], @config[:secret]) instance.set_api_root @config[:api_root] instance.set_api_root_suffix @config[:api_root_suffix] instance end
println(msg)
click to toggle source
# File lib/saklient/cloud/client.rb, line 22 def println(msg) $stderr.puts msg end
request(method, path, params={})
click to toggle source
# File lib/saklient/cloud/client.rb, line 51 def request(method, path, params={}) json = params.to_json unless path =~ /^http/ url_root = @config[:api_root] if @config[:api_root_suffix] url_root += @config[:api_root_suffix] url_root = url_root.sub %r|/?$|, '/' end url = url_root + 'api/cloud/1.1' + path end url += '?' + URI.escape(json) if method == 'GET' and !params.nil? #println '// APIリクエスト中: #{method} #{path}' parsed_url = URI.parse url if method == 'GET' req = Net::HTTP::Get.new parsed_url else req = Net::HTTP::Post.new parsed_url req.body = json end req.basic_auth @config[:token], @config[:secret] extra_headers = { 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => 'saklient.ruby ver-0.0.9 rev-bab628f6f4c2a9d37b38c634b4a514cb66467939', 'X-Requested-With' => 'XMLHttpRequest', 'X-Sakura-HTTP-Method' => method, 'X-Sakura-Error-Level' => 'warning', 'X-Sakura-Request-Format' => 'json', 'X-Sakura-Response-Format' => 'json', 'X-Sakura-No-Authenticate-Header' => '1' } #println parsed_url extra_headers.each do |key, value| req[key] = value end http = Net::HTTP.new parsed_url.host, parsed_url.scheme == 'https' ? 443 : 80 # http.set_debug_output($stderr) # for debugging if parsed_url.scheme == 'https' http.use_ssl = true # http.verify_mode = OpenSSL::SSL::VERIFY_NONE end res = http.start {|conn| conn.read_timeout = @config[:timeout_sec] conn.request req } ret = JSON.parse(res.body, {:symbolize_names => true}) status = res.code.to_i unless 200 <= status && status < 300 then raise Saklient::Errors::ExceptionFactory.create(status, ret[:error_code], ret[:error_msg]) end ret end
set_access_key(token, secret)
click to toggle source
# File lib/saklient/cloud/client.rb, line 42 def set_access_key(token, secret) @config[:token] = token @config[:secret] = secret end
set_api_root(url)
click to toggle source
# File lib/saklient/cloud/client.rb, line 34 def set_api_root(url) @config[:api_root] = url end
set_api_root_suffix(suffix)
click to toggle source
# File lib/saklient/cloud/client.rb, line 38 def set_api_root_suffix(suffix) @config[:api_root_suffix] = suffix end
set_timeout(sec)
click to toggle source
# File lib/saklient/cloud/client.rb, line 47 def set_timeout(sec) @config[:timeout_sec] = sec end