spackle-ruby 0.0.17 → 0.0.19.beta

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32480a021112248d161f422541c003cbe176944ac291b40eb3bfd108bd2b8a64
4
- data.tar.gz: a95dc99b789dd3640ba204b1ec789ed51e94507594cfa92f929fa87003fb46cf
3
+ metadata.gz: cba8dd3558c9f2fd420c6012270d7a64b75a47abbeb7e78def87a708a7da9f8e
4
+ data.tar.gz: f0e6d00f8074fd77d142a27c041dbda74423b75146d66ed2037e90a2dc9f8461
5
5
  SHA512:
6
- metadata.gz: c32a949157acd858345046696e28754414b55716bcdefd057ed72023049a87697a8fa375d002745f3e4fedec7ff15c9db2fa6b7bf0768253150039bc0dad1f76
7
- data.tar.gz: 18c1f836c78568b3a05ee87f03a60adfc254ee6516129320246ceac812947b4c7c5fe6beb29a3deabfa98caa0ecfbf2222c79d9caa228a0a1a461c630a8c6868
6
+ metadata.gz: 63867ff2ce77badd85923ab5b1cc73445b13e4bd7805256fc6ca4304ae824f725cfcbae90c8cdcc07e25a5a00a552899c0f07291e65d6dbc2f9051a4c8f5ecb3
7
+ data.tar.gz: 934bb37bc4be6ac675663a499ecb2885d68c7f59ea536c83f538f71625d4ee0894b1f2e3366f319307479f050a6f721323d731327087620a6684c8ec7ebbe992
data/README.md CHANGED
@@ -43,7 +43,48 @@ Spackle.bootstrap()
43
43
 
44
44
  ## Usage
45
45
 
46
- ### Fetch a customer
46
+ ### Pricing tables
47
+
48
+ #### Fetch a pricing table
49
+
50
+ ```ruby
51
+ pricing_table = Spackle::PricingTable.retrieve("abcde123")
52
+ ```
53
+
54
+ #### Pricing table object
55
+ ```ts
56
+ {
57
+ id: string
58
+ name: string
59
+ intervals: string[]
60
+ products: {
61
+ id: string
62
+ features: {
63
+ id: string
64
+ name: string
65
+ key: string
66
+ type: number
67
+ value_flag: boolean
68
+ value_limit: number | null
69
+ }[]
70
+ name: string
71
+ prices: {
72
+ month?: {
73
+ unit_amount: number
74
+ currency: string
75
+ }
76
+ year?: {
77
+ unit_amount: number
78
+ currency: string
79
+ }
80
+ }
81
+ }[]
82
+ }
83
+ ```
84
+
85
+ ### Entitlements
86
+
87
+ #### Fetch a customer
47
88
 
48
89
  Spackle uses stripe ids as references to customer features.
49
90
 
@@ -51,19 +92,19 @@ Spackle uses stripe ids as references to customer features.
51
92
  customer = Spackle::Customer.retrieve("cus_00000000")
52
93
  ```
53
94
 
54
- ### Verify feature access
95
+ #### Verify feature access
55
96
 
56
97
  ```ruby
57
98
  customer.enabled("feature_key")
58
99
  ```
59
100
 
60
- ### Fetch a feature limit
101
+ #### Fetch a feature limit
61
102
 
62
103
  ```ruby
63
104
  customer.limit("feature_key")
64
105
  ```
65
106
 
66
- ### Examine a customer's subscriptions
107
+ #### Examine a customer's subscriptions
67
108
 
68
109
  A customer's current subscriptions are available on the `subscriptions` property. These are valid `Stripe::Subscription` objects as defined in the [Stripe Ruby library](https://stripe.com/docs/api/subscriptions/object?lang=ruby).
69
110
 
@@ -71,7 +112,7 @@ A customer's current subscriptions are available on the `subscriptions` property
71
112
  customer.subscriptions
72
113
  ```
73
114
 
74
- ## Waiters
115
+ #### Waiters
75
116
 
76
117
  There is a brief delay between when an action takes place in Stripe and when it is reflected in Spackle. To account for this, Spackle provides a `Waiters` module that can be used to wait for a Stripe object to be updated and replicated.
77
118
 
