itunes-receipt 0.0.5 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
 - data/lib/itunes/receipt.rb +28 -17
 - data/spec/fake_json/autorenew_subscription.json +2 -0
 - data/spec/itunes/receipt_spec.rb +51 -3
 - metadata +61 -21
 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            0.0 
     | 
| 
      
 1 
     | 
    
         
            +
            0.1.0
         
     | 
    
        data/lib/itunes/receipt.rb
    CHANGED
    
    | 
         @@ -10,27 +10,38 @@ module Itunes 
     | 
|
| 
       10 
10 
     | 
    
         
             
                  end
         
     | 
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                # expires_date, receipt_data, and latest (receipt) will only appear for autorenew subscription products
         
     | 
| 
      
 14 
     | 
    
         
            +
                attr_reader :quantity, :product_id, :transaction_id, :purchase_date, :app_item_id, :version_external_identifier, :bid, :bvrs, :original, :expires_date, :receipt_data, :latest
         
     | 
| 
       14 
15 
     | 
    
         | 
| 
       15 
16 
     | 
    
         
             
                def initialize(attributes = {})
         
     | 
| 
       16 
     | 
    
         
            -
                   
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
                  receipt_attributes = attributes.with_indifferent_access[:receipt]
         
     | 
| 
      
 18 
     | 
    
         
            +
                  if receipt_attributes[:quantity]
         
     | 
| 
      
 19 
     | 
    
         
            +
                    @quantity = receipt_attributes[:quantity].to_i
         
     | 
| 
       18 
20 
     | 
    
         
             
                  end
         
     | 
| 
       19 
     | 
    
         
            -
                  @product_id =  
     | 
| 
       20 
     | 
    
         
            -
                  @transaction_id =  
     | 
| 
       21 
     | 
    
         
            -
                  @purchase_date = if  
     | 
| 
       22 
     | 
    
         
            -
                    Time.parse  
     | 
| 
      
 21 
     | 
    
         
            +
                  @product_id = receipt_attributes[:product_id]
         
     | 
| 
      
 22 
     | 
    
         
            +
                  @transaction_id = receipt_attributes[:transaction_id]
         
     | 
| 
      
 23 
     | 
    
         
            +
                  @purchase_date = if receipt_attributes[:purchase_date]
         
     | 
| 
      
 24 
     | 
    
         
            +
                    Time.parse receipt_attributes[:purchase_date].sub('Etc/', '')
         
     | 
| 
       23 
25 
     | 
    
         
             
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                  @app_item_id =  
     | 
| 
       25 
     | 
    
         
            -
                  @version_external_identifier =  
     | 
| 
       26 
     | 
    
         
            -
                  @bid =  
     | 
| 
       27 
     | 
    
         
            -
                  @bvrs =  
     | 
| 
       28 
     | 
    
         
            -
                  if  
     | 
| 
       29 
     | 
    
         
            -
                    @original = self.class.new(
         
     | 
| 
       30 
     | 
    
         
            -
                      :transaction_id =>  
     | 
| 
       31 
     | 
    
         
            -
                      :purchase_date =>  
     | 
| 
       32 
     | 
    
         
            -
                    )
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @app_item_id = receipt_attributes[:app_item_id]
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @version_external_identifier = receipt_attributes[:version_external_identifier]
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @bid = receipt_attributes[:bid]
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @bvrs = receipt_attributes[:bvrs]
         
     | 
| 
      
 30 
     | 
    
         
            +
                  if receipt_attributes[:original_transaction_id] || receipt_attributes[:original_purchase_date]
         
     | 
| 
      
 31 
     | 
    
         
            +
                    @original = self.class.new(:receipt => {
         
     | 
| 
      
 32 
     | 
    
         
            +
                      :transaction_id => receipt_attributes[:original_transaction_id],
         
     | 
| 
      
 33 
     | 
    
         
            +
                      :purchase_date => receipt_attributes[:original_purchase_date]
         
     | 
| 
      
 34 
     | 
    
         
            +
                    })
         
     | 
