Sha256: 03c4222269fc77a5d4b5f4be1766d451eeb174e73e1974f27d432efceb97b0df

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 KB

Contents

require 'net/http'

#TODO: keep_alive_timeout ?

class Shoptet
  module UrlHelpers
    def assemble_uri base, params = {}
      u = URI(base)
      u.query = URI.encode_www_form(params) if params.any?

      u.to_s
    end
  end

  class Request
    def self.get uri, headers
      parsed_uri = URI(uri)

      http = Net::HTTP.new parsed_uri.host, parsed_uri.port
      http.use_ssl = true
      http.open_timeout = 60
      http.read_timeout = 60
      http.write_timeout = 60
      http.ssl_timeout = 60

      request = Net::HTTP::Get.new parsed_uri
      headers.each do |key, value|
        request[key] = value
      end

      response = http.request request
      parsed_body = JSON.parse response.body

      unless parsed_body
        message = "Status code: #{response.code}, url: #{uri}"
        fail Shoptet::EmptyRequestResponse.new(message)
      end

      parsed_body
    end

    def self.post uri, body
      req = Net::HTTP::Post.new uri
      req.set_form_data body

      res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
        http.request req
      end

      JSON.parse res.body
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
shoptet-0.0.21 lib/shoptet/request.rb
shoptet-0.0.20 lib/shoptet/request.rb
shoptet-0.0.19 lib/shoptet/request.rb