Sha256: ebf55f9d577adf6ff21a00fb2c15ca3c151f6bea8f17a1de46c264af0bd70ed4

Contents?: true

Size: 1.29 KB

Versions: 35

Compression:

Stored size: 1.29 KB

Contents

# To allow a pretty interface:
#
#     res = http.get("blueprints")
#
module Lono::Api
  class Proxy
    extend Memoist

    def get(path)
      request(Net::HTTP::Get, path)
    end

    def post(path, data={})
      request(Net::HTTP::Post, path, data)
    end

    def http(url)
      uri = URI(url)
      http = Net::HTTP.new(uri.host, uri.port)
      http.open_timeout = http.read_timeout = 30
      http.use_ssl = true if uri.scheme == 'https'
      http
    end
    memoize :http

    def request(klass, path, data={})
      url = url(path)
      http = http(url)
      req = send_request(klass, url, data)
      http.request(req) # send request
    end

    def send_request(klass, url, data={})
      data.merge!(
        lono_version: Lono::VERSION,
        lono_command: lono_command,
      )
      req = klass.new(url) # url includes query string and uri.path does not, must used url
      if [Net::HTTP::Post, Net::HTTP::Put].include?(klass)
        text = JSON.dump(data)
        req.body = text
        req.content_length = text.bytesize
      end
      req
    end

    # Lono::API does not include the /. IE: localhost:8888
    # path includes the /. IE: "/blueprints"
    def url(path)
      "#{Lono::API}/#{path}"
    end

  private
    def lono_command
      "#{$0} #{ARGV.join(' ')}"
    end
  end
end

Version data entries

35 entries across 35 versions & 1 rubygems

Version Path
lono-8.0.0.pre.rc6 lib/lono/api/proxy.rb
lono-8.0.0.pre.rc5 lib/lono/api/proxy.rb
lono-8.0.0.pre.rc4 lib/lono/api/proxy.rb
lono-8.0.0.pre.rc3 lib/lono/api/proxy.rb
lono-8.0.0.pre.rc2 lib/lono/api/proxy.rb
lono-8.0.0.pre.rc1 lib/lono/api/proxy.rb
lono-7.5.2 lib/lono/api/proxy.rb
lono-7.5.1 lib/lono/api/proxy.rb
lono-7.5.0 lib/lono/api/proxy.rb
lono-7.4.11 lib/lono/api/proxy.rb
lono-7.4.10 lib/lono/api/proxy.rb
lono-7.4.9 lib/lono/api/proxy.rb
lono-7.4.8 lib/lono/api/proxy.rb
lono-7.4.7 lib/lono/api/proxy.rb
lono-7.4.6 lib/lono/api/proxy.rb
lono-7.4.5 lib/lono/api/proxy.rb
lono-7.4.4 lib/lono/api/proxy.rb
lono-7.4.3 lib/lono/api/proxy.rb
lono-7.4.2 lib/lono/api/proxy.rb
lono-7.4.1 lib/lono/api/proxy.rb