Module: Kotsms2::Network

Included in:
Client
Defined in:
lib/kotsms2/network.rb

Instance Method Summary collapse

Instance Method Details

#escape(component) ⇒ Object



44
45
46
# File 'lib/kotsms2/network.rb', line 44

def escape(component)
  CGI.escape(component.to_s)
end

#get(host, request_uri, params = {}) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/kotsms2/network.rb', line 6

def get(host, request_uri, params = {})
  uri = URI('https://' + host + request_uri)
  uri.query = query_string(params.merge(username: @username, password: @password))

  message = Net::HTTP::Get.new(uri.request_uri)
  message['User-Agent'] = @user_agent

  parse(request(uri, message), host)
end

#parse(http_response, host) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/kotsms2/network.rb', line 16

def parse(http_response, host)
  case http_response
  when Net::HTTPSuccess
    http_response.body
  when Net::HTTPClientError
    raise ClientError, "#{http_response.code} response from #{host}"
  when Net::HTTPServerError
    raise ServerError, "#{http_response.code} response from #{host}"
  when 'READ_TIMEOUT'
    raise ClientTimeoutError, "Read Timeout from #{host}"
  else
    raise Error, "#{http_response.code} response from #{host}"
  end
end

#query_string(params) ⇒ Object



40
41
42
# File 'lib/kotsms2/network.rb', line 40

def query_string(params)
  params.flat_map { |k, vs| Array(vs).map { |v| "#{escape(k)}=#{escape(v)}" } }.join('&')
end

#request(uri, message) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/kotsms2/network.rb', line 31

def request(uri, message)
  http = Net::HTTP.new(uri.host, Net::HTTP.https_default_port)
  http.read_timeout = @timeout
  http.use_ssl = true
  http.request(message)
rescue Net::ReadTimeout
  'READ_TIMEOUT'
end