class Starling::Services::BaseService

A basic implementation of a service for interacting with the Starling Bank API, mapping HTTP request to endpoints to Ruby methods

Attributes

api_service[R]

Public Class Methods

new(api_service) click to toggle source

@param api_service [ApiService]

# File lib/starling/services/base_service.rb, line 9
def initialize(api_service)
  @api_service = api_service
end

Private Instance Methods

build_collection_from_embedded_key(response, key:, resource:) click to toggle source
# File lib/starling/services/base_service.rb, line 25
def build_collection_from_embedded_key(response, key:, resource:)
  JSON.parse(response.body)
      .fetch('_embedded', {})
      .fetch(key, []).map do |parsed_data|
    resource.new(parsed_data: parsed_data)
  end
end
build_collection_from_key(response, key:, resource:) click to toggle source
# File lib/starling/services/base_service.rb, line 17
def build_collection_from_key(response, key:, resource:)
  JSON.parse(response.body)
      .fetch(key)
      .map do |parsed_data|
    resource.new(parsed_data: parsed_data)
  end
end
convert_location_header_to_relative_path(location) click to toggle source
# File lib/starling/services/base_service.rb, line 37
def convert_location_header_to_relative_path(location)
  location.gsub(%r{^/api/v1}, '')
end
options_without_params(options) click to toggle source
# File lib/starling/services/base_service.rb, line 33
def options_without_params(options)
  options.reject { |key, _| key == :params }
end