| 
       33 
35 
     | 
    
         
             
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                  # autorenew subscription handling
         
     | 
| 
      
 38 
     | 
    
         
            +
                  # attributes[:latest_receipt_info] and attributes[:latest_receipt] will be nil if you already have the receipt for the most recent renewal.
         
     | 
| 
      
 39 
     | 
    
         
            +
                  if attributes[:latest_receipt_info]
         
     | 
| 
      
 40 
     | 
    
         
            +
                    full_receipt_data = attributes[:latest_receipt] # should also be in the top-level hash if attributes[:latest_receipt_info] is there, but this won't break if it isn't
         
     | 
| 
      
 41 
     | 
    
         
            +
                    @latest = self.class.new(:receipt => attributes[:latest_receipt_info], :latest_receipt => full_receipt_data, :receipt_type => :latest)
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @expires_date = Time.at(receipt_attributes[:expires_date].to_i / 1000) if receipt_attributes[:expires_date]
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @receipt_data = attributes[:latest_receipt] if attributes[:receipt_type] == :latest # it feels wrong to include the receipt_data for the latest receipt on anything other than the latest receipt
         
     | 
| 
       34 
45 
     | 
    
         
             
                end
         
     | 
| 
       35 
46 
     | 
    
         | 
| 
       36 
47 
     | 
    
         
             
                def self.verify!(receipt_data)
         
     | 
| 
         @@ -41,7 +52,7 @@ module Itunes 
     | 
|
| 
       41 
52 
     | 
    
         
             
                  response = JSON.parse(response).with_indifferent_access
         
     | 
| 
       42 
53 
     | 
    
         
             
                  case response[:status]
         
     | 
| 
       43 
54 
     | 
    
         
             
                  when 0
         
     | 
| 
       44 
     | 
    
         
            -
                    new response 
     | 
| 
      
 55 
     | 
    
         
            +
                    new response
         
     | 
| 
       45 
56 
     | 
    
         
             
                  else
         
     | 
| 
       46 
57 
     | 
    
         
             
                    raise VerificationFailed.new(response)
         
     | 
| 
       47 
58 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -0,0 +1,2 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"receipt":{"original_purchase_date_pst":"2012-10-11 07:45:40 America/Los_Angeles", "unique_identifier":"4d69cc362c5c58ce62da68ee43721ea670907bad", "original_transaction_id":"1000000057005439", "expires_date":"1350157508197", "transaction_id":"1000000055076747", "quantity":"1", "product_id":"com.notkeepingitreal.fizzbuzz.subscription.autorenew1m", "original_purchase_date_ms":"1349966740000", "bid":"com.notkeepingitreal.fizzbuzz", "web_order_line_item_id":"1000000026553289", "bvrs":"1.0", "expires_date_formatted":"2012-10-13 19:45:08 Etc/GMT", "purchase_date":"2012-10-13 19:40:08 Etc/GMT", "purchase_date_ms":"1350157208197", "expires_date_formatted_pst":"2012-10-13 12:45:08 America/Los_Angeles", "purchase_date_pst":"2012-10-13 12:40:08 America/Los_Angeles", "original_purchase_date":"2012-10-11 14:45:40 Etc/GMT", "item_id":"570504929"}, "latest_receipt_info":{"original_purchase_date_pst":"2012-10-11 07:45:40 America/Los_Angeles", "unique_identifier":"4d79cc562c5c58ce62da68ee43721ea670907bad", "original_transaction_id":"1000000057005439", "expires_date":"1350157808000", "transaction_id":"1000000052076747", "quantity":"1", "product_id":"com.notkeepingitreal.fizzbuzz.subscription.autorenew1m", "original_purchase_date_ms":"1349966740000", "bid":"com.notkeepingitreal.fizzbuzz", "web_order_line_item_id":"1000000027293289", "bvrs":"1.0", "expires_date_formatted":"2012-10-13 19:50:08 Etc/GMT", "purchase_date":"2012-10-13 19:40:08 Etc/GMT", "purchase_date_ms":"1350157208000", "expires_date_formatted_pst":"2012-10-13 12:50:08 America/Los_Angeles", "purchase_date_pst":"2012-10-13 12:40:08 America/Los_Angeles", "original_purchase_date":"2012-10-11 14:45:40 Etc/GMT", "item_id":"570504929"}, "status":0, "latest_receipt":"junk="}
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
    
        data/spec/itunes/receipt_spec.rb
    CHANGED
    
    | 
         @@ -7,7 +7,7 @@ describe Itunes::Receipt do 
     | 
