class Dotloop::Loop
Constants
- LOOP_DETAILS_FIELDS
- LOOP_FIELDS
Attributes
client[RW]
Public Class Methods
new(client:)
click to toggle source
# File lib/dotloop/loop.rb, line 50 def initialize(client:) @client = client end
Public Instance Methods
all(options = {})
click to toggle source
# File lib/dotloop/loop.rb, line 54 def all(options = {}) raise_if_invalid_batch_size(options) options[:batch_size] ||= BATCH_SIZE Array.new.tap do |arr| (1..MAX_LOOPS).each do |i| options[:batch_number] = i current_batch = batch(options) arr.push current_batch break if current_batch.size < options[:batch_size] end end.flatten end
batch(options = {})
click to toggle source
# File lib/dotloop/loop.rb, line 67 def batch(options = {}) @client.get("/profile/#{profile_id(options)}/loop", query_params(options))[:data].map do |attrs| lp = Dotloop::Models::Loop.new(attrs) lp.client = client lp.profile_id = profile_id(options) lp end end
create(profile_id:, params: {})
click to toggle source
# File lib/dotloop/loop.rb, line 93 def create(profile_id:, params: {}) data = { name: params['name'], status: params['status'], transactionType: params['transactionType'] } loop_data = @client.post("/profile/#{profile_id.to_i}/loop", data)[:data] lp = Dotloop::Models::Loop.new(loop_data) lp.client = client lp.profile_id = profile_id.to_i lp end
detail(profile_id:, loop_id:)
click to toggle source
# File lib/dotloop/loop.rb, line 84 def detail(profile_id:, loop_id:) loop_detail = @client.get("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/detail")[:data] loop_detail = Dotloop::LoopDetail.new(loop_detail).details ld = Dotloop::Models::LoopDetail.new(loop_detail) ld.profile_id = profile_id.to_i ld.loop_id = loop_id.to_i ld end
find(profile_id:, loop_id:)
click to toggle source
# File lib/dotloop/loop.rb, line 76 def find(profile_id:, loop_id:) loop_data = @client.get("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}")[:data] lp = Dotloop::Models::Loop.new(loop_data) lp.client = client lp.profile_id = profile_id.to_i lp end
loop_it(profile_id:, params: {})
click to toggle source
# File lib/dotloop/loop.rb, line 107 def loop_it(profile_id:, params: {}) loop_data = @client.post("/loop-it?profile_id=#{profile_id}", params)[:data] lp = Dotloop::Models::Loop.new(loop_data) lp.client = client lp.profile_id = profile_id.to_i lp end
update(profile_id:, loop_id:, params: {})
click to toggle source
# File lib/dotloop/loop.rb, line 115 def update(profile_id:, loop_id:, params: {}) data = {} params.each do |key, value| LOOP_FIELDS.include?(key.to_s) || next data[key] = value.to_s end loop_data = @client.patch("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}", data)[:data] lp = Dotloop::Models::Loop.new(loop_data) lp.client = client lp.profile_id = profile_id.to_i lp end
update_details(profile_id:, loop_id:, params: {})
click to toggle source
# File lib/dotloop/loop.rb, line 129 def update_details(profile_id:, loop_id:, params: {}) data = {} LOOP_DETAILS_FIELDS.keys.each do |key| (detail_fields = params[key]) detail_fields.is_a?(Hash) || next data[key] = {} detail_fields.each do |k, v| LOOP_DETAILS_FIELDS[key].include?(k.to_s) || next data[key][k] = v.to_s end end loop_detail = @client.patch("/profile/#{profile_id.to_i}/loop/#{loop_id.to_i}/detail", data)[:data] loop_detail = Dotloop::LoopDetail.new(loop_detail).details Dotloop::Models::LoopDetail.new(loop_detail) end
Private Instance Methods
query_params(options)
click to toggle source
# File lib/dotloop/loop.rb, line 152 def query_params(options) { batch_number: batch_number(options), batch_size: options[:batch_size].to_i, sort: options[:sort], filter: options[:filter], include_details: options[:include_details] }.delete_if { |_, v| should_delete(v) } end
raise_if_invalid_batch_size(options)
click to toggle source
# File lib/dotloop/loop.rb, line 148 def raise_if_invalid_batch_size(options) raise 'invalid batch size provided, allowed values minimum 1 and maximum 100' if !options[:batch_size].nil? && (options[:batch_size] < 1 || options[:batch_size] > 100) end