iterable-api-client 0.3.1 → 0.3.2

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: 0bab6fa0d7ec2605be61ecfd26792a640dca6ce7e02fc35b0dba6be18e3953f5
4
- data.tar.gz: ba119fcdcf14faf716a8508c01256012a46d753c27dbc4ee10c7e9c1a131ecbd
3
+ metadata.gz: b456f80ce650910ada263cdb96b28a5fd188dd5afcc4aa44813e0b3892d5d946
4
+ data.tar.gz: 308c15224339eb8a859cf3d9f6491907595d58da5d8bcc46c3f8223ddd356660
5
5
  SHA512:
6
- metadata.gz: 8fa2ea2af4567a60948c59b6e2270a38d368774b1f81d543dbe50e4bdab2f1ee605c917cd09e6259917b3b95b79306312cf4ff507c6aa7336416e686e96b6b4a
7
- data.tar.gz: b96fda871132331ed69d0414b1e93dad0fb6383d82854ed35a33026de29d850191c2c413ed635c491b9976929329fe4b0c2768504d336af5a872ade62dc380fc
6
+ metadata.gz: 57c4ad6a3f16d3f7ab4b490bedf27b028f24f2ae1c1de9d79815740d3398d04aeffa0b42543de150a1bec6a988f3821f6f970605beb5da9a7a7890e95fcb49a2
7
+ data.tar.gz: ae76c13bcb47302c41ca6b4a763b6dd53b6669da101b53f927500c73584facd143c0dbbedd922baacfea6806b82f52da84f2c2592f3255d6e7fed580ad152c36
checksums.yaml.gz.sig CHANGED
@@ -1,5 +1 @@
1
- ����b��� 1-���bA���p�mfEs m��HՅ�q���V�-S>^�U
2
- YZ��ͼ�;�3��]2�s�L\��U��[�;i܎�G0xr��7�Ǫ�<*+� ��>��#�֨� ���Y��i���9 �
3
- �Xl��jB,�u+#�>�����P4��k�s��AZ��q���1�E�(Xr��)�����[�����,��<е�Z�wi���X�_��v���h��|��Ĥ���;u�_�
4
- f�q��
5
- m�<h5���.U.��<���DG\
1
+ DR=OII�H0>;��>҄$7�5�D��^.���͇�d3��ERl2�)�+F���x��x�p\���G5�x�`�� 9�c� �� }m�m����r�jiG�w[b��1���������l��D�t��Y]Z
data/README.md CHANGED
@@ -87,89 +87,92 @@ reponse.uri
87
87
 
88
88
  ## API Endpoints
89
89
 
90
- * [Bulk Catalog Items](#bulk-catalog-items)
91
- * [Create](#bulk-catalog-items-create)
92
- * [Delete](#bulk-catalog-items-delete)
93
- * [Campaigns](#campaigns)
94
- * [All](#campaigns-all)
95
- * [Create](#campaigns-create)
96
- * [Metrics](#campaigns-metrics)
97
- * [Child Campaigns](#campaigns-child)
98
- * [Catalog Field Mappings](#catalog-field-mappings)
99
- * [Get](#catalog-field-mappings-get)
100
- * [Update](#catalog-field-mappings-update)
101
- * [Catalog Items](#catalog-items)
102
- * [All](#catalog-items-all)
103
- * [Create](#catalog-items-create)
104
- * [Update](#catalog-items-update)
105
- * [Get](#catalog-items-get)
106
- * [Delete](#catalog-items-delete)
107
- * [Catalogs](#catalogs)
108
- * [Create](#catalogs-create)
109
- * [Delete](#catalogs-delete)
110
- * [Names](#catalogs-names)
111
- * [Channels](#channels)
112
- * [All](#channels-all)
113
- * [Commerce](#commerce)
114
- * [Track Purchase](#commerce-track-purchase)
115
- * [Update Cart](#commerce-update-cart)
116
- * [Device](#device)
117
- * [Register Device Token](#device-register-token)
118
- * [Email](#email)
119
- * [View](#email-view)
120
- * [Target](#email-target)
121
- * [Email Templates](#email-templates)
122
- * [Get](#email-templates-get)
123
- * [Update](#email-templates-update)
124
- * [Upsert](#email-templates-upsert)
125
- * [Events](#events)
126
- * [For Email](#events-for-email)
127
- * [Track](#events-track)
128
- * [Track Push Open](#events-track-push-open)
129
- * [Experiments](#experiments)
130
- * [Metrics](#experiments-metrics)
131
- * [Export](#export)
132
- * [JSON](#export-json)
133
- * [CSV](#export-csv)
134
- * [Lists](#lists)
135
- * [All](#lists-all)
136
- * [Create](#lists-create)
137
- * [Delete](#lists-delete)
138
- * [Get Users](#lists-users)
139
- * [Subscribe](#lists-subscribe)
140
- * [Unsubscribe](#lists-unsubscribe)
141
- * [Message Types](#message-types)
142
- * [All](#message-types-all)
143
- * [Metadata](#metadata)
144
- * [Get](#metadata-get)
145
- * [List Keys](#metadata-list-keys)
146
- * [Delete](#metadata-delete)
147
- * [Get Key](#metadata-get-key)
148
- * [Remove Key](#metadata-remove-key)
149
- * [Add Key](#metadata-add-key)
150
- * [Push Templates](#push-templates)
151
- * [Get](#push-templates-get)
152
- * [Update](#push-templates-update)
153
- * [Upsert](#push-templates-upsert)
154
- * [Templates](#templates)
155
- * [All](#templates-all)
156
- * [Get](#templates-get)
157
- * [Users](#users)
158
- * [Update](#users-update)
159
- * [Bulk Update](#users-bulk-update)
160
- * [Update Subscriptions](#users-update-subscriptions)
161
- * [Bulk Update Subscriptions](#users-bulk-update-subscriptions)
162
- * [For Email](#users-for-email)
163
- * [By User ID](#users-by-id)
164
- * [Get Fields](#users-get-fields)
165
- * [Update Email](#users-update-email)
166
- * [Delete](#users-delete)
167
- * [Delete By ID](#users-delete-by-id)
168
- * [Register Browser Token](#users-register-browser-token)
169
- * [Disable Device](#users-disable-device)
170
- * [Get Sent Messages](#users-get-messages)
171
- * [Workflows](#workflows)
172
- * [Trigger](#workflows-trigger)
90
+ - [Bulk Catalog Items](#bulk-catalog-items)
91
+ - [Create](#bulk-catalog-items-create)
92
+ - [Delete](#bulk-catalog-items-delete)
93
+ - [Campaigns](#campaigns)
94
+ - [All](#campaigns-all)
95
+ - [Create](#campaigns-create)
96
+ - [Metrics](#campaigns-metrics)
97
+ - [Child Campaigns](#campaigns-child)
98
+ - [Catalog Field Mappings](#catalog-field-mappings)
99
+ - [Get](#catalog-field-mappings-get)
100
+ - [Update](#catalog-field-mappings-update)
101
+ - [Catalog Items](#catalog-items)
102
+ - [All](#catalog-items-all)
103
+ - [Create](#catalog-items-create)
104
+ - [Update](#catalog-items-update)
105
+ - [Get](#catalog-items-get)
106
+ - [Delete](#catalog-items-delete)
107
+ - [Catalogs](#catalogs)
108
+ - [Create](#catalogs-create)
109
+ - [Delete](#catalogs-delete)
110
+ - [Names](#catalogs-names)
111
+ - [Channels](#channels)
112
+ - [All](#channels-all)
113
+ - [Commerce](#commerce)
114
+ - [Track Purchase](#commerce-track-purchase)
115
+ - [Update Cart](#commerce-update-cart)
116
+ - [Device](#device)
117
+ - [Register Device Token](#device-register-token)
118
+ - [Email](#email)
119
+ - [View](#email-view)
120
+ - [Target](#email-target)
121
+ - [Email Templates](#email-templates)
122
+ - [Get](#email-templates-get)
123
+ - [Update](#email-templates-update)
124
+ - [Upsert](#email-templates-upsert)
125
+ - [Events](#events)
126
+ - [For Email](#events-for-email)
127
+ - [Track](#events-track)
128
+ - [Track Push Open](#events-track-push-open)
129
+ - [Experiments](#experiments)
130
+ - [Metrics](#experiments-metrics)
131
+ - [Export](#export)
132
+ - [JSON](#export-json)
133
+ - [CSV](#export-csv)
134
+ - [In App](#in-app)
135
+ - [Messages](#in-app-messages)
136
+ - [Lists](#lists)
137
+ - [All](#lists-all)
138
+ - [Create](#lists-create)
139
+ - [Delete](#lists-delete)
140
+ - [Get Users](#lists-users)
141
+ - [Subscribe](#lists-subscribe)
142
+ - [Unsubscribe](#lists-unsubscribe)
143
+ - [Message Types](#message-types)
144
+ - [All](#message-types-all)
145
+ - [Metadata](#metadata)
146
+ - [Get](#metadata-get)
147
+ - [List Keys](#metadata-list-keys)
148
+ - [Delete](#metadata-delete)
149
+ - [Get Key](#metadata-get-key)
150
+ - [Remove Key](#metadata-remove-key)
151
+ - [Add Key](#metadata-add-key)
152
+ - [Push Templates](#push-templates)
153
+ - [Get](#push-templates-get)
154
+ - [Update](#push-templates-update)
155
+ - [Upsert](#push-templates-upsert)
156
+ - [Templates](#templates)
157
+ - [All](#templates-all)
158
+ - [Get](#templates-get)
159
+ - [Users](#users)
160
+ - [Update](#users-update)
161
+ - [Bulk Update](#users-bulk-update)
162
+ - [Update Subscriptions](#users-update-subscriptions)
163
+ - [Bulk Update Subscriptions](#users-bulk-update-subscriptions)
164
+ - [For Email](#users-for-email)
165
+ - [By User ID](#users-by-id)
166
+ - [Get Fields](#users-get-fields)
167
+ - [Update Email](#users-update-email)
168
+ - [Delete](#users-delete)
169
+ - [Delete By ID](#users-delete-by-id)
170
+ - [Register Browser Token](#users-register-browser-token)
171
+ - [Disable Device](#users-disable-device)
172
+ - [Get Sent Messages](#users-get-messages)
173
+ - [Forget](#users-forget)
174
+ - [Workflows](#workflows)
175
+ - [Trigger](#workflows-trigger)
173
176
 
174
177
  ### Bulk Catalog Items
175
178
 
@@ -308,7 +311,7 @@ Endpoint: `PUT /catalogs/{catalogName}/fieldMappings`
308
311
  catalog = 'my-catalog'
309
312
  field_mappings = [{fieldName: 'test-field', fieldType: 'string'}]
310
313
  catalog_field_mappings = Iterable::CatalogFieldMappings.new(catalog)
311
- catalog_field_mappings.update_field_mappings(field_mappings)
314
+ catalog_field_mappings.update(field_mappings)
312
315
  ```
