Class: ForestLiana::StripeCardsGetter

Inherits:
Object
  • Object
show all
Defined in:
app/services/forest_liana/stripe_cards_getter.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params, secret_key, reference) ⇒ StripeCardsGetter

Returns a new instance of StripeCardsGetter.



5
6
7
8
9
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 5

def initialize(params, secret_key, reference)
  @params = params
  @reference_model, @reference_field = reference_model(reference)
  Stripe.api_key = secret_key
end

Instance Attribute Details

#recordsObject

Returns the value of attribute records.



3
4
5
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 3

def records
  @records
end

Instance Method Details

#countObject



11
12
13
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 11

def count
  @cards.try(:total_count) || 0
end

#fetch_cards(customer, params) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 29

def fetch_cards(customer, params)
  @cards = Stripe::Customer.retrieve(customer).sources.all(params)

  @records = @cards.data.map do |d|
    query = {}
    query[@reference_field] = d.customer
    d.customer = @reference_model.find_by(query)

    d
  end
end

#limitObject



63
64
65
66
67
68
69
70
71
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 63

def limit
  return 10 unless pagination?

  if @params[:page][:size]
    @params[:page][:size].to_i
  else
    10
  end
end

#offsetObject



52
53
54
55
56
57
58
59
60
61
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 52

def offset
  return 0 unless pagination?

  number = @params[:page][:number]
  if number && number.to_i > 0
    (number.to_i - 1) * limit
  else
    0
  end
end

#pagination?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 73

def pagination?
  @params[:page] && @params[:page][:number]
end

#performObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 15

def perform
  params = { limit: limit, offset: offset, object: 'card' }
  params['include[]'] = 'total_count'

  resource = @reference_model.find(reference_model_id)
  customer = resource[@reference_field]

  if customer.blank?
    @records = []
  else
    fetch_cards(customer, params)
  end
end

#reference_model(reference) ⇒ Object



41
42
43
44
45
46
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 41

def reference_model(reference)
  resource_name, reference_field = reference.split('.')
  reference_model = SchemaUtils.find_model_from_table_name(resource_name)

  [reference_model, reference_field]
end

#reference_model_idObject



48
49
50
# File 'app/services/forest_liana/stripe_cards_getter.rb', line 48

def reference_model_id
  @params["#{@reference_model.table_name.singularize()}Id"]
end