iterable-api-client 0.5.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  module Iterable
2
4
  ##
3
5
  #
@@ -21,6 +23,15 @@ module Iterable
21
23
  # @param attrs [Hash] Additional data to update or add
22
24
  #
23
25
  # @return [Iterable::Response] A response object
26
+ sig do
27
+ params(
28
+ email: String,
29
+ attrs: T::Hash[
30
+ T.any(Symbol, String),
31
+ T.any(T::Boolean, String, Integer, Float)
32
+ ]
33
+ ).returns(Iterable::Response)
34
+ end
24
35
  def update(email, attrs = {})
25
36
  attrs['email'] = email
26
37
  Iterable.request(conf, '/users/update').post(attrs)
@@ -36,6 +47,16 @@ module Iterable
36
47
  # @return [Iterable::Response] A response object
37
48
  #
38
49
  # @note User fields can be email [String], dataFields [Hash], or userId [String]
50
+ sig do
51
+ params(
52
+ users: T::Array[
53
+ T::Hash[
54
+ T.any(Symbol, String),
55
+ T.any(T::Boolean, String, Integer, Float, Hash)
56
+ ]
57
+ ]
58
+ ).returns(Iterable::Response)
59
+ end
39
60
  def bulk_update(users = [])
40
61
  Iterable.request(conf, '/users/bulkUpdate').post(users: users)
41
62
  end
@@ -49,6 +70,15 @@ module Iterable
49
70
  # @param attrs [Hash] Additional data to update
50
71
  #
51
72
  # @return [Iterable::Response] A response object
73
+ sig do
74
+ params(
75
+ email: String,
76
+ attrs: T::Hash[
77
+ T.any(Symbol, String),
78
+ T.any(T::Boolean, String, Integer, Float)
79
+ ]
80
+ ).returns(Iterable::Response)
81
+ end
52
82
  def update_subscriptions(email, attrs = {})
53
83
  attrs['email'] = email
54
84
  Iterable.request(conf, '/users/updateSubscriptions').post(attrs)
@@ -65,6 +95,16 @@ module Iterable
65
95
  #
66
96
  # @note Refer to [Iterable::Users#update_subscriptions] for what subscription
67
97
  # information is needed such as email
98
+ sig do
99
+ params(
100
+ subscriptions: T::Array[
101
+ T::Hash[
102
+ T.any(Symbol, String),
103
+ T.any(T::Boolean, String, Integer, Float, Hash)
104
+ ]
105
+ ]
106
+ ).returns(Iterable::Response)
107
+ end
68
108
  def bulk_update_subscriptions(subscriptions = [])
69
109
  attrs = { updateSubscriptionsRequests: subscriptions }
70
110
  Iterable.request(conf, '/users/bulkUpdateSubscriptions').post(attrs)
@@ -77,6 +117,7 @@ module Iterable
77
117
  # @param email [String] The email of the user to get
78
118
  #
79
119
  # @return [Iterable::Response] A response object
120
+ sig { params(email: String).returns(Iterable::Response) }
80
121
  def for_email(email)
81
122
  Iterable.request(conf, "/users/#{email}").get
82
123
  end
@@ -88,6 +129,12 @@ module Iterable
88
129
  # @param email [String] The email of the user to get
89
130
  #
90
131
  # @return [Iterable::Response] A response object
132
+ sig do
133
+ params(
134
+ email: String,
135
+ new_email: String
136
+ ).returns(Iterable::Response)
137
+ end
91
138
  def update_email(email, new_email)
92
139
  attrs = { currentEmail: email, newEmail: new_email }
93
140
  Iterable.request(conf, '/users/updateEmail').post(attrs)
@@ -100,6 +147,7 @@ module Iterable
100
147
  # @param email [String] The email of the user to delete
101
148
  #
102
149
  # @return [Iterable::Response] A response object
150
+ sig { params(email: String).returns(Iterable::Response) }
103
151
  def delete(email)
104
152
  Iterable.request(conf, "/users/#{email}").delete
105
153
  end
@@ -111,6 +159,7 @@ module Iterable
111
159
  # @param user_id [String] The userId of the user to delete
112
160
  #
113
161
  # @return [Iterable::Response] A response object
162
+ sig { params(user_id: T.any(String, Integer)).returns(Iterable::Response) }
114
163
  def delete_by_id(user_id)
115
164
  Iterable.request(conf, "/users/byUserId/#{user_id}").delete
116
165
  end
@@ -122,6 +171,7 @@ module Iterable
122
171
  # @param user_id [String] The user ID of the user to get
