Module: HypermediaAPI

Defined in:
lib/api/api.rb

Defined Under Namespace

Classes: Document, Form, Link, Model

Constant Summary collapse

BadURI =
Class.new(Exception)
MissingForm =
Class.new(Exception)
Class.new(Exception)

Class Method Summary collapse

Class Method Details

.connection(uri) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/api/api.rb', line 8

def HypermediaAPI.connection (uri)
  connection = Net::HTTP.new(uri.host, uri.port)
  
  if uri.scheme == 'https'
    connection.use_ssl = true
    connection.ssl_version = 'SSLv3'
  end
  
  connection
end

.get(uri_string, options = {}) ⇒ Object



19
20
21
22
23
24
# File 'lib/api/api.rb', line 19

def HypermediaAPI.get (uri_string, options = {})
  uri = URI(uri_string)
  get = Net::HTTP::Get.new(uri.request_uri)
  
  HypermediaAPI.send_request(uri, get, options)
end

.post(uri_string, options = {}) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/api/api.rb', line 26

def HypermediaAPI.post (uri_string, options = {})
  uri = URI(uri_string)
  post = Net::HTTP::Post.new(uri.request_uri)
  post.set_form_data(options[:inputs] || {})
  
  HypermediaAPI.send_request(uri, post, options)
end

.send_request(uri, request, options) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/api/api.rb', line 34

def HypermediaAPI.send_request (uri, request, options)
  if auth = options[:basic_auth]
    request.basic_auth(auth[:username], auth[:password])
  end
  
  response = HypermediaAPI.connection(uri).request(request)
  status = response.code.to_i
  headers = response.to_hash
  nokogiri_html_document = Nokogiri::HTML::Document.parse(response.body, uri.to_s)
  
  Document.new(nokogiri_html_document, status, headers, auth)
end