cogniteev-intercom 2.5.4

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.
Files changed (70) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +13 -0
  5. data/MIT-LICENSE +21 -0
  6. data/README.md +378 -0
  7. data/Rakefile +21 -0
  8. data/changes.txt +168 -0
  9. data/intercom.gemspec +28 -0
  10. data/lib/data/cacert.pem +3965 -0
  11. data/lib/ext/sliceable_hash.rb +16 -0
  12. data/lib/intercom.rb +176 -0
  13. data/lib/intercom/admin.rb +9 -0
  14. data/lib/intercom/api_operations/convert.rb +19 -0
  15. data/lib/intercom/api_operations/count.rb +16 -0
  16. data/lib/intercom/api_operations/delete.rb +15 -0
  17. data/lib/intercom/api_operations/find.rb +23 -0
  18. data/lib/intercom/api_operations/find_all.rb +33 -0
  19. data/lib/intercom/api_operations/list.rb +17 -0
  20. data/lib/intercom/api_operations/load.rb +16 -0
  21. data/lib/intercom/api_operations/save.rb +51 -0
  22. data/lib/intercom/collection_proxy.rb +71 -0
  23. data/lib/intercom/company.rb +29 -0
  24. data/lib/intercom/contact.rb +22 -0
  25. data/lib/intercom/conversation.rb +17 -0
  26. data/lib/intercom/count.rb +21 -0
  27. data/lib/intercom/errors.rb +61 -0
  28. data/lib/intercom/event.rb +11 -0
  29. data/lib/intercom/extended_api_operations/reply.rb +16 -0
  30. data/lib/intercom/extended_api_operations/tags.rb +14 -0
  31. data/lib/intercom/extended_api_operations/users.rb +17 -0
  32. data/lib/intercom/generic_handlers/base_handler.rb +22 -0
  33. data/lib/intercom/generic_handlers/count.rb +59 -0
  34. data/lib/intercom/generic_handlers/tag.rb +71 -0
  35. data/lib/intercom/generic_handlers/tag_find_all.rb +47 -0
  36. data/lib/intercom/lib/dynamic_accessors.rb +59 -0
  37. data/lib/intercom/lib/dynamic_accessors_on_method_missing.rb +53 -0
  38. data/lib/intercom/lib/flat_store.rb +31 -0
  39. data/lib/intercom/lib/typed_json_deserializer.rb +53 -0
  40. data/lib/intercom/message.rb +9 -0
  41. data/lib/intercom/note.rb +17 -0
  42. data/lib/intercom/notification.rb +20 -0
  43. data/lib/intercom/request.rb +166 -0
  44. data/lib/intercom/segment.rb +14 -0
  45. data/lib/intercom/subscription.rb +15 -0
  46. data/lib/intercom/tag.rb +23 -0
  47. data/lib/intercom/traits/api_resource.rb +132 -0
  48. data/lib/intercom/traits/dirty_tracking.rb +33 -0
  49. data/lib/intercom/traits/generic_handler_binding.rb +29 -0
  50. data/lib/intercom/traits/incrementable_attributes.rb +12 -0
  51. data/lib/intercom/user.rb +30 -0
  52. data/lib/intercom/utils.rb +62 -0
  53. data/lib/intercom/version.rb +3 -0
  54. data/spec/spec_helper.rb +308 -0
  55. data/spec/unit/intercom/admin_spec.rb +9 -0
  56. data/spec/unit/intercom/collection_proxy_spec.rb +34 -0
  57. data/spec/unit/intercom/company_spec.rb +23 -0
  58. data/spec/unit/intercom/contact_spec.rb +25 -0
  59. data/spec/unit/intercom/event_spec.rb +25 -0
  60. data/spec/unit/intercom/lib/flat_store_spec.rb +29 -0
  61. data/spec/unit/intercom/message_spec.rb +21 -0
  62. data/spec/unit/intercom/note_spec.rb +19 -0
  63. data/spec/unit/intercom/notification_spec.rb +68 -0
  64. data/spec/unit/intercom/request_spec.rb +16 -0
  65. data/spec/unit/intercom/subscription_spec.rb +18 -0
  66. data/spec/unit/intercom/tag_spec.rb +23 -0
  67. data/spec/unit/intercom/traits/api_resource_spec.rb +85 -0
  68. data/spec/unit/intercom/user_spec.rb +230 -0
  69. data/spec/unit/intercom_spec.rb +90 -0
  70. metadata +214 -0