123
172
  #
124
173
  # @return [Iterable::Response] A response object
174
+ sig { params(user_id: T.any(String, Integer)).returns(Iterable::Response) }
125
175
  def for_id(user_id)
126
176
  Iterable.request(conf, "/users/byUserId/#{user_id}").get
127
177
  end
@@ -131,6 +181,7 @@ module Iterable
131
181
  # Get the user fields with mappings from field to type
132
182
  #
133
183
  # @return [Iterable::Response] A response object
184
+ sig { returns(Iterable::Response) }
134
185
  def fields
135
186
  Iterable.request(conf, '/users/getFields').get
136
187
  end
@@ -146,6 +197,16 @@ module Iterable
146
197
  # @return [Iterable::Response] A response object
147
198
  #
148
199
  # @note An email or userId is required
200
+ sig do
201
+ params(
202
+ email: String,
203
+ token: String,
204
+ attrs: T::Hash[
205
+ T.any(Symbol, String),
206
+ T.any(T::Boolean, String, Integer, Float, Hash)
207
+ ]
208
+ ).returns(Iterable::Response)
209
+ end
149
210
  def register_browser_token(email, token, attrs = {})
150
211
  attrs[:email] = email
151
212
  attrs[:browserToken] = token
@@ -163,6 +224,13 @@ module Iterable
163
224
  # @return [Iterable::Response] A response object
164
225
  #
165
226
  # @note An email or userId is required
227
+ sig do
228
+ params(
229
+ token: String,
230
+ email: T.nilable(String),
231
+ user_id: T.nilable(T.any(String, Integer))
232
+ ).returns(Iterable::Response)
233
+ end
166
234
  def disable_device(token, email = nil, user_id = nil)
167
235
  attrs = { token: token }
168
236
  attrs[:email] = email if email
@@ -180,6 +248,17 @@ module Iterable
180
248
  # @param params [Hash] Additional params to use to filter messages further
181
249
  #
182
250
  # @return [Iterable::Response] A response object
251
+ sig do
252
+ params(
253
+ email: String,
254
+ start_time: T.nilable(T.any(Time, Date)),
255
+ end_time: T.nilable(T.any(Time, Date)),
256
+ params: T::Hash[
257
+ T.any(Symbol, String),
258
+ T.any(T::Boolean, String, Integer, Float, Hash)
259
+ ]
260
+ ).returns(Iterable::Response)
261
+ end
183
262
  def sent_messages(email, start_time = nil, end_time = nil, params = {})
184
263
  params[:email] = email
185
264
  params[:startTime] = start_time.to_s if start_time
@@ -195,6 +274,7 @@ module Iterable
195
274
  # @param email [String] User email to forget
196
275
  #
197
276
  # @return [Iterable::Response] A response object
277
+ sig { params(email: String).returns(Iterable::Response) }
198
278
  def forget(email)
199
279
  attrs = { email: email }
200
280
  Iterable.request(conf, '/users/forget').post(attrs)
@@ -1,3 +1,5 @@
1
+ # typed: true
2
+
1
3
  module Iterable
2
4
  ##
3
5
  #
@@ -22,6 +24,15 @@ module Iterable
22
24
  # @return [Iterable::Response] A response object
23
25
  #
24
26
  # @note An email or listId is required to trigger a workflow
27
+ sig do
28
+ params(
29
+ workflow_id: T.any(String, Integer),
30
+ attrs: T::Hash[
31
+ T.any(Symbol, String),
32
+ T.any(T::Boolean, String, Integer, Float, Hash)
33
+ ]
34
+ ).returns(Iterable::Response)
35
+ end
25
36
  def trigger(workflow_id, attrs = {})
26
37
  attrs['workflowId'] = workflow_id
27
38
  Iterable.request(conf, '/workflows/triggerWorkflow').post(attrs)
@@ -1 +1,6 @@
1
- require_relative './iterable' # rubocop:disable Style/FileName
1
+ # rubocop:disable Naming/FileName
2
+ # typed: strict
3
+
4
+ require_relative 'iterable'
5
+
6
+ # rubocop:enable Naming/FileName
data/lib/iterable.rb CHANGED
@@ -1,6 +1,9 @@
1
+ # typed: true
2
+
1
3
  require 'json'
2
4
  require 'net/http'
3
5
  require 'uri'
6
+ require 'sorbet-runtime'
4
7
 
5
8
  require 'multi_json'
6
9
 
@@ -42,6 +45,8 @@ files.each { |path| require_relative "./iterable/#{path}" }
42
45
  #
