Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Refactor: run rubocop and remove useless
  • Loading branch information
18bitmood committed Sep 15, 2021
1 parent b7733bb commit 1814187
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 27 deletions.
11 changes: 7 additions & 4 deletions .rubocop.yml
Expand Up @@ -5,14 +5,14 @@ AllCops:
# Metrics

Metrics/BlockLength:
Max: 120

Layout/LineLength:
Max: 120
Max: 240

Metrics/MethodLength:
Max: 30

Metrics/ModuleLength:
Max: 240

# Documentation

Style/Documentation:
Expand All @@ -28,3 +28,6 @@ Style/SymbolArray:

Naming/AccessorMethodName:
Enabled: false

Layout/LineLength:
Max: 120
1 change: 0 additions & 1 deletion lib/blockfrostruby/config.yml
@@ -1,5 +1,4 @@
use_asc_order_as_default: true
default_count_per_page: 100
# use_parallel_requests: true
parallel_requests: 10
sleep_between_retries_ms: 500
2 changes: 1 addition & 1 deletion lib/blockfrostruby/params.rb
Expand Up @@ -41,8 +41,8 @@ def define_count(count_param, object_config)

def define_value(default_config_value, object_config_value, params_value)
result = params_value || object_config_value
result = nil if result == default_config_value
# Need to do this to avoid adding ?param=value to request if it is default as in the API
result = nil if result == default_config_value
result
end

Expand Down
9 changes: 6 additions & 3 deletions lib/blockfrostruby/request.rb
Expand Up @@ -46,9 +46,10 @@ def format_response(response)
content_type = response.header.content_type
able_to_parse = ['application/json', 'application/octet-stream'].include?(content_type)
body = able_to_parse ? JSON.parse(response.body) : response.body
if body.is_a?(Array)
body = body.map{|el| el.transform_keys(&:to_sym)}
elsif body.is_a?(Hash)
case body
when Array
body = body.map { |el| el.transform_keys(&:to_sym) }
when Hash
body = body.transform_keys(&:to_sym)
end
{ status: response.code.to_i, body: body }
Expand Down Expand Up @@ -108,6 +109,7 @@ def get_pages(url, project_id, params = {})
format_pages_results(responses)
end

# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
def get_pages_multi(url, project_id, params = {})
parallel_requests = params[:parallel_requests]
sleep_retries = params[:sleep_between_retries_ms]
Expand Down Expand Up @@ -163,6 +165,7 @@ def get_pages_multi(url, project_id, params = {})
responses.sort! { |el1, el2| el1[:page_number] <=> el2[:page_number] }.map! { |el| el[:response] }
format_pages_results(responses)
end
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity

def get_response_from_page(url, project_id, page_number, params = {})
params_to_pass = params.slice(:order, :count).merge(page: page_number)
Expand Down
19 changes: 9 additions & 10 deletions lib/blockfrostruby/validator.rb
Expand Up @@ -2,9 +2,10 @@

require_relative 'constants'

# rubocop:disable Style/GuardClause, Metrics/ModuleLength
# rubocop:disable Style/GuardClause
module Validator
class << self
# rubocop:disable Metrics/AbcSize
def validate_params(params)
validate_count(params[:count])
validate_page(params[:page])
Expand All @@ -14,15 +15,15 @@ def validate_params(params)
validate_parallel_requests(params[:parallel_requests])
validate_sleep_between_retries(params[:sleep_between_retries_ms])

# TODO: think about using it
if (params[:from_page] || params[:to_page]) && params[:page]
raise ArgumentError,
'Do not specify "page" with "to_page" or "from_page"'
end
end
# rubocop:enable Metrics/AbcSize

def validate_init_params(config)
validate_count(config[:default_count_per_page]) # init count
validate_count(config[:default_count_per_page])
validate_use_order(config[:use_asc_order_as_default])
validate_parallel_requests(config[:parallel_requests])
validate_sleep_between_retries(config[:sleep_between_retries_ms])
Expand Down Expand Up @@ -120,17 +121,17 @@ def validate_to_page(param)
end

