spackle-ruby 0.0.19 → 0.0.20

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a068195f85f43b672e48420f8020bfc91f02122894cad7f4fc1f04f511c5b91
4
- data.tar.gz: 1bb74da02b2774c447c6dacb77d379bb9c4335fde6c67253d49ee6a959e879a3
3
+ metadata.gz: 5e308f6efcd3b1382dbe36a32a0de17b053b02caab96e82922fefed84ae02252
4
+ data.tar.gz: 2ac13819cd9ec91fa3fc92f3dc2025851e179c9b39895040ac75b17de9bc01c1
5
5
  SHA512:
6
- metadata.gz: 77aa643922bdcb3f22c07bb9e8521a7ca0d81802f789185a98ef460950a409bd9278654ab92dc8f4d0603b576887032bc6eb321daa4b5821847a5ba6a86f1c51
7
- data.tar.gz: 3d31d216ee9473293ca70ae4bd4497d0a9170fb2f6d555e1402dc31366b364d588df6cc3c6a7b7ae3ce4fd5f8545efbcc502cbfe43354871988c8223f57455d9
6
+ metadata.gz: 533f9b6ece5e3cf29a1da44bd95d8bc8241b6bb517e149b3413f9e4e0c9e0e33a998d148720c4ef6b968310e41601d40c608a3d062a25961841981e794bccb54
7
+ data.tar.gz: 1feaa3357a5bfb08e11813743ba864ca0084ad24d7c57ead7034e51d86bcc09208d5cd2e72c3229be5a4a15d3a94a5835b560ec4eb22dbfbca08413a7d00b637
data/README.md CHANGED
@@ -25,7 +25,7 @@ gem 'spackle-ruby'
25
25
  ```
26
26
 
27
27
  ### Configure your environment
28
- In order to use Spackle, you need to configure your API key on the `Spackle` module. You can find your API key in Spackle app [settings page](https://dashboard.stripe.com/settings/apps/so.spackle.stripe).
28
+ In order to use Spackle, you need to configure your secret key on the `Spackle` module. You can find your secret key in Spackle app [settings page](https://dashboard.stripe.com/settings/apps/so.spackle.stripe).
29
29
 
30
30
  ```ruby
31
31
  require 'spackle'
@@ -33,14 +33,6 @@ require 'spackle'
33
33
  Spackle.api_key = "<api key>"
34
34
  ```
35
35
 
36
- ### Bootstrap the client (optional)
37
-
38
- The Spackle client requires a single initialization step that includes a network request. To front load this process, you can call the `bootstrap` method in your codebase.
39
-
40
- ```ruby
41
- Spackle.bootstrap()
42
- ```
43
-
44
36
  ## Usage
45
37
 
46
38
  ### Pricing tables
@@ -59,6 +51,8 @@ pricing_table = Spackle::PricingTable.retrieve("abcde123")
59
51
  intervals: string[]
60
52
  products: {
61
53
  id: string
54
+ name: string
55
+ description: string
62
56
  features: {
63
57
  id: string
64
58
  name: string
@@ -67,13 +61,14 @@ pricing_table = Spackle::PricingTable.retrieve("abcde123")
67
61
  value_flag: boolean
68
62
  value_limit: number | null
69
63
  }[]
70
- name: string
71
64
  prices: {
72
65
  month?: {
66
+ id: string
73
67
  unit_amount: number
74
68
  currency: string
75
69
  }
76
70
  year?: {
71
+ id: string
77
72
  unit_amount: number
78
73
  currency: string
79
74
  }
@@ -168,7 +163,7 @@ Then configure the file store in your application:
168
163
  Spackle.store = Spackle::FileStore.new('/app/spackle.json')
169
164
  ```
170
165
 
171
- ## Usage in test environments
166
+ #### Usage in test environments
172
167
 
173
168
  In production, Spackle requires a valid Stripe customer. However, that is not ideal in testing or some development environments. As an alternative, you can use an in-memory store to test your application with seed data.
174
169
 
@@ -4,13 +4,11 @@ module Spackle
4
4
  class SpackleConfiguration
5
5
  attr_accessor :api_key
6
6
  attr_accessor :api_base
7
- attr_accessor :edge_base
8
7
  attr_reader :logger
9
8
  attr_reader :version
10
9
 
11
10
  def initialize
12
11
  @api_base = 'https://api.spackle.so/v1'
13
- @edge_base = 'https://us-west-2.edge.spackle.so'
14
12
  @log_level = Logger::WARN
15
13
  @logger = Logger.new(STDOUT, level: @log_level)
16
14
  @version = 1
@@ -28,7 +26,7 @@ module Spackle
28
26
 
29
27
  def store()
30
28
  if @store == nil
31
- @store = EdgeStore.new
29
+ @store = ApiStore.new
32
30
  end
33
31
  @store
34
32
  end
@@ -0,0 +1,30 @@
1
+ require 'faraday'
2
+ require "faraday/net_http_persistent"
3
+ require 'json'
4
+ require 'logger'
5
+
6
+ module Spackle
7
+ class ApiStore < BaseStore
8
+ def initialize()
9
+ @api = Faraday.new(
10
+ url: Spackle.api_base,
11
+ headers: {
12
+ 'Authorization' => "Bearer #{Spackle.api_key}",
13
+ 'X-Spackle-Schema-Version' => Spackle.version.to_s,
14
+ }
15
+ ) do |faraday|
16
+ faraday.adapter :net_http_persistent
17
+ end
18
+ end
19
+
20
+ def get_customer_data(id)
21
+ response = @api.get("/customers/#{id}/state")
22
+
23
+ if response.status != 200
24
+ raise SpackleError.new "Customer #{id} not found"
25
+ end
26
+
27
+ return JSON.parse(response.body)
28
+ end
29
+ end
30
+ end
data/lib/spackle.rb CHANGED
@@ -8,7 +8,7 @@ require 'spackle/util'
8
8
  require 'spackle/waiters'
9
9
 
10
10
  require 'spackle/stores/base'
11
- require 'spackle/stores/edge'
11
+ require 'spackle/stores/api'
12
12
  require 'spackle/stores/file'
13
13
  require 'spackle/stores/memory'
14
14
 
@@ -28,7 +28,6 @@ module Spackle
28
28
 
29
29
  def_delegators :@config, :api_key, :api_key=
30
30
  def_delegators :@config, :api_base, :api_base=
31
- def_delegators :@config, :edge_base, :edge_base=
32
31
  def_delegators :@config, :log_level, :log_level=
33
32
  def_delegators :@config, :store, :store=
34
33
  def_delegators :@config, :logger, :logger=
data/spackle.gemspec CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH.unshift(::File.join(::File.dirname(__FILE__), "lib"))
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "spackle-ruby"
5
- s.version = "0.0.19"
5
+ s.version = "0.0.20"
6
6
  s.summary = "Spackle Ruby gem"
7
7
  s.description = "Spackle is the easiest way to integrate your Ruby app with Stripe Billing. " \
8
8
  "See https://www.spackle.so for details."
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spackle-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spackle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-09-08 00:00:00.000000000 Z
11
+ date: 2024-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -125,8 +125,8 @@ files:
125
125
  - lib/spackle/customer.rb
126
126
  - lib/spackle/pricing_table.rb
127
127
  - lib/spackle/spackle_configuration.rb
128
+ - lib/spackle/stores/api.rb
128
129
  - lib/spackle/stores/base.rb
129
- - lib/spackle/stores/edge.rb
130
130
  - lib/spackle/stores/file.rb
131
131
  - lib/spackle/stores/memory.rb
132
132
  - lib/spackle/util.rb
@@ -1,51 +0,0 @@
1
- require 'faraday'
2
- require "faraday/net_http_persistent"
3
- require 'json'
4
- require 'logger'
5
-
6
- module Spackle
7
- class EdgeStore < BaseStore
8
- def initialize()
9
- @edge = Faraday.new(
10
- url: Spackle.edge_base,
11
- headers: {
12
- 'Authorization' => "Bearer #{Spackle.api_key}",
13
- 'X-Spackle-Schema-Version' => Spackle.version.to_s,
14
- }
15
- ) do |faraday|
16
- faraday.adapter :net_http_persistent
17
- end
18
-
19
- @api = Faraday.new(
20
- url: Spackle.api_base,
21
- headers: {
22
- 'Authorization' => "Bearer #{Spackle.api_key}",
23
- 'X-Spackle-Schema-Version' => Spackle.version.to_s,
24
- }
25
- ) do |faraday|
26
- faraday.adapter :net_http_persistent
27
- end
28
- end
29
-
30
- def get_customer_data(id)
31
- response = @edge.get("/customers/#{id}/state")
32
-
33
- if response.status != 200
34
- return fetch_state_from_api(id)
35
- end
36
-
37
- return JSON.parse(response.body)
38
- end
39
-
40
- def fetch_state_from_api(id)
41
- Util.log_warn("Customer #{id} not found. Fetching from API...")
42
- response = @api.get(Spackle.api_base + "/customers/#{id}/state")
43
-
44
- if response.status != 200
45
- raise SpackleError.new "Customer #{id} not found"
46
- end
47
-
48
- return JSON.parse(response.body)
49
- end
50
- end
51
- end