313
316
 
314
317
  ### Catalog Items
@@ -616,6 +619,29 @@ start_time = end_time - (60 * 60* 24 * 7) # 7 days ago
616
619
  response = exporter.export start_time, end_time
617
620
  ```
618
621
 
622
+ ### In App
623
+
624
+ #### In App Messages
625
+
626
+ Endpoint: `GET /inApp/getMessages`
627
+
628
+ ```ruby
629
+ in_app = Iterable::InApp.new
630
+
631
+ # Get messages for a user by email
632
+ email = 'user@example.com'
633
+ response = in_app.messages_for_email email, count: 10
634
+
635
+ # Get messages for a user by user_id
636
+ email = 'user@example.com'
637
+ response = in_app.messages_for_user_id 42, count: 2
638
+
639
+ # Pass in query parameters
640
+ email = 'user@example.com'
641
+ attrs = { 'platform' => 'iOS' }
642
+ response = in_app.messages_for_email: email, attrs
643
+ ```
644
+
619
645
  ### Lists
620
646
 
621
647
  #### Lists All
@@ -949,6 +975,17 @@ start_time = end_time - (60 * 60* 24 * 7) # 7 days ago
949
975
  response = users.sent_messages 'user@example.com', start_time, end_time, params
950
976
  ```
951
977
 
