intercom 2.4.4 → 2.5.4

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
  SHA1:
3
- metadata.gz: 82ddbad91e926ed0c894fe37d0695240b4057b45
4
- data.tar.gz: 634738ed9ce4a02e1905a8d57d1c14deb46b540a
3
+ metadata.gz: 6cb2e27f3e7be79c2ad08dc54ab70fc0706dbc3c
4
+ data.tar.gz: 4ceabd2c867c299ed35cb1a38402ffa944c508fe
5
5
  SHA512:
6
- metadata.gz: 2f185aab2e94659bece31fa08edfee6282b9757a51c2ee3d17ec6ec125b2208b9495c6cbac701b726c4db43d74cd39b9b701d8c2a39982ac67236b67ab042b8e
7
- data.tar.gz: cff5588e8520d1f0589467642ba2b1fd94c599c00424eba192a345b77c5d6913b721685fe65bacd08174e6a4c6c2f66445b033661fd73850ddfc0d6a7e21bfee
6
+ metadata.gz: 15533df079a3388c672190e83d714d0999445f2c2d978f5905eeee01d9bad2254fe274ff5777d18047c9164e965333457e8124a1dc4062f8686c58d142ed6954
7
+ data.tar.gz: bc9d73e3c607f6052ca297330dc062e93cb521a6e8e1be8769776d129e20e717efd93b8dc09e36ab95a08fee68487f2878ed31c14fceb4673bf01edfc9a5774d
data/README.md CHANGED
@@ -19,7 +19,7 @@ This version of the gem is compatible with `Ruby 2.1`, `Ruby 2.0` & `Ruby 1.9.3`
19
19
 
20
20
  Using bundler:
21
21
 
22
- gem 'intercom', "~> 2.4.4"
22
+ gem 'intercom', "~> 2.5.4"
23
23
 
24
24
  ## Basic Usage
25
25
 
@@ -62,6 +62,8 @@ user = Intercom::User.find(:user_id => "1")
62
62
  user = Intercom::User.find(:id => "1")
63
63
  # Create a user
64
64
  user = Intercom::User.create(:email => "bob@example.com", :name => "Bob Smith", :signed_up_at => Time.now.to_i)
65
+ # Delete a user
66
+ deleted_user = Intercom::User.find(:id => "1").delete
65
67
  # Update custom_attributes for a user
66
68
  user.custom_attributes["average_monthly_spend"] = 1234.56; user.save
67
69
  # Perform incrementing
@@ -296,6 +298,24 @@ The metadata key values in the example are treated as follows-
296
298
  - order_number: a Rich Link (value contains 'url' and 'value' keys)
297
299
  - price: An Amount in US Dollars (value contains 'amount' and 'currency' keys)
298
300
 
301
+ *NB:* This version of the gem reserves the field name `type` in Event data.
302
+
303
+ ### Contacts
304
+
305
+ `Contacts` represent logged out users of your application.
306
+
307
+ ```ruby
308
+ # Create a contact
309
+ contact = Intercom::Contact.create(email: "some_contact@example.com")
310
+
311
+ # Update a contact
312
+ contact.custom_attributes['foo'] = 'bar'
313
+ contact.save
314
+
315
+ # Find contacts by email
316
+ contacts = Intercom::Contact.find_all(email: "some_contact@example.com")
317
+ ```
318
+
299
319
  ### Subscriptions
300
320
 
301
321
  Subscribe to events in Intercom to receive webhooks.
@@ -1,3 +1,6 @@
1
+ 2.5.4
2
+ - Acquire support
3
+
1
4
  2.4.4
2
5
  - Fix parsing nil lists from notifications
3
6
 
@@ -1,4 +1,5 @@
1
1
  require "intercom/version"
2
+ require "intercom/contact"
2
3
  require "intercom/user"
3
4
  require "intercom/company"
4
5
  require "intercom/note"
