Class: Totvs::PasswordVault::Connection

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

Defined Under Namespace

Classes: Error, RequestFailure, TimeoutError

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#consumer_keyString

Returns:

  • (String)


122
123
124
# File 'lib/totvs/password_vault/connection.rb', line 122

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

#consumer_secretString

Returns:

  • (String)


127
128
129
# File 'lib/totvs/password_vault/connection.rb', line 127

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

#vault_access_tokenString

Returns:

  • (String)


137
138
139
# File 'lib/totvs/password_vault/connection.rb', line 137

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

#vault_access_token_secretString

Returns:

  • (String)


142
143
144
# File 'lib/totvs/password_vault/connection.rb', line 142

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

#vault_base_urlString

Returns:

  • (String)


132
133
134
# File 'lib/totvs/password_vault/connection.rb', line 132

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)


52
53
54
55
56
57
58
# File 'lib/totvs/password_vault/connection.rb', line 52

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)


42
43
44
45
46
47
48
# File 'lib/totvs/password_vault/connection.rb', line 42

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

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

Returns response.

Returns:

Raises:



114
115
116
117
118
119
# File 'lib/totvs/password_vault/connection.rb', line 114

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:



84
85
86
87
88
89
# File 'lib/totvs/password_vault/connection.rb', line 84

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:



75
76
77
78
79
# File 'lib/totvs/password_vault/connection.rb', line 75

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:



94
95
96
97
98
99
# File 'lib/totvs/password_vault/connection.rb', line 94

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:



104
105
106
107
108
109
# File 'lib/totvs/password_vault/connection.rb', line 104

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)


62
63
64
# File 'lib/totvs/password_vault/connection.rb', line 62

def requester
  access_token
end

#wrap_response(response) ⇒ Response

Wraps the response to a Response object

Returns:



148
149
150
151
152
# File 'lib/totvs/password_vault/connection.rb', line 148

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