module Bundler::Security::Voting::Request

Module responsible for doing request to Coditsu differ

Constants

ENDPOINT_URL

Differ endpoint url

HEADERS

Request headers

Public Class Methods

assign_auth(request, config) click to toggle source

Assigns basic authorization if provided in the config

@param request [Net::HTTP::Post] prepared http post @param config [OpenStruct] Coditsu config

# File lib/bundler/security/voting/request.rb, line 62
def assign_auth(request, config)
  return unless config
  return unless config.api_key
  return unless config.api_secret

  request.basic_auth(config.api_key, config.api_secret)
end
assign_payload(request, payload) click to toggle source

Assigns payload as json

@param request [Net::HTTP::Post] prepared http post @param payload [Hash] with versions to check

# File lib/bundler/security/voting/request.rb, line 74
def assign_payload(request, payload)
  request.body = JSON.dump(payload)
end
build_http() { |http, uri| ... } click to toggle source

Builds http connection object

# File lib/bundler/security/voting/request.rb, line 33
def build_http
  uri = URI(differ_url)

  Net::HTTP.start(
    uri.host,
    uri.port,
    use_ssl: uri.scheme == 'https',
    verify_mode: OpenSSL::SSL::VERIFY_NONE
  ) { |http| yield(http, uri) }
end
build_request(uri, config, payload) click to toggle source

Build http post request and assigns headers and payload

@param uri [URI::HTTPS] @param config [OpenStruct] Coditsu config @param payload [Hash] with versions to check

@return [Net::HTTP::Post]

# File lib/bundler/security/voting/request.rb, line 51
def build_request(uri, config, payload)
  Net::HTTP::Post
    .new(uri.request_uri, HEADERS)
    .tap { |request| assign_auth(request, config) }
    .tap { |request| assign_payload(request, payload) }
end
call(config, payload) click to toggle source

Execute request to the differ

@param config [OpenStruct] Coditsu config @param payload [Hash] with versions to check

@return [Net::HTTPResponse] response from Coditsu differ

# File lib/bundler/security/voting/request.rb, line 26
def call(config, payload)
  build_http do |http, uri|
    http.request(build_request(uri, config, payload))
  end
end
differ_url() click to toggle source

Provides differ endpoint url

@return [String]

# File lib/bundler/security/voting/request.rb, line 81
def differ_url
  ENV['CODITSU_DIFFER_URL'] || ENDPOINT_URL
end