iterable-api-client 0.3.1 → 0.3.2

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: 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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
- 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
- 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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