class CryptopusAdapter
Public Instance Methods
find_account_by_name(name)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 49 def find_account_by_name(name) secret_account = Account.find_by_name_and_folder_id(name, session_adapter.selected_folder.id) raise CryptopusAccountNotFoundError unless secret_account secret_account end
get(path)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 16 def get(path) uri = URI("#{root_url}/#{path}") request = new_request(:get, uri) send_request(request, uri) end
patch(path, body)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 29 def patch(path, body) uri = URI("#{root_url}/#{path}") request = new_request(:patch, uri) request.body = body send_request(request, uri) end
post(path, body)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 22 def post(path, body) uri = URI("#{root_url}/#{path}") request = new_request(:post, uri) request.body = body send_request(request, uri) end
renewed_auth_token()
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 57 def renewed_auth_token json = get("api_users/#{current_user_id}/token") JSON.parse(json)['token'] end
root_url()
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 10 def root_url raise SessionMissingError unless session_adapter.session_data[:url] @root_url ||= "#{session_adapter.session_data[:url]}/api" end
save_secret(secret)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 36 def save_secret(secret) secret_account = secret.to_account secret_account.folder = session_adapter.selected_folder.id persisted_secret = Account.find_by_name_and_folder_id(secret.name, session_adapter.selected_folder.id) if persisted_secret patch("accounts/#{persisted_secret.id}", secret_account.to_json) else post('accounts', secret_account.to_json) end end
Private Instance Methods
current_user_id()
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 64 def current_user_id users = JSON.parse(get('api_users'), symbolize_names: true) users[:data].find do |user| user[:attributes][:username] == session_adapter.session_data[:username] end[:id] end
header_token()
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 75 def header_token Base64.strict_encode64(session_adapter.session_data[:token] || '') end
new_request(verb, uri)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 79 def new_request(verb, uri) request = Object.const_get("Net::HTTP::#{verb.capitalize}").new(uri) request['Authorization-User'] = session_adapter.session_data[:username] request['Authorization-Password'] = header_token if [:post, :patch].include? verb request['Content-Type'] = 'application/json' request['Accept'] = 'application/vnd.api+json' end request end
send_request(request, uri)
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 90 def send_request(request, uri) is_ssl_connection = uri.port == 443 response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: is_ssl_connection) do |http| http.request(request) end raise UnauthorizedError if response.is_a?(Net::HTTPUnauthorized) raise ForbiddenError if response.is_a?(Net::HTTPForbidden) response.body end
session_adapter()
click to toggle source
# File lib/adapters/cryptopus_adapter.rb, line 71 def session_adapter @session_adapter ||= SessionAdapter.new end