class BrocadeAPIClient::JSONRestClient
Class for talking to API
Constants
- ACCEPT_TYPE
- CONTENT_TYPE
- SESSION_COOKIE_NAME
- USER_AGENT
Attributes
api_url[RW]
http_log_debug[RW]
log_level[RW]
logger[RW]
secure[RW]
session_key[RW]
timeout[RW]
Public Class Methods
new(api_url, secure = false, http_log_debug = false, client_logger = nil)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 26 def initialize(api_url, secure = false, http_log_debug = false, client_logger = nil) @api_url = api_url @secure = secure @http_log_debug = http_log_debug @session_key = nil @client_logger = client_logger @httparty_log_level = :info @httparty_log_format = :logstash set_debug_flag end
Public Instance Methods
authenticate(user, password, _optional = nil)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 46 def authenticate(user, password, _optional = nil) @username = user @password = password @session_key = nil auth_url = '/login' headers, body = post(auth_url) @session_key = headers['WStoken'] JSON.parse(body) rescue StandardError raise BrocadeAPIClient::ConnectionError end
delete(url, **kwargs)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 96 def delete(url, **kwargs) headers, _payload = headers_payload(kwargs) response = HTTParty.delete(api_url + url, headers: headers, verify: false, logger: @client_logger, log_level: @httparty_log_level, log_format: @httparty_log_format) validate_answer(response) end
get(url, **kwargs)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 63 def get(url, **kwargs) headers, _payload = headers_payload(kwargs) response = HTTParty.get(api_url + url, headers: headers, verify: false, logger: @client_logger, log_level: @httparty_log_level, log_format: @client_logger) validate_answer(response) end
headers_payload(**kwargs)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 128 def headers_payload(**kwargs) kwargs['headers'] = kwargs.fetch('headers', {}) if session_key kwargs['headers'] = kwargs.fetch('headers', {}) kwargs['headers'][SESSION_COOKIE_NAME] = @session_key else kwargs['headers']['WSUsername'] = @username kwargs['headers']['WSPassword'] = @password end kwargs['headers']['User-Agent'] = USER_AGENT kwargs['headers']['Accept'] = ACCEPT_TYPE if kwargs.key?(:body) kwargs['headers']['Content-Type'] = CONTENT_TYPE kwargs[:body] = kwargs[:body].to_json payload = kwargs[:body] else payload = nil end [kwargs['headers'], payload] end
post(url, **kwargs)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 73 def post(url, **kwargs) headers, payload = headers_payload(kwargs) response = HTTParty.post(api_url + url, headers: headers, body: payload, verify: false, logger: @client_logger, log_level: @httparty_log_level, log_format: @httparty_log_format) validate_answer(response) end
put(url, **kwargs)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 85 def put(url, **kwargs) headers, payload = headers_payload(kwargs) response = HTTParty.put(api_url + url, headers: headers, body: payload, verify: false, logger: @client_logger, log_level: @httparty_log_level, log_format: @httparty_log_format) validate_answer(response) end
set_debug_flag()
click to toggle source
This turns on/off http request/response debugging output to console
# File lib/BrocadeAPIClient/httpclient.rb, line 39 def set_debug_flag if @http_log_debug @httparty_log_level = :debug @httparty_log_format = :curl end end
unauthenticate()
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 120 def unauthenticate # delete the session on the brocade network advisor unless @session_key.nil? post('/logout') @session_key = nil end end
url(api_url)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 58 def url(api_url) # should be http://<Server:Port>/rest @api_url = api_url.chomp('/') end
validate_answer(response)
click to toggle source
# File lib/BrocadeAPIClient/httpclient.rb, line 106 def validate_answer(response) headers = response.headers body = response.parsed_response code_array = %w[200 204] unless code_array.include?(response.code.to_s) if body.nil? exception = BrocadeAPIClient.exception_from_response(response, body) @client_logger.error(exception) raise exception end end [headers, body] end