module HtReq

Constants

VERSION

Public Class Methods

error() click to toggle source
# File lib/ht_req.rb, line 29
def self.error()
  result = @error
  @error=[]
  result
end
get_json_data(param) click to toggle source
# File lib/ht_req.rb, line 36
def self.get_json_data(param)
  res = self.request(param)
  if res.code != '200'
    return false
  else
    JSON.parse(res.body) rescue false
  end
end
help() click to toggle source
# File lib/ht_req.rb, line 14
  def self.help()
    puts <<"EOS"
こんなふうに使います
HtReq.send_request({
  :method => 'GET',
  :url => 'https://kyozai.net/'
  :params =>{
    'name'=>'tagomori',
    'pass'=>'tagomori123'
  },
  :header=>{'Content-Type'=>'application/x-www-form-urlencoded'}
})
EOS
  end
request(param={}) click to toggle source

メインの関数

# File lib/ht_req.rb, line 54
def self.request(param={})
  #methodがなければGETにする
  request_method = param[:method].nil? ? 'GET': param[:method]
  #urlがなければとりあえず自分のサイトに送っておく
  if param[:url].nil? then param[:url]='https://kyozai.net/gemtest/ht_req/1' end
  #urlをパースする
  url = URI.parse(param[:url])
  #pathがなければrootにする
  if url.path=='' then url.path='/' end
  #Getの場合は必要であればパラメータを設定する
  url = self.set_get_params_to_url(url,param[:params],request_method)
  #httpのインスタンスを作成
  http = Net::HTTP.new(url.host,url.port)
  #ssl通信を許可
  http.use_ssl=true
  http.verify_mode=OpenSSL::SSL::VERIFY_NONE
  #接続した結果のレスポンスをreturn
  res = http.start do 
    #Postの場合とGetの場合を両方インスタンス化
    req = eval('Net::HTTP::'+request_method.capitalize+'.new(url)')
    #リクエストヘッダを設定する
    req=self.set_request_header(req,param)
    #Postの場合、パラメータがあれば送る
    req = self.set_post_param(req,param[:params],request_method)
    http.request(req)
  end
  if res.code != '200'
    @error.push({:code=>res.code,
                  :body=>res.body,
                  :datetime=>Time.now.to_s,
                  :header=>res.header.msg
                })
  end
  res
end
set_get_params_to_url(url,param,request_method='GET') click to toggle source

getのパラメータを設定する urlはパースしたものでも文字列で与えてもいいが、 返り値はパースしたものになる

# File lib/ht_req.rb, line 102
def self.set_get_params_to_url(url,param,request_method='GET')
  #文字列がセットされた場合はパースする
  if url.class == String then url = URI.parse(url) end
  #パラメータをセットする
  if request_method.capitalize=='Get' && !param.nil?
    url.query = URI.encode_www_form(param).gsub("+","%20")
  end
  url
end
set_post_param(req,param,request_method="POST") click to toggle source

Postの場合はフォームデータを入れる

# File lib/ht_req.rb, line 113
def self.set_post_param(req,param,request_method="POST")
    if request_method.capitalize=='Post' && !param.nil?
      req.set_form_data(param)
    end
    req
end
set_request_header(req,param) click to toggle source
# File lib/ht_req.rb, line 90
def self.set_request_header(req,param)
  if !param[:header].nil?
    param[:header].each{|k,v|
      req[k]=v
    }
  end
  req
end
test_request(param={}) click to toggle source

テスト送信してみて問題ないか確かめる

# File lib/ht_req.rb, line 48
def self.test_request(param={})
  self.request(param).code == '200' ? true:false
end