43
46
  # Iterable module for API interactions
44
47
  module Iterable
48
+ extend T::Sig
49
+
45
50
  DATE_FORMAT = '%Y-%m-%d'.freeze
46
51
 
47
52
  ##
@@ -53,6 +58,7 @@ module Iterable
53
58
  # Iterable.configure do |conf|
54
59
  # conf.token = 'secret-token'
55
60
  # end
61
+ sig { params(block: T.proc.params(arg0: T.untyped).void).returns(Iterable::Config) }
56
62
  module_function def configure(&block)
57
63
  config.tap(&block)
58
64
  end
@@ -60,12 +66,20 @@ module Iterable
60
66
  ##
61
67
  #
62
68
  # @return [Iterable::Config] The default config for API endpoints
69
+ sig { returns(Iterable::Config) }
63
70
  module_function def config
64
71
  @config ||= Config.new
65
72
  end
66
73
 
67
74
  # @!visibility private
75
+ sig do
76
+ params(
77
+ conf: Iterable::Config,
78
+ path: String,
79
+ params: Hash
80
+ ).returns(Iterable::Request)
81
+ end
68
82
  module_function def request(conf, path, params = {})
69
- Request.new conf, path, params
83
+ T.let(Request.new(conf, path, params), Iterable::Request)
70
84
  end
71
85
  end
@@ -1 +1,3 @@
1
- require_relative './iterable'
1
+ # typed: strict
2
+
3
+ require_relative 'iterable'
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iterable-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chavez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
@@ -35,260 +35,36 @@ cert_chain:
35
35
  JWT1CLPse7JUSW9NGp9hbZqX+FdmVho8u3BpQwtAvZB2dIiRLcaqEqxBRnt4jHCq
36
36
  vGIdgu0GJEzPUTqCcDfDQUuNIvjN04ZHfnA5Q3m/I6jypQHs9LNqpo1BQzk=
37
37
  -----END CERTIFICATE-----
38
- date: 2023-11-03 00:00:00.000000000 Z
38
+ date: 2023-12-16 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: multi_json
42
42
  requirement: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 1.12.0
47
- type: :runtime
48
- prerelease: false
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 1.12.0
54
- - !ruby/object:Gem::Dependency
55
- name: dotenv
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: 2.7.1
61
- type: :development
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: 2.7.1
68
- - !ruby/object:Gem::Dependency
69
- name: gemcutter
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: 0.7.1
75
- type: :development
76
- prerelease: false
77
- version_requirements: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: 0.7.1
82
- - !ruby/object:Gem::Dependency
83
- name: pry
84
- requirement: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: 0.14.1
89
- type: :development
90
- prerelease: false
91
- version_requirements: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: 0.14.1
96
- - !ruby/object:Gem::Dependency
97
- name: pry-byebug
98
- requirement: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: 3.8.0
103
- type: :development
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: 3.8.0
110
- - !ruby/object:Gem::Dependency
111
- name: pry-doc
112
- requirement: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: 1.3.0
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - "~>"
122
- - !ruby/object:Gem::Version
123
- version: 1.3.0
124
- - !ruby/object:Gem::Dependency
125
- name: rake
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: 13.0.0
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
43
  requirements:
135
44
  - - "~>"
136
45
  - !ruby/object:Gem::Version