|
| 
       7 
7 
     | 
    
         
             
                  sandbox_mode do
         
     | 
| 
       8 
8 
     | 
    
         
             
                    expect do
         
     | 
| 
       9 
9 
     | 
    
         
             
                      Itunes::Receipt.verify! 'receipt-data'
         
     | 
| 
       10 
     | 
    
         
            -
                    end. 
     | 
| 
      
 10 
     | 
    
         
            +
                    end.to post_to Itunes::ENDPOINT[:sandbox]
         
     | 
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         
             
                end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
         @@ -19,7 +19,7 @@ describe Itunes::Receipt do 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  it 'should raise VerificationFailed' do
         
     | 
| 
       20 
20 
     | 
    
         
             
                    expect do
         
     | 
| 
       21 
21 
     | 
    
         
             
                      Itunes::Receipt.verify! 'invalid'
         
     | 
| 
       22 
     | 
    
         
            -
                    end. 
     | 
| 
      
 22 
     | 
    
         
            +
                    end.to raise_error Itunes::Receipt::VerificationFailed
         
     | 
| 
       23 
23 
     | 
    
         
             
                  end
         
     | 
| 
       24 
24 
     | 
    
         
             
                end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
         @@ -40,11 +40,59 @@ describe Itunes::Receipt do 
     | 
|
| 
       40 
40 
     | 
    
         
             
                    receipt.original.quantity.should be_nil
         
     | 
| 
       41 
41 
     | 
    
         
             
                    receipt.original.transaction_id.should == '1000000001479608'
         
     | 
| 
       42 
42 
     | 
    
         
             
                    receipt.original.purchase_date.should == Time.utc(2011, 2, 17, 6, 20, 57)
         
     | 
| 
      
 43 
     | 
    
         
            +
                    receipt.expires_date.should be_nil
         
     | 
| 
      
 44 
     | 
    
         
            +
                    receipt.receipt_data.should be_nil
         
     | 
| 
       43 
45 
     | 
    
         | 
| 
       44 
46 
     | 
    
         
             
                    # Those attributes are not returned from iTunes Connect Sandbox
         
     | 
| 
       45 
47 
     | 
    
         
             
                    receipt.app_item_id.should be_nil
         
     | 
| 
       46 
48 
     | 
    
         
             
                    receipt.version_external_identifier.should be_nil
         
     | 
| 
       47 
49 
     | 
    
         
             
                  end
         
     | 
| 
       48 
50 
     | 
    
         
             
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                context 'when autorenew subscription' do
         
     | 
| 
      
 53 
     | 
    
         
            +
                  before do
         
     | 
| 
      
 54 
     | 
    
         
            +
                    fake_json :autorenew_subscription
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                  it 'should return valid Receipt instance for autorenew subscription' do
         
     | 
| 
      
 58 
     | 
    
         
            +
                    original_transaction_id = '1000000057005439'
         
     | 
| 
      
 59 
     | 
    
         
            +
                    original_purchase_date = Time.utc(2012, 10, 11, 14, 45, 40)
         
     | 
| 
      
 60 
     | 
    
         
            +
                    receipt = Itunes::Receipt.verify! 'autorenew_subscription'
         
     | 