@@ -0,0 +1,19 @@
1
+ require 'intercom/traits/api_resource'
2
+
3
+ module Intercom
4
+ module ApiOperations
5
+ module Convert
6
+ def convert(user)
7
+ from_response(
8
+ Intercom.post(
9
+ "/contacts/convert",
10
+ {
11
+ contact: { user_id: user_id },
12
+ user: user.identity_hash
13
+ }
14
+ )
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
@@ -5,7 +5,14 @@ module Intercom
5
5
  module Save
6
6
 
7
7
  module ClassMethods
8
- def create(params)
8
+ PARAMS_NOT_PROVIDED = Object.new
9
+ def create(params = PARAMS_NOT_PROVIDED)
10
+ if self.ancestors.include?(Intercom::Contact) && params == PARAMS_NOT_PROVIDED
11
+ params = Hash.new
12
+ elsif params == PARAMS_NOT_PROVIDED
13
+ raise ArgumentError, '.create requires 1 parameter'
14
+ end
15
+
9
16
  instance = self.new(params)
10
17
  instance.mark_fields_as_changed!(params.keys)
11
18
  instance.save
@@ -26,6 +33,10 @@ module Intercom
26
33
  from_response(response) if response # may be nil we received back a 202
27
34
  end
28
35
 
36
+ def identity_hash
37
+ respond_to?(:identity_vars) ? SliceableHash.new(to_hash).slice(*(identity_vars.map(&:to_s))) : {}
38
+ end
39
+
29
40
  private
30
41
 
31
42
  def id_present?
@@ -35,10 +46,6 @@ module Intercom
35
46
  def posted_updates?
36
47
  respond_to?(:update_verb) && update_verb == 'post'
37
48
  end
38
-
39
- def identity_hash
40
- respond_to?(:identity_vars) ? SliceableHash.new(to_hash).slice(*(identity_vars.map(&:to_s))) : {}
41
- end
42
49
  end
43
50
  end
44
51
  end
@@ -0,0 +1,22 @@
1
+ require 'intercom/api_operations/count'
2
+ require 'intercom/api_operations/load'
3
+ require 'intercom/api_operations/find'
4
+ require 'intercom/api_operations/find_all'
5
+ require 'intercom/api_operations/save'
6
+ require 'intercom/api_operations/convert'
7
+ require 'intercom/traits/api_resource'
8
+
9
+ module Intercom
10
+ class Contact
11
+ include ApiOperations::Load
12
+ include ApiOperations::Find
13
+ include ApiOperations::FindAll
14
+ include ApiOperations::Save
15
+ include ApiOperations::Convert
16
+ include Traits::ApiResource
17
+
18
+ def identity_vars ; [:email, :user_id] ; end
19
+ def flat_store_attributes ; [:custom_attributes] ; end
20
+ def update_verb; 'put' ; end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module Intercom #:nodoc:
2
- VERSION = "2.4.4"
2
+ VERSION = "2.5.4"
3
3
  end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe "Intercom::Contact" do
4
+ it 'should not throw ArgumentErrors when there are no parameters' do
5
+ Intercom.expects(:post)
6
+ Intercom::Contact.create
7
+ end
8
+
9
+ describe 'converting' do
10
+ let(:contact) { Intercom::Contact.from_api(user_id: 'contact_id') }
11
+ let(:user) { Intercom::User.from_api(id: 'user_id') }
12
+
13
+ it do
14
+ Intercom.expects(:post).with(
15
+ "/contacts/convert",
16
+ {
17
+ contact: { user_id: contact.user_id },
18
+ user: user.identity_hash
19
+ }
20
+ ).returns(test_user)
21
+
22
+ contact.convert(user)
23
+ end
24
+ end
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4
4
+ version: 2.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben McRedmond
@@ -15,76 +15,76 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2015-01-19 00:00:00.000000000 Z
18
+ date: 2015-05-08 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: minitest
22
22
  requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.4'
27
27
  type: :development
28
28
  prerelease: false
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '5.4'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rake
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.3'
41
41
  type: :development
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '10.3'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: mocha
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '1.0'
55
55
  type: :development
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.0'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: fakeweb
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
69
  type: :development
70
70
  prerelease: false
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.3'
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: json
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.8'
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '1.8'
90
90
  description: 'Intercom (https://www.intercom.io) is a customer relationship management
@@ -103,8 +103,8 @@ executables: []
103
103
  extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
- - .gitignore
107
- - .travis.yml
106
+ - ".gitignore"
107
+ - ".travis.yml"
108
108
  - Gemfile
109
109
  - MIT-LICENSE
110
110
  - README.md
@@ -115,6 +115,7 @@ files:
115
115
  - lib/ext/sliceable_hash.rb
116
116
  - lib/intercom.rb
117
117
  - lib/intercom/admin.rb
118
+ - lib/intercom/api_operations/convert.rb
118
119
  - lib/intercom/api_operations/count.rb
119
120
  - lib/intercom/api_operations/delete.rb
120
121
  - lib/intercom/api_operations/find.rb
@@ -124,6 +125,7 @@ files:
124
125
  - lib/intercom/api_operations/save.rb
125
126
  - lib/intercom/collection_proxy.rb
126
127
  - lib/intercom/company.rb
128
+ - lib/intercom/contact.rb
127
129
  - lib/intercom/conversation.rb
128
130
  - lib/intercom/count.rb
129
131
  - lib/intercom/errors.rb
@@ -157,6 +159,7 @@ files:
157
159
  - spec/unit/intercom/admin_spec.rb
158
160
  - spec/unit/intercom/collection_proxy_spec.rb
159
161
  - spec/unit/intercom/company_spec.rb
162
+ - spec/unit/intercom/contact_spec.rb
160
163
  - spec/unit/intercom/event_spec.rb
161
164
  - spec/unit/intercom/lib/flat_store_spec.rb
162
165
  - spec/unit/intercom/message_spec.rb
@@ -178,17 +181,17 @@ require_paths:
178
181
  - lib
179
182
  required_ruby_version: !ruby/object:Gem::Requirement
180
183
  requirements:
181
- - - '>='
184
+ - - ">="
182
185
  - !ruby/object:Gem::Version
183
186
  version: 1.9.3
184
187
  required_rubygems_version: !ruby/object:Gem::Requirement
185
188
  requirements:
186
- - - '>='
189
+ - - ">="
187
190
  - !ruby/object:Gem::Version
188
191
  version: '0'
189
192
  requirements: []
190
193
  rubyforge_project: intercom
191
- rubygems_version: 2.0.14
194
+ rubygems_version: 2.2.3
192
195
  signing_key:
193
196
  specification_version: 4
194
197
  summary: Ruby bindings for the Intercom API
@@ -197,6 +200,7 @@ test_files:
197
200
  - spec/unit/intercom/admin_spec.rb
198
201
  - spec/unit/intercom/collection_proxy_spec.rb
199
202
  - spec/unit/intercom/company_spec.rb
203
+ - spec/unit/intercom/contact_spec.rb
200
204
  - spec/unit/intercom/event_spec.rb
201
205
  - spec/unit/intercom/lib/flat_store_spec.rb
202
206
  - spec/unit/intercom/message_spec.rb
@@ -208,3 +212,4 @@ test_files:
208
212
  - spec/unit/intercom/traits/api_resource_spec.rb
209
213
  - spec/unit/intercom/user_spec.rb
210
214
  - spec/unit/intercom_spec.rb
215
+ has_rdoc: