magnetik 0.0.8 → 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.
- checksums.yaml +4 -4
- data/app/models/magnetik/credit_card.rb +6 -0
- data/app/use_cases/magnetik/create_credit_card.rb +8 -4
- data/lib/generators/active_record/templates/migration_credit_cards.rb +8 -7
- data/lib/generators/magnetik/install/templates/initializer.rb +3 -0
- data/lib/magnetik.rb +4 -0
- data/lib/magnetik/version.rb +1 -1
- metadata +16 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: dee2ddf0cd6087b8a54e77348a23d19a7c416b41
         | 
| 4 | 
            +
              data.tar.gz: baebd3d15a965daefdddef655e1ca371e1ee8555
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 82fee18060c34aae7603672fcd3be2c830ce87993050a1426f38b93c8733591c581179612f1e09a8470af434b261567798fc344ecad3527a39f484b941544272
         | 
| 7 | 
            +
              data.tar.gz: 75cd497839e9a6047fda0c313ee79f75a75077da5bf44ca0c46d91d20efec12cc1f3514c1ca5d9f4ee54e04d42c5617cfca6d4fc0ac3c528014bba94f3998eef
         | 
| @@ -11,5 +11,11 @@ module Magnetik | |
| 11 11 | 
             
                validates :exp_year, presence: true
         | 
| 12 12 | 
             
                validates :brand, presence: true
         | 
| 13 13 | 
             
                validates :name, length: { maximum: Magnetik.max_name_length }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def requires_revalidation?
         | 
| 16 | 
            +
                  return false if Magnetik.validation_interval.nil?
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  Magnetik.validation_interval.ago > last_validated_at
         | 
| 19 | 
            +
                end
         | 
| 14 20 | 
             
              end
         | 
| 15 21 | 
             
            end
         | 
| @@ -37,18 +37,21 @@ module Magnetik | |
| 37 37 | 
             
                    email: @actor.try(:email),
         | 
| 38 38 | 
             
                    description: @actor.try(:stripe_description)
         | 
| 39 39 | 
             
                  })
         | 
| 40 | 
            +
                rescue Stripe::StripeError => e
         | 
| 41 | 
            +
                  errors.add(:credit_card, "failed to save for the following reasons: #{e.message}")
         | 
| 42 | 
            +
                  false
         | 
| 40 43 | 
             
                end
         | 
| 41 44 |  | 
| 42 45 | 
             
                def create_local_customer
         | 
| 43 46 | 
             
                  @actor.update_attributes(stripe_customer_id: remote_customer.id).tap do |success|
         | 
| 44 | 
            -
                    errors.add(: | 
| 47 | 
            +
                    errors.add(:user, "failed to save") unless success
         | 
| 45 48 | 
             
                  end
         | 
| 46 49 | 
             
                end
         | 
| 47 50 |  | 
| 48 51 | 
             
                def create_remote_card
         | 
| 49 52 | 
             
                  @remote_card = remote_customer.sources.create(source: @token)
         | 
| 50 53 | 
             
                rescue Stripe::CardError => e
         | 
| 51 | 
            -
                  errors.add(: | 
| 54 | 
            +
                  errors.add(:credit_card, "failed to save for the following reasons: #{e.message}")
         | 
| 52 55 | 
             
                  return false
         | 
| 53 56 | 
             
                end
         | 
| 54 57 |  | 
| @@ -59,11 +62,12 @@ module Magnetik | |
| 59 62 | 
             
                    last_4_digits: remote_card[:last4],
         | 
| 60 63 | 
             
                    exp_month: remote_card[:exp_month],
         | 
| 61 64 | 
             
                    exp_year: remote_card[:exp_year],
         | 
| 62 | 
            -
                    brand: remote_card[:brand]
         | 
| 65 | 
            +
                    brand: remote_card[:brand],
         | 
| 66 | 
            +
                    last_validated_at: Time.current,
         | 
| 63 67 | 
             
                  }))
         | 
| 64 68 |  | 
| 65 69 | 
             
                  @local_card.save.tap do |success|
         | 
| 66 | 
            -
                    errors.add(: | 
| 70 | 
            +
                    errors.add(:credit_card, "failed to save") unless success
         | 
| 67 71 | 
             
                  end
         | 
| 68 72 | 
             
                end
         | 
| 69 73 |  | 
| @@ -1,17 +1,18 @@ | |
| 1 1 | 
             
            class MagnetikCreateCreditCards < ActiveRecord::Migration
         | 
| 2 2 | 
             
              def change
         | 
| 3 3 | 
             
                create_table :magnetik_credit_cards do |t|
         | 
| 4 | 
            -
                  t.string  :stripe_card_id
         | 
| 5 | 
            -
                  t.string  :last_4_digits
         | 
| 6 | 
            -
                  t.string  :exp_month
         | 
| 7 | 
            -
                  t.string  :exp_year
         | 
| 8 | 
            -
                  t.string  :brand
         | 
| 4 | 
            +
                  t.string  :stripe_card_id, null: false
         | 
| 5 | 
            +
                  t.string  :last_4_digits, null: false
         | 
| 6 | 
            +
                  t.string  :exp_month, null: false
         | 
| 7 | 
            +
                  t.string  :exp_year, null: false
         | 
| 8 | 
            +
                  t.string  :brand, null: false
         | 
| 9 9 | 
             
                  t.boolean :is_default
         | 
| 10 | 
            -
                  t.integer :customer_id
         | 
| 11 | 
            -
                  t.string  :customer_type
         | 
| 10 | 
            +
                  t.integer :customer_id, null: false
         | 
| 11 | 
            +
                  t.string  :customer_type, null: false
         | 
| 12 12 | 
             
                  t.index   [:customer_id, :customer_id]
         | 
| 13 13 | 
             
                  t.string  :name
         | 
| 14 14 |  | 
| 15 | 
            +
                  t.timestamp :last_validated_at, null: false
         | 
| 15 16 | 
             
                  t.timestamps null: false
         | 
| 16 17 | 
             
                end
         | 
| 17 18 | 
             
              end
         | 
    
        data/lib/magnetik.rb
    CHANGED
    
    | @@ -20,6 +20,10 @@ module Magnetik | |
| 20 20 | 
             
              mattr_accessor :max_name_length
         | 
| 21 21 | 
             
              @@max_name_length = 255
         | 
| 22 22 |  | 
| 23 | 
            +
              # Time between card validations via pre-auth:
         | 
| 24 | 
            +
              mattr_accessor :validation_interval
         | 
| 25 | 
            +
              @@validation_interval = 3.months
         | 
| 26 | 
            +
             | 
| 23 27 | 
             
              private
         | 
| 24 28 |  | 
| 25 29 | 
             
              # Default way to setup Magnetik:
         | 
    
        data/lib/magnetik/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: magnetik
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0 | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Anton Ivanopoulos
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-10-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -150,6 +150,20 @@ dependencies: | |
| 150 150 | 
             
                - - ">="
         | 
| 151 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 152 152 | 
             
                    version: '0'
         | 
| 153 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 154 | 
            +
              name: timecop
         | 
| 155 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 156 | 
            +
                requirements:
         | 
| 157 | 
            +
                - - ">="
         | 
| 158 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 159 | 
            +
                    version: '0'
         | 
| 160 | 
            +
              type: :development
         | 
| 161 | 
            +
              prerelease: false
         | 
| 162 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 163 | 
            +
                requirements:
         | 
| 164 | 
            +
                - - ">="
         | 
| 165 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 166 | 
            +
                    version: '0'
         | 
| 153 167 | 
             
            description: Magnetik is a mountable rails engine that allows a model to be turned
         | 
| 154 168 | 
             
              into a vessel for a Stripe customer, as well as providing routes for credit card
         | 
| 155 169 | 
             
              management via Stripe, including creating, updating and deleting credit cards.
         | 
| @@ -211,4 +225,3 @@ signing_key: | |
| 211 225 | 
             
            specification_version: 4
         | 
| 212 226 | 
             
            summary: Rails engine for credit card management via Stripe.
         | 
| 213 227 | 
             
            test_files: []
         | 
| 214 | 
            -
            has_rdoc: 
         |