Class: Totvs::PasswordVault::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/totvs/password_vault/connection.rb

Defined Under Namespace

Classes: Error, InactiveRegistryError, RegistryNotFoundError, RequestFailure, TimeoutError

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#consumer_keyString

Returns:

  • (String)


125
126
127
# File 'lib/totvs/password_vault/connection.rb', line 125

def consumer_key
  @consumer_key ||= ENV["VAULT_CONSUMER_KEY"]
end

#consumer_secretString

Returns:

  • (String)


130
131
132
# File 'lib/totvs/password_vault/connection.rb', line 130

def consumer_secret
  @consumer_secret ||= ENV["VAULT_CONSUMER_SECRET"]
end

#vault_access_tokenString

Returns:

  • (String)


140
141
142
# File 'lib/totvs/password_vault/connection.rb', line 140

def vault_access_token
  @vault_access_token ||= ENV["VAULT_ACCESS_TOKEN"]
end

#vault_access_token_secretString

Returns:

  • (String)


145
146
147
# File 'lib/totvs/password_vault/connection.rb', line 145

def vault_access_token_secret
  @vault_access_token_secret ||= ENV["VAULT_ACCESS_TOKEN_SECRET"]
end

#vault_base_urlString

Returns:

  • (String)


135
136
137
# File 'lib/totvs/password_vault/connection.rb', line 135

def vault_base_url
  @vault_base_url ||= ENV["VAULT_BASE_URL"]
end

Instance Method Details

#access_tokenOAuth::AccessToken

Returns the oauth access token

Returns:

  • (OAuth::AccessToken)


55
56
57
58
59
60
61
# File 'lib/totvs/password_vault/connection.rb', line 55

def access_token
  @access_token ||= OAuth::AccessToken.new(
    consumer,
    vault_access_token,
    vault_access_token_secret
  )
end

#consumerOAuth::Consumer

Returns the oauth consumer

Returns:

  • (OAuth::Consumer)


45
46
47
48
49
50
51
# File 'lib/totvs/password_vault/connection.rb', line 45

def consumer
  @consumer ||= OAuth::Consumer.new(
    consumer_key,
    consumer_secret,
    site: vault_base_url
  )
end

#delete(path:, headers: {}) ⇒ Response

Returns response.

Returns:

Raises:



117
118
119
120
121
122
# File 'lib/totvs/password_vault/connection.rb', line 117

def delete(path:, headers: {})
  response = make_request(:delete, path, headers)
  validate_success! response

  wrap_response response
end

#get(path:, headers: {}) ⇒ Response

Returns response.

Returns:

Raises:



87
88
89
90
91
92
# File 'lib/totvs/password_vault/connection.rb', line 87

def get(path:, headers: {})
  response = make_request(:get, path, headers)
  validate_success! response

  wrap_response response
end

#make_request(http_method, path, *args) ⇒ Net::HTTPResponse

Makes a http request

Parameters:

  • http_method (Symbol)
  • path (String)
  • args (...)

Returns:

  • (Net::HTTPResponse)

Raises:



78
79
80
81
82
# File 'lib/totvs/password_vault/connection.rb', line 78

def make_request(http_method, path, *args)
  requester.request http_method, path, *args
rescue Timeout::Error => e
  raise TimeoutError, "#{http_method.to_s.upcase}: #{path}. #{e}"
end

#post(path:, body: nil, headers: {}) ⇒ Response

Returns response.

Returns:

Raises:



97
98
99
100
101
102
# File 'lib/totvs/password_vault/connection.rb', line 97

def post(path:, body: nil, headers: {})
  response = make_request(:post, path, body, headers)
  validate_success! response

  wrap_response response
end

#put(path:, body: nil, headers: {}) ⇒ Response

Returns response.

Returns:

Raises:



107
108
109
110
111
112
# File 'lib/totvs/password_vault/connection.rb', line 107

def put(path:, body: nil, headers: {})
  response = make_request(:put, path, body, headers)
  validate_success! response

  wrap_response response
end

#requesterOAuth::AccessToken

Alias access token

Returns:

  • (OAuth::AccessToken)


65
66
67
# File 'lib/totvs/password_vault/connection.rb', line 65

def requester
  access_token
end

#wrap_response(response) ⇒ Response

Wraps the response to a Response object

Returns:



151
152
153
154
155
# File 'lib/totvs/password_vault/connection.rb', line 151

def wrap_response(response)
  Response.new status_code: response.code.to_i,
               body: response.body,
               content_type: response.content_type
end