@@ -0,0 +1,90 @@
1
+ require "spec_helper"
2
+
3
+ describe Intercom do
4
+ it "has a version number" do
5
+ Intercom::VERSION.must_match(/\d+\.\d+\.\d+/)
6
+ end
7
+
8
+ describe "API" do
9
+ before do
10
+ Intercom.app_id = "abc123"
11
+ Intercom.app_api_key = "super-secret-key"
12
+ end
13
+
14
+ it "raises ArgumentError if no app_id or app_api_key specified" do
15
+ Intercom.app_id = nil
16
+ Intercom.app_api_key = nil
17
+ proc { Intercom.target_base_url }.must_raise ArgumentError, "You must set both Intercom.app_id and Intercom.app_api_key to use this client. See https://github.com/intercom/intercom-ruby for usage examples."
18
+ end
19
+
20
+ it 'raises an Intercom::MultipleMatchingUsers error when receiving a conflict' do
21
+ multiple_matching_error = { 'type' => 'error.list', 'errors' => [{ 'code' => 'conflict', 'message' => 'Multiple existing users match this email address - must be more specific using user_id' }]}
22
+ proc {Intercom::Request.new('/users', :get).raise_application_errors_on_failure(multiple_matching_error, 400)}.must_raise(Intercom::MultipleMatchingUsersError)
23
+ end
24
+
25
+ it "returns the app_id and app_api_key previously set" do
26
+ Intercom.app_id.must_equal "abc123"
27
+ Intercom.app_api_key.must_equal "super-secret-key"
28
+ end
29
+
30
+ it "defaults to https to api.intercom.io" do
31
+ Intercom.target_base_url.must_equal "https://abc123:super-secret-key@api.intercom.io"
32
+ end
33
+
34
+ it "raises ResourceNotFound if get a 404" do
35
+
36
+ end
37
+
38
+ describe "overriding protocol/hostname" do
39
+ before do
40
+ @protocol = Intercom.protocol
41
+ @hostname = Intercom.hostname
42
+ Intercom.endpoints = nil
43
+ end
44
+
45
+ after do
46
+ Intercom.protocol = @protocol
47
+ Intercom.hostname = @hostname
48
+ Intercom.endpoints = ["https://api.intercom.io"]
49
+ end
50
+
51
+ it "allows overriding of the endpoint and protocol" do
52
+ Intercom.protocol = "http"
53
+ Intercom.hostname = "localhost:3000"
54
+ Intercom.target_base_url.must_equal "http://abc123:super-secret-key@localhost:3000"
55
+ end
56
+
57
+ it "prefers endpoints" do
58
+ Intercom.endpoint = "https://localhost:7654"
59
+ Intercom.target_base_url.must_equal "https://abc123:super-secret-key@localhost:7654"
60
+ Intercom.endpoints = unshuffleable_array(["http://example.com","https://localhost:7654"])
61
+ Intercom.target_base_url.must_equal "http://abc123:super-secret-key@example.com"
62
+ end
63
+
64
+ it "has endpoints" do
65
+ Intercom.endpoints.must_equal ["https://api.intercom.io"]
66
+ Intercom.endpoints = ["http://example.com","https://localhost:7654"]
67
+ Intercom.endpoints.must_equal ["http://example.com","https://localhost:7654"]
68
+ end
69
+
70
+ it "should randomize endpoints if last checked endpoint is > 5 minutes ago" do
71
+ Intercom.instance_variable_set(:@current_endpoint, "http://start")
72
+ Intercom.instance_variable_set(:@endpoints, ["http://alternative"])
73
+ Intercom.instance_variable_set(:@endpoint_randomized_at, Time.now - 120)
74
+ Intercom.current_endpoint.must_equal "http://start"
75
+ Intercom.instance_variable_set(:@endpoint_randomized_at, Time.now - 360)
76
+ Intercom.current_endpoint.must_equal "http://alternative"
77
+ Intercom.instance_variable_get(:@endpoint_randomized_at).to_i.must_be_close_to Time.now.to_i
78
+ end
79
+ end
80
+ end
81
+
82
+
83
+ it "checks for email or user id" do
84
+ proc { Intercom.check_required_params("else") }.must_raise ArgumentError, "Expected params Hash, got String"
85
+ proc { Intercom.check_required_params(:something => "else") }.must_raise ArgumentError, "Either email or user_id must be specified"
86
+ Intercom.check_required_params(:email => "bob@example.com", :something => "else")
87
+ Intercom.check_required_params("email" => "bob@example.com", :something => "else")
88
+ Intercom.check_required_params(:user_id => "123")
89
+ end
90
+ end
metadata ADDED
@@ -0,0 +1,214 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cogniteev-intercom
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.5.4
5
+ platform: ruby
6
+ authors:
7
+ - Ben McRedmond
8
+ - Ciaran Lee
9
+ - Darragh Curran
10
+ - Jeff Gardner
11
+ - Kyle Daigle
12
+ - Declan McGrath
13
+ - Jamie Osler
14
+ - Bob Long
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+ date: 2016-06-22 00:00:00.000000000 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: minitest
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '5.4'
27
+ type: :development
28
+ prerelease: false
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '5.4'
34
+ - !ruby/object:Gem::Dependency
35
+ name: rake
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '10.3'
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: '10.3'
48
+ - !ruby/object:Gem::Dependency
49
+ name: mocha
50
+ requirement: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: fakeweb
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '1.3'
76
+ - !ruby/object:Gem::Dependency
77
+ name: json
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '1.8'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.8'
90
+ description: 'Intercom (https://www.intercom.io) is a customer relationship management
91
+ and messaging tool for web app owners. This library wraps the api provided by Intercom.
92
+ See http://docs.intercom.io/api for more details. '
93
+ email:
94
+ - ben@intercom.io
95
+ - ciaran@intercom.io
96
+ - darragh@intercom.io
97
+ - jeff@intercom.io
98
+ - kyle@digitalworkbox.com
99
+ - declan@intercom.io
100
+ - jamie@intercom.io
101
+ - bob@intercom.io
102
+ executables: []
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - .gitignore
107
+ - .travis.yml
108
+ - Gemfile
109
+ - MIT-LICENSE
110
+ - README.md
111
+ - Rakefile
112
+ - changes.txt
113
+ - intercom.gemspec
114
+ - lib/data/cacert.pem
115
+ - lib/ext/sliceable_hash.rb
116
+ - lib/intercom.rb
117
+ - lib/intercom/admin.rb
118
+ - lib/intercom/api_operations/convert.rb
119
+ - lib/intercom/api_operations/count.rb
120
+ - lib/intercom/api_operations/delete.rb
121
+ - lib/intercom/api_operations/find.rb
122
+ - lib/intercom/api_operations/find_all.rb
123
+ - lib/intercom/api_operations/list.rb
124
+ - lib/intercom/api_operations/load.rb
125
+ - lib/intercom/api_operations/save.rb
126
+ - lib/intercom/collection_proxy.rb
127
+ - lib/intercom/company.rb
128
+ - lib/intercom/contact.rb
129
+ - lib/intercom/conversation.rb
130
+ - lib/intercom/count.rb
131
+ - lib/intercom/errors.rb
132
+ - lib/intercom/event.rb
133
+ - lib/intercom/extended_api_operations/reply.rb
134
+ - lib/intercom/extended_api_operations/tags.rb
135
+ - lib/intercom/extended_api_operations/users.rb
136
+ - lib/intercom/generic_handlers/base_handler.rb
137
+ - lib/intercom/generic_handlers/count.rb
138
+ - lib/intercom/generic_handlers/tag.rb
139
+ - lib/intercom/generic_handlers/tag_find_all.rb
140
+ - lib/intercom/lib/dynamic_accessors.rb
141
+ - lib/intercom/lib/dynamic_accessors_on_method_missing.rb
142
+ - lib/intercom/lib/flat_store.rb
143
+ - lib/intercom/lib/typed_json_deserializer.rb
144
+ - lib/intercom/message.rb
145
+ - lib/intercom/note.rb
146
+ - lib/intercom/notification.rb
147
+ - lib/intercom/request.rb
148
+ - lib/intercom/segment.rb
149
+ - lib/intercom/subscription.rb
150
+ - lib/intercom/tag.rb
151
+ - lib/intercom/traits/api_resource.rb
152
+ - lib/intercom/traits/dirty_tracking.rb
153
+ - lib/intercom/traits/generic_handler_binding.rb
154
+ - lib/intercom/traits/incrementable_attributes.rb
155
+ - lib/intercom/user.rb
156
+ - lib/intercom/utils.rb
157
+ - lib/intercom/version.rb
158
+ - spec/spec_helper.rb
159
+ - spec/unit/intercom/admin_spec.rb
160
+ - spec/unit/intercom/collection_proxy_spec.rb
161
+ - spec/unit/intercom/company_spec.rb
162
+ - spec/unit/intercom/contact_spec.rb
163
+ - spec/unit/intercom/event_spec.rb
164
+ - spec/unit/intercom/lib/flat_store_spec.rb
165
+ - spec/unit/intercom/message_spec.rb
166
+ - spec/unit/intercom/note_spec.rb
167
+ - spec/unit/intercom/notification_spec.rb
168
+ - spec/unit/intercom/request_spec.rb
169
+ - spec/unit/intercom/subscription_spec.rb
170
+ - spec/unit/intercom/tag_spec.rb
171
+ - spec/unit/intercom/traits/api_resource_spec.rb
172
+ - spec/unit/intercom/user_spec.rb
173
+ - spec/unit/intercom_spec.rb
174
+ homepage: https://www.intercom.io
175
+ licenses:
176
+ - MIT
177
+ metadata: {}
178
+ post_install_message:
179
+ rdoc_options: []
180
+ require_paths:
181
+ - lib
182
+ required_ruby_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - '>='
185
+ - !ruby/object:Gem::Version
186
+ version: 1.9.3
187
+ required_rubygems_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ requirements: []
193
+ rubyforge_project:
194
+ rubygems_version: 2.0.14
195
+ signing_key:
196
+ specification_version: 4
197
+ summary: Ruby bindings for the Intercom API
198
+ test_files:
199
+ - spec/spec_helper.rb
200
+ - spec/unit/intercom/admin_spec.rb
201
+ - spec/unit/intercom/collection_proxy_spec.rb
202
+ - spec/unit/intercom/company_spec.rb
203
+ - spec/unit/intercom/contact_spec.rb
204
+ - spec/unit/intercom/event_spec.rb
205
+ - spec/unit/intercom/lib/flat_store_spec.rb
206
+ - spec/unit/intercom/message_spec.rb
207
+ - spec/unit/intercom/note_spec.rb
208
+ - spec/unit/intercom/notification_spec.rb
209
+ - spec/unit/intercom/request_spec.rb
210
+ - spec/unit/intercom/subscription_spec.rb
211
+ - spec/unit/intercom/tag_spec.rb
212
+ - spec/unit/intercom/traits/api_resource_spec.rb
213
+ - spec/unit/intercom/user_spec.rb
214
+ - spec/unit/intercom_spec.rb