Sha256: ba70e353b255caebace7592c4814161f0dc7124747d62063b1bfdb3d78425b21

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

require "net/http"
require 'uri'
require 'json'

class Pocket
  
  def self.make_request(url, options = {})
    
    # defaults
    _options = {
      :method     => :get,
      :username   => nil,
      :password   => nil,
      :use_ssl    => false,
      :data       => nil,
      :headers    => {
        "Content-Type"  => "application/json",
        "Accept"        => "application/json",
      }
    }
    
    # merge passed in options with default options
    _options = _options.merge(options)
    
    # consolidate needed vars
    _url        = URI.parse(url)
    _method     = _options[:method]
    _username   = _options[:username]
    _password   = _options[:password]
    _use_ssl    = _options[:use_ssl]
    _data       = _options[:data]
    _headers    = _options[:headers]
    _path       = _url.path   ? _url.path         : ""
    _query      = _url.query  ? "?" + _url.query  : ""
    _api_query  = _path + _query
    
    # create http object
    http = Net::HTTP.new(_url.host, _url.port)
    http.use_ssl = _use_ssl
    
    # create request
    if _method == :get
      request = Net::HTTP::Get.new(_api_query, _headers)
    elsif _method == :post
      request = Net::HTTP::Post.new(_api_query, _headers)
    elsif _method == :put
      request = Net::HTTP::Put.new(_api_query, _headers)
    elsif _method == :delete
      request = Net::HTTP::Delete.new(_api_query, _headers)
    else
      request = Net::HTTP::Get.new(_api_query, _headers)
    end
    
    # add data (if any)
    request.body = _data ? _data.to_json : nil

    # add authentication (if present)
    if _username && _password
      request.basic_auth _username, _password
    end
    
    # make request
    response = http.request(request)
    
    # return response
    response
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pocket-0.1.0 lib/pocket.rb