class Mio::Client
Public Class Methods
new(base_uri, username, password, verify_ssl=true)
click to toggle source
# File lib/mio/client.rb, line 13 def initialize base_uri, username, password, verify_ssl=true @base_uri = base_uri @agent = Faraday.new(url: base_uri, ssl: {verify: verify_ssl }) do |f| f.adapter :net_http_persistent f.response :detailed_logger if ENV.fetch('VERBOSE', 'false').to_s.downcase == 'true' end @agent.basic_auth(username, password) end
Public Instance Methods
action(resource, id, payload, opts={})
click to toggle source
# File lib/mio/client.rb, line 105 def action resource, id, payload, opts={} url = path(resource, id, :actions) statuses = get url, opts unless statuses.success? raise Mio::Client::LoadOfBollocks, "GET on #{url} returned #{statuses.status}" end if JSON.parse(statuses.body).find{|h| h['action'] == payload[:action]} response = post url, payload, opts unless response.success? raise Mio::Client::LoadOfBollocks, "PUT on #{url}, with #{payload.inspect} returned #{response.status}" end return make_object response.body end end
configure(resource, id, payload, opts={})
click to toggle source
# File lib/mio/client.rb, line 74 def configure resource, id, payload, opts={} url = path(resource, id, :configuration) response = put url, payload, opts unless response.success? raise Mio::Client::LoadOfBollocks, "PUT on #{url}, with #{payload.inspect} returned #{response.status}" end make_object response.body end
create(resource, payload, opts={})
click to toggle source
# File lib/mio/client.rb, line 44 def create resource, payload, opts={} url = path(resource) response = post url, payload, opts unless response.success? raise Mio::Client::LoadOfBollocks, "POST on #{url}, with #{payload.inspect} returned #{response.status}" end make_object response.body end
definition(resource, payload, opts={})
click to toggle source
# File lib/mio/client.rb, line 84 def definition resource, payload, opts={} url = path(resource) response = put url, payload, opts, 'application/vnd.nativ.mio.v1+xml' unless response.success? raise Mio::Client::LoadOfBollocks, "PUT on #{url}, with #{payload.inspect} returned #{response.status}" end make_object response.body end
find(resource, id, opts={})
click to toggle source
# File lib/mio/client.rb, line 22 def find resource, id, opts={}, accept='application/json' url = path resource, id response = get url, opts, accept unless response.success? || response.status == 404 raise Mio::Client::LoadOfBollocks, "GET on #{url}, returned #{response.status}" end h = make_object response.body h[:status] = response.status h end
find_all(resource, opts={})
click to toggle source
# File lib/mio/client.rb, line 34 def find_all resource, opts={}, accept='application/json' url = path(resource) response = get url, opts, accept unless response.success? raise Mio::Client::LoadOfBollocks, "GET on #{url} returned #{response.status}" end make_object response.body end
remove(resource, id, opts={})
click to toggle source
# File lib/mio/client.rb, line 64 def remove resource, id, opts={} url = path resource, id response = delete url, opts unless response.success? raise Mio::Client::LoadOfBollocks, "DELETE on #{url} returned #{response.status}" end response.status end
template(resource, payload, opts={})
click to toggle source
# File lib/mio/client.rb, line 95 def template resource, payload, opts={} url = path(resource) response = put url, payload, opts, 'text/html', 'text/html' unless response.success? raise Mio::Client::LoadOfBollocks, "PUT on #{url}, with #{payload.inspect} returned #{response.status}" end Nokogiri::HTML(response.body) end
update(resource, payload, opts={})
click to toggle source
# File lib/mio/client.rb, line 54 def update resource, payload, opts={} url = path(resource) response = put url, payload, opts unless response.success? raise Mio::Client::LoadOfBollocks, "PUT on #{url}, with #{payload.inspect} returned #{response.status}" end make_object response.body end
Private Instance Methods
delete(url, opts)
click to toggle source
# File lib/mio/client.rb, line 135 def delete url, opts Mio::Requests.make_request :delete, @agent, url, opts end
get(url, opts, accept='application/json')
click to toggle source
# File lib/mio/client.rb, line 123 def get url, opts, accept='application/json' Mio::Requests.make_request :get, @agent, url, opts, accept end
make_object(response)
click to toggle source
# File lib/mio/client.rb, line 139 def make_object response JSON.parse(response) end
path(resource, id=nil, endpoint=nil)
click to toggle source
# File lib/mio/client.rb, line 143 def path resource, id=nil, endpoint=nil path_string = "#{@base_uri}/#{resource.sub(/^\//, '')}" path_string += "/#{id}" if id path_string += "/#{endpoint.to_s}" if endpoint path_string end
post(url, payload, opts)
click to toggle source
# File lib/mio/client.rb, line 127 def post url, payload, opts Mio::Requests.make_request :post, @agent, url, opts, payload end
put(url, payload, opts, content_type='application/vnd.nativ.mio.v1+json', accept='application/json')
click to toggle source
# File lib/mio/client.rb, line 131 def put url, payload, opts, content_type='application/vnd.nativ.mio.v1+json', accept='application/json' Mio::Requests.make_request :put, @agent, url, opts, payload, content_type, accept end