module BunqRb::Shared::ClassMethods
Public Instance Methods
implements(*calls)
click to toggle source
# File lib/bunq_rb/client.rb, line 15 def implements(*calls) calls.each do |call| case call when :get implements_get when :list implements_list when :delete implements_delete else puts "ERROR for: #{call}" end end end
Private Instance Methods
counted_url(args)
click to toggle source
# File lib/bunq_rb/client.rb, line 65 def counted_url(args) page_size = BunqRb.configuration.page_size arged_url = Addressable::Template.new("#{url(*args)}{?query*}") params = page_size == 10 ? {} : { count: page_size } arged_url.expand(query: params).to_s end
implements_delete()
click to toggle source
# File lib/bunq_rb/client.rb, line 32 def implements_delete define_singleton_method(:delete) do |*args| id = args.pop full_uri = [url(*args), id].join("/") response = Client.send_method(:delete, full_uri) [] end end
implements_get()
click to toggle source
# File lib/bunq_rb/client.rb, line 41 def implements_get define_singleton_method(:find) do |*args| id = args.pop full_uri = [url(*args), id].join("/") response = Client.send_method(:get, full_uri) new(response[0].values.first) end end
implements_list()
click to toggle source
# File lib/bunq_rb/client.rb, line 50 def implements_list define_singleton_method(:all) do |*args| Enumerator.new do |yielder| older_url = counted_url(args) loop do results = Client.raw_send_method(:get, older_url) json = JSON.parse(results.body) json["Response"].map { |item| yielder << new(item.values.first) } raise StopIteration if json["Pagination"].nil? || json["Pagination"]["older_url"].nil? older_url = json["Pagination"]["older_url"] end end.lazy end end