137
- version: 13.0.0
138
- - !ruby/object:Gem::Dependency
139
- name: redcarpet
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: 3.5.0
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: 3.5.0
152
- - !ruby/object:Gem::Dependency
153
- name: rspec
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: 3.11.0
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: 3.11.0
166
- - !ruby/object:Gem::Dependency
167
- name: rubocop
168
- requirement: !ruby/object:Gem::Requirement
169
- requirements:
170
- - - "~>"
171
- - !ruby/object:Gem::Version
172
- version: 1.29.1
173
- type: :development
174
- prerelease: false
175
- version_requirements: !ruby/object:Gem::Requirement
176
- requirements:
177
- - - "~>"
178
- - !ruby/object:Gem::Version
179
- version: 1.29.1
180
- - !ruby/object:Gem::Dependency
181
- name: rubocop-performance
182
- requirement: !ruby/object:Gem::Requirement
183
- requirements:
184
- - - "~>"
185
- - !ruby/object:Gem::Version
186
- version: 1.13.3
187
- type: :development
188
- prerelease: false
189
- version_requirements: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: 1.13.3
194
- - !ruby/object:Gem::Dependency
195
- name: rubocop-rspec
196
- requirement: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: 2.11.0
201
- type: :development
202
- prerelease: false
203
- version_requirements: !ruby/object:Gem::Requirement
204
- requirements:
205
- - - "~>"
206
- - !ruby/object:Gem::Version
207
- version: 2.11.0
208
- - !ruby/object:Gem::Dependency
209
- name: simplecov
210
- requirement: !ruby/object:Gem::Requirement
211
- requirements:
212
- - - "~>"
213
- - !ruby/object:Gem::Version
214
- version: 0.21.2
215
- type: :development
216
- prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
218
- requirements:
219
- - - "~>"
220
- - !ruby/object:Gem::Version
221
- version: 0.21.2
222
- - !ruby/object:Gem::Dependency
223
- name: simplecov-cobertura
224
- requirement: !ruby/object:Gem::Requirement
225
- requirements:
226
- - - "~>"
227
- - !ruby/object:Gem::Version
228
- version: 2.1.0
229
- type: :development
230
- prerelease: false
231
- version_requirements: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: 2.1.0
236
- - !ruby/object:Gem::Dependency
237
- name: typhoeus
238
- requirement: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: 1.4.0
243
- type: :development
244
- prerelease: false
245
- version_requirements: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - "~>"
248
- - !ruby/object:Gem::Version
249
- version: 1.4.0
250
- - !ruby/object:Gem::Dependency
251
- name: vcr
252
- requirement: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - "~>"
255
- - !ruby/object:Gem::Version
256
- version: 3.0.3
257
- type: :development
258
- prerelease: false
259
- version_requirements: !ruby/object:Gem::Requirement
260
- requirements:
261
- - - "~>"
262
- - !ruby/object:Gem::Version
263
- version: 3.0.3
264
- - !ruby/object:Gem::Dependency
265
- name: webmock
266
- requirement: !ruby/object:Gem::Requirement
267
- requirements:
268
- - - "~>"
269
- - !ruby/object:Gem::Version
270
- version: 3.14.0
271
- type: :development
46
+ version: 1.15.0
47
+ type: :runtime
272
48
  prerelease: false
273
49
  version_requirements: !ruby/object:Gem::Requirement
274
50
  requirements:
275
51
  - - "~>"
276
52
  - !ruby/object:Gem::Version
277
- version: 3.14.0
53
+ version: 1.15.0
278
54
  - !ruby/object:Gem::Dependency
279
- name: yard
55
+ name: sorbet-runtime
280
56
  requirement: !ruby/object:Gem::Requirement
281
57
  requirements:
282
- - - "~>"
58
+ - - ">="
283
59
  - !ruby/object:Gem::Version
284
- version: 0.9.11
285
- type: :development
60
+ version: '0'
61
+ type: :runtime
286
62
  prerelease: false
287
63
  version_requirements: !ruby/object:Gem::Requirement
288
64
  requirements:
289
- - - "~>"
65
+ - - ">="
290
66
  - !ruby/object:Gem::Version
291
- version: 0.9.11
67
+ version: '0'
292
68
  description: Ruby gem for the Iterable REST API
293
69
  email: contact@el-chavez.me
294
70
  executables: []
@@ -298,6 +74,7 @@ extra_rdoc_files:
298
74
  files:
299
75
  - README.md
300
76
  - bin/console
77
+ - bin/tapioca
301
78
  - lib/iterable-api-client.rb
302
79
  - lib/iterable.rb
303
80
  - lib/iterable/api_resource.rb
@@ -335,7 +112,7 @@ licenses:
335
112
  - MIT
336
113
  metadata:
337
114
  rubygems_mfa_required: 'true'
338
- post_install_message:
115
+ post_install_message:
339
116
  rdoc_options:
340
117
  - "--charset=UTF-8"
341
118
  - "--main=README.md"
@@ -345,15 +122,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
345
122
  requirements:
346
123
  - - ">="
347
124
  - !ruby/object:Gem::Version
348
- version: 2.6.0
125
+ version: 3.0.0
349
126
  required_rubygems_version: !ruby/object:Gem::Requirement
350
127
  requirements:
351
128
  - - ">="
352
129
  - !ruby/object:Gem::Version
353
130
  version: '0'
354
131
  requirements: []
355
- rubygems_version: 3.1.6
356
- signing_key:
132
+ rubygems_version: 3.4.10
133
+ signing_key:
357
134
  specification_version: 4
358
135
  summary: Iterable REST API Client
359
136
  test_files: []
metadata.gz.sig CHANGED
Binary file