Class: Seiso::Connector::RestConnector

Inherits:
Object
  • Object
show all
Defined in:
lib/seiso/connector/rest_connector.rb

Overview

Author

Willie Wheeler ([email protected])

Copyright

Copyright © 2014-2015 Expedia, Inc.

License

Apache 2.0

Constant Summary collapse

HN_ACCEPT =
"Accept"
HN_CONTENT_TYPE =
"Content-Type"
MT_TEXT_URI =
"text/uri"

Instance Method Summary collapse

Constructor Details

#initialize(host, port, use_ssl, ignore_cert, username, password, media_type) ⇒ RestConnector

Returns a new instance of RestConnector.



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/seiso/connector/rest_connector.rb', line 17

def initialize(host, port, use_ssl, ignore_cert, username, password, media_type)
  @host = host
  @port = port
  @use_ssl = use_ssl
  @ignore_cert = ignore_cert
  @username = username
  @password = password
  @media_type = media_type

  # FIXME Not secure
  @verify_mode = OpenSSL::SSL::VERIFY_NONE if @use_ssl
end

Instance Method Details

#delete(uri) ⇒ Object



83
84
85
86
87
88
# File 'lib/seiso/connector/rest_connector.rb', line 83

def delete(uri)
  puts "DELETE #{uri}"
  request = Net::HTTP::Delete.new uri.request_uri
  request.basic_auth(@username, @password)
  do_request(http, request)
end

#get(uri) ⇒ Object



30
31
32
33
34
35
# File 'lib/seiso/connector/rest_connector.rb', line 30

def get(uri)
  request = Net::HTTP::Get.new uri.request_uri
  request[HN_ACCEPT] = @media_type
  request.basic_auth(@username, @password)
  do_request(http, request)
end

#post(uri, resource) ⇒ Object



37
38
39
40
41
42
43
# File 'lib/seiso/connector/rest_connector.rb', line 37

def post(uri, resource)
  request = Net::HTTP::Post.new uri.request_uri
  request[HN_CONTENT_TYPE] = @media_type
  request.basic_auth(@username, @password)
  request.body = resource.to_json
  do_request(http, request)
end

#put(uri, resource) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/seiso/connector/rest_connector.rb', line 65

def put(uri, resource)
  request = Net::HTTP::Put.new uri.request_uri
  request[HN_CONTENT_TYPE] = @media_type
  request.basic_auth(@username, @password)
  request.body = resource.to_json
  do_request(http, request)
end

#put_all(uri_resource_pairs) ⇒ Object

Puts all resources using a keepalive connection



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/seiso/connector/rest_connector.rb', line 46

def put_all(uri_resource_pairs)
  Net::HTTP.start(
      @host,
      @port,
      :use_ssl => @use_ssl,
      :verify_mode => @verify_mode) do |http|

    uri_resource_pairs.each do |pair|
      pair_uri = pair['uri']
      pair_resource = pair['resource']
      request = Net::HTTP::Put.new pair_uri.request_uri
      request[HN_CONTENT_TYPE] = @media_type
      request.basic_auth(@username, @password)
      request.body = pair_resource.to_json
      do_request(http, request)
    end
  end
end
  • uri: main resource URI

  • linked_uri: specifies resource we’re linking to the main resource



75
76
77
78
79
80
81
# File 'lib/seiso/connector/rest_connector.rb', line 75

def put_link(uri, linked_uri)
  request = Net::HTTP::Put.new uri.request_uri
  request[HN_CONTENT_TYPE] = MT_TEXT_URI
  request.basic_auth(@username, @password)
  request.body = linked_uri.request_uri
  do_request(http, request)
end