Class: Ios::Receipt::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/ios/receipt/result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(result, environment = nil) ⇒ Result

Returns a new instance of Result.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ios/receipt/result.rb', line 5

def initialize(result, environment=nil)
  @result = result
  @status = result['status']
  check_status!

  @environment = (result['environment'] || environment).try(:downcase).try(:to_sym)
  raise Ios::Receipt::Exceptions::InvalidConfiguration if @environment.nil?

  receipt = result['receipt']
  @bundle_id = receipt['bid'] || receipt['bundle_id']
  @application_version = receipt['application_version']
  @original_application_version = receipt['original_application_version']

  @receipt_style = receipt['original_transaction_id'] ? :ios6 : :ios7
  if @receipt_style == :ios6
    latest = result['latest_receipt_info'] || result['latest_expired_receipt_info']
    @latest = if latest
      [ Ios::Receipt::Receipt.new(latest) ]
    elsif receipt['original_transaction_id']
      [ Ios::Receipt::Receipt.new(receipt) ]
    else
      []
    end
  end

  @in_app = [receipt['in_app'] || []].flatten.compact.collect { |r| Ios::Receipt::Receipt.new r }
  @latest = [result['latest_receipt_info'] || []].flatten.compact.collect { |r| Ios::Receipt::Receipt.new r } unless @latest
end

Instance Attribute Details

#application_versionObject (readonly)

Returns the value of attribute application_version.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def application_version
  @application_version
end

#bundle_idObject (readonly)

Returns the value of attribute bundle_id.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def bundle_id
  @bundle_id
end

#environmentObject (readonly)

Returns the value of attribute environment.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def environment
  @environment
end

#in_appObject (readonly)

Returns the value of attribute in_app.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def in_app
  @in_app
end

#latestObject (readonly)

Returns the value of attribute latest.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def latest
  @latest
end

#original_application_versionObject (readonly)

Returns the value of attribute original_application_version.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def original_application_version
  @original_application_version
end

#receipt_styleObject (readonly)

Returns the value of attribute receipt_style.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def receipt_style
  @receipt_style
end

#resultObject (readonly)

Returns the value of attribute result.



2
3
4
# File 'lib/ios/receipt/result.rb', line 2

def result
  @result
end

Instance Method Details

#active_recurring_receiptsObject



54
55
56
# File 'lib/ios/receipt/result.rb', line 54

def active_recurring_receipts
  @active_recurring_receipts ||= recurring_receipts.select { |r| r.active? }
end

#expired?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/ios/receipt/result.rb', line 42

def expired?
  @status == 21006
end

#in_trial_receiptsObject



62
63
64
# File 'lib/ios/receipt/result.rb', line 62

def in_trial_receipts
  @in_trial_receipts ||= active_recurring_receipts.select { |r| r.in_trial? }
end

#next_recurring_receiptObject



58
59
60
# File 'lib/ios/receipt/result.rb', line 58

def next_recurring_receipt
  @next_recurring_receipt ||= active_recurring_receipts.sort_by { |r| r.expires_date }.first
end

#once_off_receiptsObject



38
39
40
# File 'lib/ios/receipt/result.rb', line 38

def once_off_receipts
  @once_offs ||= @latest.select { |r| r.once_off? }
end

#production?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/ios/receipt/result.rb', line 50

def production?
  @environment == :production
end

#recurring_receiptsObject



34
35
36
# File 'lib/ios/receipt/result.rb', line 34

def recurring_receipts
  @recurring ||= @latest.select { |r| r.recurring? }
end

#sandbox?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/ios/receipt/result.rb', line 46

def sandbox?
  @environment == :sandbox
end

#transaction_idsObject



66
67
68
# File 'lib/ios/receipt/result.rb', line 66

def transaction_ids
  (@in_app.collect { |r| r.transaction_id } + @latest.collect { |r| r.transaction_id }).flatten.compact.uniq
end