@@ -90,22 +131,7 @@ There is a brief delay between when an action takes place in Stripe and when it
90
131
 
91
132
  These will block until Spackle is updated with the latest information from Stripe or until a timeout occurs.
92
133
 
93
- ## Logging
94
- The Spackle Ruby library emits logs as it performs various internal tasks. You can control the verbosity of Spackle's logging a few different ways:
95
-
96
- 1. Set the environment variable SPACKLE_LOG to the value `debug`, `info`, `warn` or `error`
97
-
98
- ```sh
99
- $ export SPACKLE_LOG=debug
100
- ```
101
-
102
- 2. Set Spackle.log_level:
103
-
104
- ```ruby
105
- Spackle.log_level = 'debug'
106
- ```
107
-
108
- ## Usage in development environments
134
+ #### Usage in development environments
109
135
  In production, Spackle requires a valid Stripe customer. However, that is not development environments where state needs to be controlled. As an alternative, you can use a file store to test your application with seed data.
110
136
 
111
137
  ```json
@@ -172,3 +198,18 @@ Spackle.store.set_customer_data("cus_000000000", {
172
198
  ```
173
199
 
174
200
  **Note:** The in-memory store is not thread-safe and state will reset on each application restart.
201
+
202
+ ## Logging
203
+ The Spackle Ruby library emits logs as it performs various internal tasks. You can control the verbosity of Spackle's logging a few different ways:
204
+
205
+ 1. Set the environment variable SPACKLE_LOG to the value `debug`, `info`, `warn` or `error`
206
+
207
+ ```sh
208
+ $ export SPACKLE_LOG=debug
209
+ ```
210
+
211
+ 2. Set Spackle.log_level:
212
+
213
+ ```ruby
214
+ Spackle.log_level = 'debug'
215
+ ```
@@ -0,0 +1,22 @@
1
+ module Spackle
2
+ class PricingTable
3
+ def self.retrieve(id)
4
+ @api = Faraday.new(
5
+ url: Spackle.api_base,
6
+ headers: {
7
+ 'Authorization' => "Bearer #{Spackle.api_key}",
8
+ }
9
+ ) do |faraday|
10
+ faraday.adapter :net_http_persistent
11
+ end
12
+
13
+ response = @api.get(Spackle.api_base + "/pricing_tables/#{id}")
14
+
15
+ if response.status != 200
16
+ raise SpackleError.new "Pricing table #{id} not found"
17
+ end
18
+
19
+ return JSON.parse(response.body)
20
+ end
21
+ end
22
+ end
data/lib/spackle.rb CHANGED
@@ -2,6 +2,7 @@ require 'logger'
2
2
  require 'forwardable'
3
3
 
4
4
  require 'spackle/customer'
5
+ require 'spackle/pricing_table'
5
6
  require 'spackle/spackle_configuration'
6
7
  require 'spackle/util'
7
8
  require 'spackle/waiters'
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.17"
5
+ s.version = "0.0.19.beta"
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."
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  }
20
20
 
21
21
  s.add_dependency "faraday", "~> 2.7"
22
+ s.add_dependency "faraday-net_http_persistent", '~> 2.0'
22
23
  s.add_dependency "nokogiri", "~> 1.13"
23
24
  s.add_dependency "stripe", "~> 8.3"
24
25
 
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.17
4
+ version: 0.0.19.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spackle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-24 00:00:00.000000000 Z
11
+ date: 2023-09-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday-net_http_persistent
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: nokogiri
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -109,6 +123,7 @@ files:
109
123
  - bin/spackle-console
110
124
  - lib/spackle.rb
111
125
  - lib/spackle/customer.rb
126
+ - lib/spackle/pricing_table.rb
112
127
  - lib/spackle/spackle_configuration.rb
113
128
  - lib/spackle/stores/base.rb
114
129
  - lib/spackle/stores/edge.rb
@@ -137,9 +152,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
152
  version: '0'
138
153
  required_rubygems_version: !ruby/object:Gem::Requirement
139
154
  requirements:
140
- - - ">="
155
+ - - ">"
141
156
  - !ruby/object:Gem::Version
142
- version: '0'
157
+ version: 1.3.1
143
158
  requirements: []
144
159
  rubygems_version: 3.4.10
145
160
  signing_key: