Sha256: ef46b5df0319beacafe1ce0d15df3f61e60bf953938f4387f205740adff8152f

Contents?: true

Size: 1.09 KB

Versions: 5

Compression:

Stored size: 1.09 KB

Contents

require 'yaml'
require 'mechanize'

module Roart
  
  module Connections
    RequiredConfig = %w(server user pass)
  
  end
  
  class Connection
  
    attr_reader :agent
  
    def initialize(conf)
    
      if conf.is_a?(String)
        raise "Loading Config File not yet implemented"
      elsif conf.is_a?(Hash)
        Roart::check_keys!(conf, Roart::Connections::RequiredConfig)
        @conf = conf
      end
    
      @agent = login
      add_methods!
    end
    
    def rest_path
      self.server + '/REST/1.0/'
    end
    
    def get(uri)
      @agent.get(uri).body
    end
    
    def post(uri, payload)
      @agent.post(uri, payload).body
    end
    
    protected
    
    def login
      agent = WWW::Mechanize.new
      page = agent.get(@conf[:server])
      form = page.form('login')
      form.user = @conf[:user]
      form.pass = @conf[:pass]
      page = agent.submit form
      agent
    end
    
    def add_methods!
      @conf.each do |key, value|
        (class << self; self; end).send :define_method, key do
          return value
        end
      end
    end
    
  end
  
end

Version data entries

5 entries across 5 versions & 3 rubygems

Version Path
pjdavis-roart-0.1.2 lib/roart/connection.rb
pjdavis-roart-0.1.3 lib/roart/connection.rb
pjdavis-roart-0.1.4 lib/roart/connection.rb
threetee-roart-0.1.4 lib/roart/connection.rb
roart-0.1.4 lib/roart/connection.rb