978
+ #### Users Forget
979
+
980
+ Endpoint: `POST /users/forget`
981
+
982
+ ```ruby
983
+ users = Iterable::Users.new
984
+ # Additional params to filter and query by
985
+ email = 'user@example.com'
986
+ response = users.forget email
987
+ ```
988
+
952
989
  ### Workflows
953
990
 
954
991
  #### Workflows Trigger
@@ -15,7 +15,7 @@ module Iterable
15
15
  #
16
16
  # @return [Iterable::ApiResource]
17
17
  def initialize(conf = nil)
18
- @conf = conf ? conf : default_config
18
+ @conf = conf || default_config
19
19
  end
20
20
 
21
21
  ##
@@ -58,9 +58,7 @@ module Iterable
58
58
  Iterable.request(conf, base_path).post(body)
59
59
  end
60
60
 
61
- private
62
-
63
- def base_path
61
+ private def base_path
64
62
  "/catalogs/#{@catalog}/items"
65
63
  end
66
64
  end
@@ -54,9 +54,7 @@ module Iterable
54
54
  Iterable.request(conf, base_path).put(body)
55
55
  end
56
56
 
57
- private
58
-
59
- def base_path
57
+ private def base_path
60
58
  "/catalogs/#{@catalog}/fieldMappings"