| 
      
 61 
     | 
    
         
            +
                    receipt.should be_instance_of Itunes::Receipt
         
     | 
| 
      
 62 
     | 
    
         
            +
                    receipt.quantity == 1
         
     | 
| 
      
 63 
     | 
    
         
            +
                    receipt.product_id.should == 'com.notkeepingitreal.fizzbuzz.subscription.autorenew1m'
         
     | 
| 
      
 64 
     | 
    
         
            +
                    receipt.transaction_id.should == '1000000055076747'
         
     | 
| 
      
 65 
     | 
    
         
            +
                    receipt.purchase_date.should == Time.utc(2012, 10, 13, 19, 40, 8)
         
     | 
| 
      
 66 
     | 
    
         
            +
                    receipt.bid.should == 'com.notkeepingitreal.fizzbuzz'
         
     | 
| 
      
 67 
     | 
    
         
            +
                    receipt.bvrs.should == '1.0'
         
     | 
| 
      
 68 
     | 
    
         
            +
                    receipt.original.quantity.should be_nil
         
     | 
| 
      
 69 
     | 
    
         
            +
                    receipt.original.transaction_id.should == original_transaction_id
         
     | 
| 
      
 70 
     | 
    
         
            +
                    receipt.original.purchase_date.should == original_purchase_date
         
     | 
| 
      
 71 
     | 
    
         
            +
                    receipt.expires_date.should == Time.utc(2012, 10, 13, 19, 45, 8)
         
     | 
| 
      
 72 
     | 
    
         
            +
                    receipt.receipt_data.should be_nil
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                    # Those attributes are not returned from iTunes Connect Sandbox
         
     | 
| 
      
 75 
     | 
    
         
            +
                    receipt.app_item_id.should be_nil
         
     | 
| 
      
 76 
     | 
    
         
            +
                    receipt.version_external_identifier.should be_nil
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                    latest = receipt.latest
         
     | 
| 
      
 79 
     | 
    
         
            +
                    latest.should be_instance_of Itunes::Receipt
         
     | 
| 
      
 80 
     | 
    
         
            +
                    latest.quantity == 1
         
     | 
| 
      
 81 
     | 
    
         
            +
                    latest.product_id.should == 'com.notkeepingitreal.fizzbuzz.subscription.autorenew1m'
         
     | 
| 
      
 82 
     | 
    
         
            +
                    latest.transaction_id.should == '1000000052076747'
         
     | 
| 
      
 83 
     | 
    
         
            +
                    latest.purchase_date.should == Time.utc(2012, 10, 13, 19, 40, 8)
         
     | 
| 
      
 84 
     | 
    
         
            +
                    latest.expires_date.should == Time.utc(2012, 10, 13, 19, 50, 8) # five minutes after the "old" receipt
         
     | 
| 
      
 85 
     | 
    
         
            +
                    latest.bid.should == 'com.notkeepingitreal.fizzbuzz'
         
     | 
| 
      
 86 
     | 
    
         
            +
                    latest.bvrs.should == '1.0'
         
     | 
| 
      
 87 
     | 
    
         
            +
                    latest.original.quantity.should be_nil
         
     | 
| 
      
 88 
     | 
    
         
            +
                    latest.original.transaction_id.should == original_transaction_id
         
     | 
| 
      
 89 
     | 
    
         
            +
                    latest.original.purchase_date.should == original_purchase_date
         
     | 
| 
      
 90 
     | 
    
         
            +
                    latest.receipt_data.should == 'junk='
         
     | 
| 
      
 91 
     | 
    
         
            +
                   
         
     | 
| 
      
 92 
     | 
    
         
            +
                    # Those attributes are not returned from iTunes Connect Sandbox
         
     | 
| 
      
 93 
     | 
    
         
            +
                    latest.app_item_id.should be_nil
         
     | 
| 
      
 94 
     | 
    
         
            +
                    latest.version_external_identifier.should be_nil
         
     | 
