Module: HelloBlock::Query

Includes:
APIParameters, Endpoints
Included in:
Address, Block, Faucet, Transaction, Wallet
Defined in:
lib/helloblock/resources/query.rb

Constant Summary

Constants included from APIParameters

APIParameters::API_PARAMETERS

Constants included from Endpoints

Endpoints::ENDPOINTS

Instance Method Summary collapse

Methods included from Endpoints

#base_url, #version_path

Instance Method Details

#[](attribute) ⇒ Object



54
55
56
# File 'lib/helloblock/resources/query.rb', line 54

def [](attribute)
  to_hash[attribute]
end

#[]=(attribute, value) ⇒ Object



58
59
60
# File 'lib/helloblock/resources/query.rb', line 58

def []=(attribute, value)
  to_hash[attribute] = value
end

#default_queryObject



13
14
15
# File 'lib/helloblock/resources/query.rb', line 13

def default_query
  { path: ENDPOINTS[parent_class], params: {} }
end

#determine_parent_resourceObject

exceptions: querying transactions with addresses actually hits /addresses/transactions endpoint



68
69
70
71
72
# File 'lib/helloblock/resources/query.rb', line 68

def determine_parent_resource
  if query[:path] == ENDPOINTS[:transaction] && query[:params][:addresses]
    query[:path] = ENDPOINTS[:addresses_transactions]
  end
end

#find(id) ⇒ Object



21
22
23
24
# File 'lib/helloblock/resources/query.rb', line 21

def find(id)
  query[:path] += id
  self
end

#inspectObject



62
63
64
# File 'lib/helloblock/resources/query.rb', line 62

def inspect
  to_hash.to_s
end

#last(limit) ⇒ Object



36
37
38
39
40
# File 'lib/helloblock/resources/query.rb', line 36

def last(limit)
  query[:path] = ENDPOINTS[parent_class] + ENDPOINTS[:latest]
  query[:params][:limit] = limit
  self
end

#offset(number) ⇒ Object



42
43
44
45
# File 'lib/helloblock/resources/query.rb', line 42

def offset(number)
  query[:params][:offset] = number
  self
end

#parent_classObject



17
18
19
# File 'lib/helloblock/resources/query.rb', line 17

def parent_class
  self.to_s.split('::').last.downcase.to_sym
end

#queryObject



9
10
11
# File 'lib/helloblock/resources/query.rb', line 9

def query
  @query ||= default_query
end

#to_hashObject



47
48
49
50
51
52
# File 'lib/helloblock/resources/query.rb', line 47

def to_hash
  (query_copy = query.clone) and (@query = default_query)
  method = query_copy[:params][:post] ? :post : :get
  query_copy[:params].delete(:post)
  HelloBlock.send(method, query_copy[:path], query_copy[:params])
end

#where(conditions) ⇒ Object

where(transaction: […]) => converts :transaction to API’s :txHashes



27
28
29
30
31
32
33
34
# File 'lib/helloblock/resources/query.rb', line 27

def where(conditions)
  conditions.each do |resource, ids|
    api_resource = API_PARAMETERS[resource] || resource
    query[:params][api_resource] = ids
  end
  determine_parent_resource
  self
end