Module: Bundler::Security::Voting::Request

Defined in:
lib/bundler/security/voting/request.rb

Overview

Module responsible for doing request to Coditsu differ

Class Method Summary collapse

Class Method Details

.assign_auth(request, config) ⇒ Object

Assigns basic authorization if provided in the config

Parameters:

  • request (Net::HTTP::Post)

    prepared http post

  • config (OpenStruct)

    Coditsu config



62
63
64
65
66
67
68
# 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) ⇒ Object

Assigns payload as json

Parameters:

  • request (Net::HTTP::Post)

    prepared http post

  • payload (Hash)

    with versions to check



74
75
76
# File 'lib/bundler/security/voting/request.rb', line 74

def assign_payload(request, payload)
  request.body = JSON.dump(payload)
end

.build_httpObject

Builds http connection object



33
34
35
36
37
38
39
40
41
42
# 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) ⇒ Net::HTTP::Post

Build http post request and assigns headers and payload

Parameters:

  • uri (URI::HTTPS)
  • config (OpenStruct)

    Coditsu config

  • payload (Hash)

    with versions to check

Returns:

  • (Net::HTTP::Post)


51
52
53
54
55
56
# 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) ⇒ Net::HTTPResponse

Execute request to the differ

Parameters:

  • config (OpenStruct)

    Coditsu config

  • payload (Hash)

    with versions to check

Returns:

  • (Net::HTTPResponse)

    response from Coditsu differ



26
27
28
29
30
# 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_urlString

Provides differ endpoint url

Returns:

  • (String)


81
82
83
# File 'lib/bundler/security/voting/request.rb', line 81

def differ_url
  ENV['CODITSU_DIFFER_URL'] || ENDPOINT_URL
end