| 
      
 95 
     | 
    
         
            +
                  end
         
     | 
| 
      
 96 
     | 
    
         
            +
                end
         
     | 
| 
       49 
97 
     | 
    
         
             
              end
         
     | 
| 
       50 
     | 
    
         
            -
            end
         
     | 
| 
      
 98 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: itunes-receipt
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,12 +9,11 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
       13 
     | 
    
         
            -
            default_executable: 
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-10-15 00:00:00.000000000 Z
         
     | 
| 
       14 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
15 
     | 
    
         
             
              name: json
         
     | 
| 
       17 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       18 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       19 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       20 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -22,10 +21,15 @@ dependencies: 
     | 
|
| 
       22 
21 
     | 
    
         
             
                    version: 1.4.3
         
     | 
| 
       23 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       24 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       25 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 25 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: 1.4.3
         
     | 
| 
       26 
30 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       27 
31 
     | 
    
         
             
              name: restclient_with_cert
         
     | 
| 
       28 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 32 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       29 
33 
     | 
    
         
             
                none: false
         
     | 
| 
       30 
34 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
35 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -33,10 +37,15 @@ dependencies: 
     | 
|
| 
       33 
37 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       34 
38 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       35 
39 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 40 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 41 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 42 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 43 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 45 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       37 
46 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       38 
47 
     | 
    
         
             
              name: activesupport
         
     | 
| 
       39 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 48 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       40 
49 
     | 
    
         
             
                none: false
         
     | 
| 
       41 
50 
     | 
    
         
             
                requirements:
         
     | 
| 
       42 
51 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -44,10 +53,15 @@ dependencies: 
     | 
|
| 
       44 
53 
     | 
    
         
             
                    version: '2.3'
         
     | 
| 
       45 
54 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       46 
55 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       47 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 56 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 57 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 58 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 59 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 60 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: '2.3'
         
     | 
| 
       48 
62 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       49 
63 
     | 
    
         
             
              name: i18n
         
     | 
| 
       50 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 64 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
65 
     | 
    
         
             
                none: false
         
     | 
| 
       52 
66 
     | 
    
         
             
                requirements:
         
     | 
| 
       53 
67 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -55,10 +69,15 @@ dependencies: 
     | 
|
| 
       55 
69 
     | 
    
         
             
                    version: '0'
         
     | 
| 
       56 
70 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       57 
71 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       58 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 72 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 75 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 77 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       59 
78 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       60 
79 
     | 
    
         
             
              name: rake
         
     | 
| 
       61 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 80 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       62 
81 
     | 
    
         
             
                none: false
         
     | 
| 
       63 
82 
     | 
    
         
             
                requirements:
         
     | 
| 
       64 
83 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -66,10 +85,15 @@ dependencies: 
     | 
|
| 
       66 
85 
     | 
    
         
             
                    version: '0.8'
         
     | 
| 
       67 
86 
     | 
    
         
             
              type: :development
         
     | 
| 
       68 
87 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       69 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 88 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 89 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 90 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 91 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 92 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 93 
     | 
    
         
            +
                    version: '0.8'
         
     | 
| 
       70 
94 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       71 
95 
     | 
    
         
             
              name: rcov
         
     | 
| 
       72 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 96 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       73 
97 
     | 
    
         
             
                none: false
         
     | 
| 
       74 
98 
     | 
    
         
             
                requirements:
         
     | 
| 
       75 
99 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -77,10 +101,15 @@ dependencies: 
     | 
|
| 
       77 
101 
     | 
    
         
             
                    version: '0.9'
         
     | 
| 
       78 
102 
     | 
    
         
             
              type: :development
         
     | 
| 
       79 
103 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       80 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 104 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 105 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 106 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 107 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 108 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 109 
     | 
    
         
            +
                    version: '0.9'
         
     | 
| 
       81 
110 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       82 
111 
     | 
    
         
             
              name: rspec
         
     | 