61
59
  end
62
60
  end
@@ -84,9 +84,7 @@ module Iterable
84
84
  Iterable.request(conf, base_path).delete
85
85
  end
86
86
 
87
- private
88
-
89
- def base_path
87
+ private def base_path
90
88
  path = "/catalogs/#{@catalog}/items"
91
89
  path += "/#{@item_id}" if @item_id
92
90
  path
@@ -54,9 +54,7 @@ module Iterable
54
54
  Iterable.request(conf, '/catalogs', params).get
55
55
  end
56
56
 
57
- private
58
-
59
- def base_path
57
+ private def base_path
60
58
  "/catalogs/#{@name}"
61
59
  end
62
60
  end
@@ -56,13 +56,11 @@ module Iterable
56
56
  Iterable.request(conf, base_path).post(attrs)
57
57
  end
58
58
 
59
- private
60
-
61
- def base_path
59
+ private def base_path
62
60
  '/users/registerDeviceToken'
63
61
  end
64
62
 
65
- def device_data
63
+ private def device_data
66
64
  {
67
65
  token: @token,
68
66
  applicationName: @app,
@@ -103,20 +103,26 @@ module Iterable
103
103
  Iterable.request(conf, base_path, request_params(params)).get
104
104
  end
105
105
 
106
- protected
107
-
108
- def base_path
106
+ protected def base_path
109
107
  "/export/data.#{format}"
110
108
  end
111
109
 
112
- def request_params(params = {})
110
+ protected def request_params(params = {})
113
111
  default_params.merge params
114
112
  end
115
113
 
116
- def default_params
114
+ protected def only_fields?
115
+ @only_fields&.length.to_i.positive?
116
+ end
117
+
118
+ protected def omit_fields?
119
+ @omit_fields&.length.to_i.positive?
120
+ end
121
+
122
+ protected def default_params
117
123
  params = { dataTypeName: @data_type }
118
- params[:onlyFields] = @only_fields if @only_fields && @only_fields.length.positive?
119
- params[:omitFields] = @omit_fields.join(',') if @omit_fields && @omit_fields.length.positive?
124
+ params[:onlyFields] = @only_fields if only_fields?
125
+ params[:omitFields] = @omit_fields.join(',') if omit_fields?
120
126
  params[:campaignId] = @campaign_id if @campaign_id
121
127
  params
122
128
  end
@@ -0,0 +1,48 @@
1
+ module Iterable
2
+ ##
3
+ #
4
+ # Interact with /inApp API endpoints
5
+ #
6
+ # @example Creating in app endpoint object
7
+ # # With default config
8
+ # in_app = Iterable::InApp.new
9
+ #
10
+ # # With custom config
11
+ # conf = Iterable::Config.new(token: 'new-token')
12
+ # in_app = Iterable::InApp.new(config)
13
+ class InApp < ApiResource
14
+ ##
15
+ #
16
+ # Get in-app messages for a user by email
17
+ #
18
+ # @param email [String] *required* Email of user who received the message to view. Required if no user_id present.
19
+ # @param count [Integer] Number of messages to return, defaults to 1
20
+ # @param attrs [Hash] Hash of query attributes like platform, SDKVersion, etc.
21
+ #
22
+ # @return [Iterable::Response] A response object
23
+ def messages_for_email(email, count: 1, **attrs)
24
+ attrs[:email] = email
25
+ attrs[:count] = count
26
+ messages(attrs)
27
+ end
28
+
29
+ ##
30
+ #
31
+ # Get in-app messages for a user by user_id
32
+ #
33
+ # @param email [String] *required* Email of user who received the message to view. Required if no user_id present.
34
+ # @param count [Integer] Number of messages to return, defaults to 1
35
+ # @param attrs [Hash] Hash of query attributes like platform, SDKVersion, etc.
36
+ #
37
+ # @return [Iterable::Response] A response object
38
+ def messages_for_user_id(user_id, count: 1, **attrs)
39
+ attrs[:userId] = user_id
40
+ attrs[:count] = count
41
+ messages(attrs)
42
+ end
43
+
44
+ private def messages(**attrs)
45
+ Iterable.request(conf, '/inApp/getMessages', attrs).get
46
+ end
47
+ end
48
+ end
@@ -82,9 +82,7 @@ module Iterable
82
82
  Iterable.request(conf, base_path(key)).delete
83
83
  end
84
84
 
85
- private
86
-
87
- def base_path(key = nil)
85
+ private def base_path(key = nil)
88
86
  path = "/metadata/#{@name}"
89
87
  path += "/#{key}" if key
90
88
  path
@@ -42,29 +42,27 @@ module Iterable
42
42
  execute :delete, body, headers
43
43
  end
44
44
 
45
- private
46
-
47
- def execute(verb, body = {}, headers = {})
45
+ private def execute(verb, body = {}, headers = {})
48
46
  http = connection(verb, body, headers)
49
47
  setup_http(http)
50
48
  transmit http
51
49
  end
52
50
 
53
- def connection(verb, body = {}, headers = {})
51
+ private def connection(verb, body = {}, headers = {})
54
52
  conn_headers = DEFAULT_HEADERS.merge(headers)
55
53
  req = Net::HTTP.const_get(verb.to_s.capitalize, false).new(@uri, conn_headers)
56
54
  req.body = JSON.dump(body)
57
55
  req
58
56
  end
59
57
 
60
- def setup_http(http)
58
+ private def setup_http(http)
61
59
  DEFAULT_OPTIONS.dup.each do |option, value|
62
60
  setter = "#{option.to_sym}="
63
61
  http.send(setter, value) if http.respond_to?(setter)
64
62
  end
65
63
  end
66
64
 
67
- def build_uri(path, params = {})
65
+ private def build_uri(path, params = {})
68
66
  uri = @config.uri
69
67
  uri.path += path
70
68
  params['api_key'] = @config.token
@@ -72,11 +70,11 @@ module Iterable
72
70
  uri
73
71
  end
74
72
 
75
- def net_http
73
+ private def net_http
76
74
  Net::HTTP.new(@uri.hostname, @uri.port, nil, nil, nil, nil)
77
75
  end
78
76
 
79
- def transmit(req)
77
+ private def transmit(req)
80
78
  response = nil
81
79
  @net.start do |http|
82
80
  response = http.request(req, nil, &:read_body)
@@ -84,7 +82,7 @@ module Iterable
84
82
  handle_response response
85
83
  end
86
84
 
87
- def handle_response(response)
85
+ private def handle_response(response)
88
86
  redirected = response.is_a?(Net::HTTPRedirection) || response.code == '303'
89
87
  if redirected && response['location']
90
88
  Response.new Net::HTTP.get_response(uri_for_redirect(response))
@@ -93,7 +91,7 @@ module Iterable
93
91
  end
94
92
  end
95
93
 
96
- def uri_for_redirect(response)
94
+ private def uri_for_redirect(response)
97
95
  uri = @config.uri
98
96
  redirect_uri = URI(response['location'])
99
97
  uri.path = redirect_uri.path
@@ -12,7 +12,7 @@ module Iterable
12
12
  attr_reader :body
13
13
 
14
14
  # @!visibility private
15
- def initialize(resp) # @private
15
+ def initialize(resp)
16
16
  @resp = resp
17
17
  @body = parsed_body
18
18
  end
@@ -29,14 +29,12 @@ module Iterable
29
29
  end
30
30
  end
31
31
 
32
- private
33
-
34
32
  ##
35
33
  # Attempts to parse the response as JSON. Will rescue and return original
36
34
  # if unable to parse.
37
35
  #
38
36
  # @return [Hash,Array,String] A parsed JSON object or the original response body
39
- def parsed_body
37
+ private def parsed_body
40
38
  response_body = @resp.body
41
39
  MultiJson.load response_body
42
40
  rescue MultiJson::ParseError
@@ -186,5 +186,18 @@ module Iterable
186
186
  params[:endTime] = end_time.to_s if end_time
187
187
  Iterable.request(conf, '/users/getSentMessages', params).get
188
188
  end
189
+
190
+ ##
191
+ #
192
+ # Delete the specified user's data from the Iterable project and
193
+ # prevent future data collection about them.
194
+ #
195
+ # @param email [String] User email to forget
196
+ #
197
+ # @return [Iterable::Response] A response object
198
+ def forget(email)
199
+ attrs = { email: email }
200
+ Iterable.request(conf, '/users/forget').post(attrs)
201
+ end
189
202
  end
190
203
  end
data/lib/iterable.rb CHANGED
@@ -17,6 +17,7 @@ files = %w[
17
17
  campaigns
18
18
  channels
19
19
  events
20
+ in_app
20
21
  message_types
21
22
  templates
22
23
  email_templates
@@ -42,8 +43,6 @@ files.each { |path| require_relative "./iterable/#{path}" }
42
43
  module Iterable
43
44
  DATE_FORMAT = '%Y-%m-%d'.freeze
44
45
 
45
- module_function
46
-
47
46
  ##
48
47
  #
49
48
  # Configure a default [Iterable::Config] object to be used when interacting
@@ -53,7 +52,7 @@ module Iterable
53
52
  # Iterable.configure do |conf|
54
53
  # conf.token = 'secret-token'
55
54
  # end
56
- def configure
55
+ module_function def configure
57
56
  config.tap do |conf|
58
57
  yield conf
59
58
  end
@@ -62,12 +61,12 @@ module Iterable
62
61
  ##
63
62
  #
64
63
  # @return [Iterable::Config] The default config for API endpoints
65
- def config
64
+ module_function def config
66
65
  @config ||= Config.new
67
66
  end
68
67
 
69
68
  # @!visibility private
70
- def request(conf, path, params = {})
69
+ module_function def request(conf, path, params = {})
71
70
  Request.new conf, path, params
72
71
  end
73
72
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,40 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iterable-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.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
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- AVgxYC8MXr+Memsyxts6+XTfLqCl8CgmrGDgrmeyLgTUonnNCiorvh19HSDdqTru
31
- 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
- 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
- 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
- 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
- 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
36
37
  -----END CERTIFICATE-----
37
- date: 2020-05-11 00:00:00.000000000 Z
38
+ date: 2022-05-16 00:00:00.000000000 Z
38
39
  dependencies:
39
40
  - !ruby/object:Gem::Dependency
40
41
  name: multi_json
@@ -196,14 +197,14 @@ dependencies:
196
197
  requirements:
197
198
  - - "~>"
198
199
  - !ruby/object:Gem::Version
199
- version: 0.49.1
200
+ version: 0.89.1
200
201
  type: :development
201
202
  prerelease: false
202
203
  version_requirements: !ruby/object:Gem::Requirement
203
204
  requirements:
204
205
  - - "~>"
205
206
  - !ruby/object:Gem::Version
206
- version: 0.49.1
207
+ version: 0.89.1
207
208
  - !ruby/object:Gem::Dependency
208
209
  name: simplecov
209
210
  requirement: !ruby/object:Gem::Requirement
@@ -224,14 +225,14 @@ dependencies:
224
225
  requirements:
225
226
  - - "~>"
226
227
  - !ruby/object:Gem::Version
227
- version: 1.3.0
228
+ version: 1.4.0
228
229
  type: :development
229
230
  prerelease: false
230
231
  version_requirements: !ruby/object:Gem::Requirement
231
232
  requirements:
232
233
  - - "~>"
233
234
  - !ruby/object:Gem::Version
234
- version: 1.3.0
235
+ version: 1.4.0
235
236
  - !ruby/object:Gem::Dependency
236
237
  name: vcr
237
238
  requirement: !ruby/object:Gem::Requirement
@@ -252,14 +253,14 @@ dependencies:
252
253
  requirements:
253
254
  - - "~>"
254
255
  - !ruby/object:Gem::Version
255
- version: 3.0.1
256
+ version: 3.8.3
256
257
  type: :development
257
258
  prerelease: false
258
259
  version_requirements: !ruby/object:Gem::Requirement
259
260
  requirements:
260
261
  - - "~>"
261
262
  - !ruby/object:Gem::Version
262
- version: 3.0.1
263
+ version: 3.8.3
263
264
  - !ruby/object:Gem::Dependency
264
265
  name: yard
265
266
  requirement: !ruby/object:Gem::Requirement
@@ -301,6 +302,7 @@ files:
301
302
  - lib/iterable/events.rb
302
303
  - lib/iterable/experiments.rb
303
304
  - lib/iterable/export.rb
305
+ - lib/iterable/in_app.rb
304
306
  - lib/iterable/json_exporter.rb
305
307
  - lib/iterable/lists.rb
306
308
  - lib/iterable/message_types.rb
@@ -317,7 +319,7 @@ homepage: http://gitlab.com/mtchavez/iterable
317
319
  licenses:
318
320
  - MIT
319
321
  metadata: {}
320
- post_install_message:
322
+ post_install_message:
321
323
  rdoc_options:
322
324
  - "--charset=UTF-8"
323
325
  - "--main=README.md"
@@ -327,7 +329,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
327
329
  requirements:
328
330
  - - ">="
329
331
  - !ruby/object:Gem::Version
330
- version: 2.3.0
332
+ version: 2.4.0
331
333
  required_rubygems_version: !ruby/object:Gem::Requirement
332
334
  requirements:
333
335
  - - ">="
@@ -335,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
337
  version: '0'
336
338
  requirements: []
337
339
  rubygems_version: 3.0.3
338
- signing_key:
340
+ signing_key:
339
341
  specification_version: 4
340
342
  summary: Iterable REST API Client
341
343
  test_files: []
metadata.gz.sig CHANGED
Binary file