def validate_both_from_page_and_to_page(from_page, to_page)
if to_page && from_page.nil? # TODO: refactor
if to_page && from_page.nil?
raise ArgumentError,
'"to_page" argument should be specified with "from_page"'
end

validate_from_page(from_page) if from_page # Think about if
validate_from_page(from_page) if from_page

if from_page && to_page # Think about if
if from_page && to_page
validate_to_page(to_page)

unless from_page <= to_page # TODO: refactor
unless from_page <= to_page
raise ArgumentError,
'"to_page" argument should be greater or equal than "from_page"'
end
Expand All @@ -146,8 +147,6 @@ def validate_both_from_and_to(from, to)
end
end

# Can be moved to Validations module

def validate_is_numeric(param, param_name)
unless param.is_a?(Numeric)
raise ArgumentError,
Expand Down Expand Up @@ -205,4 +204,4 @@ def validate_string_is_in_array(param, param_name, array)
end
end
end
# rubocop:enable Style/GuardClause, Metrics/ModuleLength
# rubocop:enable Style/GuardClause
16 changes: 8 additions & 8 deletions spec/request_spec.rb
Expand Up @@ -7,20 +7,20 @@
RSpec.describe Request do
let(:blockfrost) { Blockfrostruby::CardanoMainNet.new('project_id') }
before do
stub_cardano_success_request("/some_url?count=4&order=desc&page=2", '{"answer_page_2": true}', 'project_id')
stub_cardano_success_request("/some_url?count=4&order=desc&page=3", '{"answer_page_3": true}', 'project_id')
stub_cardano_success_request("/some_url?count=4&order=desc&page=4", '{"answer_page_4": true}', 'project_id')
stub_cardano_success_request("/some_url?count=4&order=desc&page=5", '{"answer_page_5": true}', 'project_id')
stub_cardano_success_request('/some_url?count=4&order=desc&page=2', '{"answer_page_2": true}', 'project_id')
stub_cardano_success_request('/some_url?count=4&order=desc&page=3', '{"answer_page_3": true}', 'project_id')
stub_cardano_success_request('/some_url?count=4&order=desc&page=4', '{"answer_page_4": true}', 'project_id')
stub_cardano_success_request('/some_url?count=4&order=desc&page=5', '{"answer_page_5": true}', 'project_id')
end

context 'when calls GET requests' do
context 'when fetch single page' do
it 'add valid params to url, project_id and sdk_identificator to headers, send request and format answer' do
params_list = { order: 'desc', count: 4, page: 2 }
stub_cardano_success_request("/some_url?count=4&order=desc&page=2", '{"answer": true}', 'project_id')
stub_cardano_success_request('/some_url?count=4&order=desc&page=2', '{"answer": true}', 'project_id')
params = Params.define_params(params_list, blockfrost.config)
response = Request.get_response("#{blockfrost.url}/some_url", blockfrost.project_id, params)
expect(response).to eq({:status=>200, :body=>{:answer=>true}})
expect(response).to eq({ status: 200, body: { answer: true } })
end
end

Expand All @@ -29,7 +29,7 @@
params_list = { order: 'desc', count: 4, from_page: 2, to_page: 5 }
params = Params.define_params(params_list, blockfrost.config)
response = Request.get_response("#{blockfrost.url}/some_url", blockfrost.project_id, params)
expect(response).not_to be_empty
expect(response).not_to be_empty
# RSPEC doesn't support adequate multithread testing.
# So in test running we will always get something like:
# ['{"answer_page_2": true}', '{"answer_page_2": true}', '{"answer_page_2": true}']
Expand All @@ -38,4 +38,4 @@
end
end
end
end
end

0 comments on commit 1814187

Please sign in to comment.