class Sensingplaza::WebRequest

Attributes

logger[RW]
url[RW]
user_id[RW]
user_password[RW]

Public Class Methods

new(requesthost, logger = nil) click to toggle source

requesthost - String ex) “hoge.com” logger - Logger

# File lib/sensingplaza/webrequest.rb, line 12
def initialize(requesthost, logger = nil)
  @url = requesthost
  @url = requesthost[0, requesthost.length - 1] if requesthost[-1] == "/"
  @logger = logger

  @user_id = nil
  @user_password = nil
end

Public Instance Methods

get(getdata, endpoint, htmlret = false, headers = {}) click to toggle source

getdata - Hash ex) { 1 => 10.2, 2 => 12, 3 => “hoge” … } endpoint - String ex) “/setvalues” htmlret - Boolean -> false: return json string, true: html response headers - Hash -> header values

# File lib/sensingplaza/webrequest.rb, line 74
def get(getdata, endpoint, htmlret = false, headers = {})
  endpoint = "/" + endpoint if endpoint[0] != "/"
  reqaddr = @url + endpoint
  dparams = URI.encode_www_form(getdata)
  uri = URI.parse(reqaddr + "?" + dparams)
  response = nil
  begin
    if reqaddr =~ /^https/
      https = Net::HTTP.new(uri.host, 443)
      https.use_ssl = true
      https.verify_mode = OpenSSL::SSL::VERIFY_NONE
      https.start{|h|
        request = Net::HTTP::Get.new(uri.request_uri)
        request.basic_auth(@user_id, @user_password) unless @user_id.nil?
        headers.each do |k, v|
          request[k] = v
        end
        response = h.request(request)
      }
    else
      Net::HTTP.start(uri.host, uri.port){|http|
        request = Net::HTTP::Get.new(uri.request_uri)
        request.basic_auth(@user_id, @user_password) unless @user_id.nil?
        headers.each do |k, v|
          request[k] = v
        end
        response = http.request(request)
      }
    end
    jsondata = response.body.strip
    errflg = false
    errflg = true if htmlret == false && jsondata =~ /^<html>/
    if errflg
      raise WebRequestError.new(jsondata.force_encoding("utf-8"))
    end        
  rescue
    unless @logger.nil?
      @logger.error("WebRequestError: can not send data.")
      @logger.error("#{$!}")
    else
      puts "WebRequestError: can not send data."
      puts "#{$!}"
    end
    jsondata = nil      
  end
  return jsondata, response.code.to_i, response if htmlret
  return jsondata    
end
post(postdata, endpoint, htmlret = false) click to toggle source

postdata - Hash ex) { 1 => 10.2, 2 => 12, 3 => “hoge” … } endpoint - String ex) “/setvalues” htmlret - Boolean -> false: return json string, true: html response

# File lib/sensingplaza/webrequest.rb, line 26
def post(postdata, endpoint, htmlret = false)
  endpoint = "/ " + endpoint if endpoint[0] != "/"
  reqaddr = @url + endpoint
  uri = URI.parse(reqaddr)
  response = nil
  begin
    if reqaddr =~ /^https/
      https = Net::HTTP.new(uri.host, 443)
      https.use_ssl = true
      https.verify_mode = OpenSSL::SSL::VERIFY_NONE
      https.start{|h|
        request = Net::HTTP::Post.new(uri.path)
        request.basic_auth(@user_id, @user_password) unless @user_id.nil?
        request.body = postdata.to_json
        response = h.request(request)
      }
    else
      Net::HTTP.start(uri.host, uri.port){|http|
        request = Net::HTTP::Post.new(uri.path)
        request.basic_auth(@user_id, @user_password) unless @user_id.nil?
        request.body = postdata.to_json
        response = http.request(request)
      }
    end
    jsondata = response.body.strip
    errflg = false
    errflg = true if htmlret == false && jsondata =~ /^<html>/
    if errflg
      raise WebRequestError.new(jsondata.force_encoding("utf-8"))
    end      
  rescue
    unless @logger.nil?
      @logger.error("WebRequestError: can not send data.")
      @logger.error("#{$!}")
    else
      puts "WebRequestError: can not send data."
      puts "#{$!}"
    end
    jsondata = nil
  end
  return jsondata, response.code.to_i if htmlret
  return jsondata
end