| 
       83 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 112 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       84 
113 
     | 
    
         
             
                none: false
         
     | 
| 
       85 
114 
     | 
    
         
             
                requirements:
         
     | 
| 
       86 
115 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -88,10 +117,15 @@ dependencies: 
     | 
|
| 
       88 
117 
     | 
    
         
             
                    version: '2'
         
     | 
| 
       89 
118 
     | 
    
         
             
              type: :development
         
     | 
| 
       90 
119 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       91 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 120 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 121 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 122 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 123 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 124 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 125 
     | 
    
         
            +
                    version: '2'
         
     | 
| 
       92 
126 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       93 
127 
     | 
    
         
             
              name: fakeweb
         
     | 
| 
       94 
     | 
    
         
            -
              requirement:  
     | 
| 
      
 128 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       95 
129 
     | 
    
         
             
                none: false
         
     | 
| 
       96 
130 
     | 
    
         
             
                requirements:
         
     | 
| 
       97 
131 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -99,7 +133,12 @@ dependencies: 
     | 
|
| 
       99 
133 
     | 
    
         
             
                    version: 1.3.0
         
     | 
| 
       100 
134 
     | 
    
         
             
              type: :development
         
     | 
| 
       101 
135 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       102 
     | 
    
         
            -
              version_requirements:  
     | 
| 
      
 136 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 137 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 138 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 139 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 140 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 141 
     | 
    
         
            +
                    version: 1.3.0
         
     | 
| 
       103 
142 
     | 
    
         
             
            description: Handle iTunes In App Purchase Receipt Verification
         
     | 
| 
       104 
143 
     | 
    
         
             
            email: nov@matake.jp
         
     | 
| 
       105 
144 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -117,12 +156,12 @@ files: 
     | 
|
| 
       117 
156 
     | 
    
         
             
            - itunes-receipt.gemspec
         
     | 
| 
       118 
157 
     | 
    
         
             
            - lib/itunes.rb
         
     | 
| 
       119 
158 
     | 
    
         
             
            - lib/itunes/receipt.rb
         
     | 
| 
      
 159 
     | 
    
         
            +
            - spec/fake_json/autorenew_subscription.json
         
     | 
| 
       120 
160 
     | 
    
         
             
            - spec/fake_json/invalid.json
         
     | 
| 
       121 
161 
     | 
    
         
             
            - spec/fake_json/valid.json
         
     | 
| 
       122 
162 
     | 
    
         
             
            - spec/helpers/fake_json_helper.rb
         
     | 
| 
       123 
163 
     | 
    
         
             
            - spec/itunes/receipt_spec.rb
         
     | 
| 
       124 
164 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       125 
     | 
    
         
            -
            has_rdoc: true
         
     | 
| 
       126 
165 
     | 
    
         
             
            homepage: http://github.com/nov/itunes-receipt
         
     | 
| 
       127 
166 
     | 
    
         
             
            licenses: []
         
     | 
| 
       128 
167 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
         @@ -143,11 +182,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       143 
182 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       144 
183 
     | 
    
         
             
            requirements: []
         
     | 
| 
       145 
184 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       146 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 185 
     | 
    
         
            +
            rubygems_version: 1.8.24
         
     | 
| 
       147 
186 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       148 
187 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       149 
188 
     | 
    
         
             
            summary: Handle iTunes In App Purchase Receipt Verification
         
     | 
| 
       150 
189 
     | 
    
         
             
            test_files:
         
     | 
| 
      
 190 
     | 
    
         
            +
            - spec/fake_json/autorenew_subscription.json
         
     | 
| 
       151 
191 
     | 
    
         
             
            - spec/fake_json/invalid.json
         
     | 
| 
       152 
192 
     | 
    
         
             
            - spec/fake_json/valid.json
         
     | 
| 
       153 
193 
     | 
    
         
             
            - spec/helpers/fake_json_helper.rb
         
     |