class WssAgent::Client
Client
class
Constants
- POLICY_TYPES
- RECONNECT_INTERVAL
- RECONNECT_RETRIES
- REQUEST_TIMEOUT
- UPDATE_TYPE
Attributes
connection[RW]
Public Class Methods
new()
click to toggle source
# File lib/wss_agent/client.rb, line 17 def initialize @connection ||= Faraday.new(connection_options) do |h| h.port = Configure.port h.headers[:content_type] = 'application/x-www-form-urlencoded' h.request :url_encoded h.adapter :excon end Excon.defaults[:ciphers] = 'DEFAULT' if defined?(JRuby) @connection end
Public Instance Methods
check_policies(gem_list, options = {})
click to toggle source
# File lib/wss_agent/client.rb, line 58 def check_policies(gem_list, options = {}) request_options = if Configure['force_check_all_dependencies'] || options['force'] { type: POLICY_TYPES[:compliance], forceCheckAllDependencies: true } else { type: POLICY_TYPES[:basic], forceCheckAllDependencies: false } end ResponsePolicies.new(request(gem_list, request_options)) end
diff(gem_list)
click to toggle source
# File lib/wss_agent/client.rb, line 29 def diff(gem_list) diff_data = { 'coordinates' => Configure.coordinates, 'dependencies' => gem_list } if Configure['project_token'] diff_data['projectToken'] = Configure['project_token'] end MultiJson.dump([diff_data]) end
payload(gem_list, options = {})
click to toggle source
# File lib/wss_agent/client.rb, line 40 def payload(gem_list, options = {}) req_options = { agent: Configure['agent'], agentVersion: Configure['agent_version'], token: Configure.token, product: Configure['product'].to_s, productVersion: Configure['product_version'].to_s, timeStamp: Time.now.to_i, diff: diff(gem_list) } req_options[:userKey] = Configure.user_key if Configure.user_key? req_options.merge(options) end
request(gem_list, options = {})
click to toggle source
# File lib/wss_agent/client.rb, line 69 def request(gem_list, options = {}) WssAgent.logger.debug "request params: #{payload(gem_list, options)}" retries = Configure['retries'] ? Configure['retries'] : RECONNECT_RETRIES interval = Configure['interval']? Configure['interval'] : RECONNECT_INTERVAL while retries > 0 begin return connection.post(Configure.api_path, payload(gem_list, options)) rescue Faraday::Error::ClientError => ex retries = retries - 1 WssAgent.logger.error "Failed to send request to WhiteSource server: #{ex}" if retries > 0 WssAgent.logger.error "Trying to connect to WhiteSource server again. sleeping #{interval} seconds..." sleep(interval) else return ex end end end end
update(gem_list)
click to toggle source
# File lib/wss_agent/client.rb, line 54 def update(gem_list) ResponseInventory.new(request(gem_list, type: UPDATE_TYPE)) end
Private Instance Methods
connection_options()
click to toggle source
# File lib/wss_agent/client.rb, line 93 def connection_options @connection_options || begin @connection_options = { url: Configure.url, request: { timeout: REQUEST_TIMEOUT } } @connection_options[:ssl] = ssl_options if Configure.ssl? end @connection_options end
ssl_options()
click to toggle source
# File lib/wss_agent/client.rb, line 104 def ssl_options { ca_file: WssAgent::DEFAULT_CA_BUNDLE_PATH } end