intercom 3.5.10 → 4.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.circleci/config.yml +35 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +5 -0
- data/Gemfile +1 -4
- data/README.md +418 -216
- data/RELEASING.md +9 -0
- data/Rakefile +1 -1
- data/changes.txt +141 -0
- data/intercom.gemspec +1 -2
- data/lib/intercom.rb +34 -19
- data/lib/intercom/api_operations/archive.rb +16 -0
- data/lib/intercom/api_operations/delete.rb +4 -1
- data/lib/intercom/api_operations/find.rb +5 -2
- data/lib/intercom/api_operations/find_all.rb +4 -3
- data/lib/intercom/api_operations/list.rb +4 -1
- data/lib/intercom/api_operations/load.rb +4 -2
- data/lib/intercom/api_operations/nested_resource.rb +70 -0
- data/lib/intercom/api_operations/request_hard_delete.rb +12 -0
- data/lib/intercom/api_operations/save.rb +6 -4
- data/lib/intercom/api_operations/scroll.rb +4 -5
- data/lib/intercom/api_operations/search.rb +18 -0
- data/lib/intercom/article.rb +7 -0
- data/lib/intercom/base_collection_proxy.rb +72 -0
- data/lib/intercom/client.rb +66 -18
- data/lib/intercom/client_collection_proxy.rb +17 -39
- data/lib/intercom/collection.rb +7 -0
- data/lib/intercom/company.rb +8 -0
- data/lib/intercom/contact.rb +22 -3
- data/lib/intercom/conversation.rb +5 -0
- data/lib/intercom/data_attribute.rb +7 -0
- data/lib/intercom/deprecated_leads_collection_proxy.rb +22 -0
- data/lib/intercom/deprecated_resources.rb +13 -0
- data/lib/intercom/errors.rb +44 -4
- data/lib/intercom/extended_api_operations/segments.rb +3 -1
- data/lib/intercom/extended_api_operations/tags.rb +3 -1
- data/lib/intercom/lead.rb +21 -0
- data/lib/intercom/lib/typed_json_deserializer.rb +42 -37
- data/lib/intercom/note.rb +4 -0
- data/lib/intercom/request.rb +162 -95
- data/lib/intercom/scroll_collection_proxy.rb +38 -42
- data/lib/intercom/search_collection_proxy.rb +47 -0
- data/lib/intercom/section.rb +23 -0
- data/lib/intercom/segment.rb +4 -0
- data/lib/intercom/service/article.rb +20 -0
- data/lib/intercom/service/base_service.rb +13 -0
- data/lib/intercom/service/collection.rb +24 -0
- data/lib/intercom/service/company.rb +4 -2
- data/lib/intercom/service/contact.rb +29 -6
- data/lib/intercom/service/conversation.rb +23 -2
- data/lib/intercom/service/data_attribute.rb +20 -0
- data/lib/intercom/service/event.rb +12 -0
- data/lib/intercom/service/lead.rb +41 -0
- data/lib/intercom/service/note.rb +4 -8
- data/lib/intercom/service/section.rb +7 -0
- data/lib/intercom/service/tag.rb +8 -8
- data/lib/intercom/service/team.rb +17 -0
- data/lib/intercom/service/user.rb +4 -2
- data/lib/intercom/service/visitor.rb +15 -6
- data/lib/intercom/tag.rb +4 -0
- data/lib/intercom/team.rb +7 -0
- data/lib/intercom/traits/api_resource.rb +48 -27
- data/lib/intercom/traits/dirty_tracking.rb +8 -1
- data/lib/intercom/user.rb +12 -3
- data/lib/intercom/utils.rb +13 -2
- data/lib/intercom/version.rb +1 -1
- data/lib/intercom/visitor.rb +0 -2
- data/spec/spec_helper.rb +881 -436
- data/spec/unit/intercom/admin_spec.rb +2 -2
- data/spec/unit/intercom/article_spec.rb +40 -0
- data/spec/unit/intercom/base_collection_proxy_spec.rb +30 -0
- data/spec/unit/intercom/client_collection_proxy_spec.rb +41 -41
- data/spec/unit/intercom/client_spec.rb +76 -9
- data/spec/unit/intercom/collection_spec.rb +32 -0
- data/spec/unit/intercom/company_spec.rb +29 -21
- data/spec/unit/intercom/contact_spec.rb +365 -29
- data/spec/unit/intercom/conversation_spec.rb +70 -7
- data/spec/unit/intercom/count_spec.rb +4 -4
- data/spec/unit/intercom/data_attribute_spec.rb +40 -0
- data/spec/unit/intercom/deprecated_leads_collection_proxy_spec.rb +17 -0
- data/spec/unit/intercom/event_spec.rb +25 -8
- data/spec/unit/intercom/job_spec.rb +24 -24
- data/spec/unit/intercom/lead_spec.rb +57 -0
- data/spec/unit/intercom/lib/flat_store_spec.rb +22 -20
- data/spec/unit/intercom/message_spec.rb +1 -1
- data/spec/unit/intercom/note_spec.rb +4 -10
- data/spec/unit/intercom/request_spec.rb +150 -9
- data/spec/unit/intercom/scroll_collection_proxy_spec.rb +40 -39
- data/spec/unit/intercom/search_collection_proxy_spec.rb +60 -0
- data/spec/unit/intercom/section_spec.rb +32 -0
- data/spec/unit/intercom/segment_spec.rb +2 -2
- data/spec/unit/intercom/subscription_spec.rb +5 -6
- data/spec/unit/intercom/tag_spec.rb +22 -14
- data/spec/unit/intercom/team_spec.rb +21 -0
- data/spec/unit/intercom/traits/api_resource_spec.rb +129 -47
- data/spec/unit/intercom/user_spec.rb +227 -217
- data/spec/unit/intercom/visitor_spec.rb +49 -0
- data/spec/unit/intercom_spec.rb +5 -3
- metadata +63 -26
- data/.travis.yml +0 -6
- data/lib/intercom/extended_api_operations/users.rb +0 -16
- data/spec/unit/intercom/visitors_spec.rb +0 -61
data/RELEASING.md
ADDED
data/Rakefile
CHANGED
data/changes.txt
CHANGED
@@ -1,3 +1,144 @@
|
|
1
|
+
4.1.1
|
2
|
+
- Fixed bug with deprecated lead resource.
|
3
|
+
|
4
|
+
4.1.0
|
5
|
+
- Added support for new Articles API.
|
6
|
+
- Added support for new Collections API.
|
7
|
+
- Added support for new Sections API.
|
8
|
+
- Added support to equate two resources.
|
9
|
+
- Fixed issue for dirty tracking nested typed objects.
|
10
|
+
|
11
|
+
4.0.1
|
12
|
+
- Fixed bug with nested resources.
|
13
|
+
- Support for add/remove contact on conversation object.
|
14
|
+
|
15
|
+
4.0.0
|
16
|
+
New version to support API version 2.0.
|
17
|
+
- Added support for new Contacts API.
|
18
|
+
- Added support for Conversation Search and for Conversation model changes.
|
19
|
+
- New DataAttribute class to support the Data Attributes. See README for details on usage.
|
20
|
+
- New method to run assignment rules on a conversation: `intercom.conversations.run_assignment_rules(<convo_id>)`.
|
21
|
+
- See Migration guide for breaking changes: https://github.com/intercom/intercom-ruby/wiki/Migration-guide-for-v4
|
22
|
+
|
23
|
+
3.9.5
|
24
|
+
Add Unstable version support
|
25
|
+
|
26
|
+
3.9.4
|
27
|
+
Add handling for Gateway Timeouts
|
28
|
+
|
29
|
+
3.9.3
|
30
|
+
Fix regression added in 3.9.2
|
31
|
+
|
32
|
+
3.9.2
|
33
|
+
Added error handling for malformed responses
|
34
|
+
|
35
|
+
3.9.1
|
36
|
+
Version skipped in error
|
37
|
+
|
38
|
+
3.9.0
|
39
|
+
Added Teams endpoint functionality
|
40
|
+
|
41
|
+
3.8.1
|
42
|
+
Added error handling for company_not_found
|
43
|
+
|
44
|
+
3.8.0
|
45
|
+
Add support for Customer Search (currently in Unstable API Version)
|
46
|
+
https://developers.intercom.com/intercom-api-reference/v0/reference#customers
|
47
|
+
|
48
|
+
3.7.7
|
49
|
+
Remove deprecated features from Gemspec
|
50
|
+
|
51
|
+
3.7.6
|
52
|
+
Added error handling for invalid_document error state
|
53
|
+
|
54
|
+
3.7.5
|
55
|
+
Added error handling for scroll_exists error state
|
56
|
+
|
57
|
+
3.7.4
|
58
|
+
Added support for API versioning via
|
59
|
+
Intercom::Client.new(token: "token", api_version "1.1")
|
60
|
+
|
61
|
+
3.7.3
|
62
|
+
Added error handling for when an admin cannot be found.
|
63
|
+
|
64
|
+
3.7.2
|
65
|
+
Added error handling for when an app's custom attribute limits have been reached.
|
66
|
+
|
67
|
+
3.7.1
|
68
|
+
Extra version bump after faulty previous bump
|
69
|
+
|
70
|
+
3.7.0
|
71
|
+
Providing the ability to hard delete users as described here:
|
72
|
+
https://developers.intercom.com/intercom-api-reference/reference#archive-a-user
|
73
|
+
|
74
|
+
This chaged the previous delete action to an archive action and added a new hard delete option
|
75
|
+
You can still use the delete method but it will archive a user, we added an alias for delete.
|
76
|
+
#442 archiving alias
|
77
|
+
#410 add ability to hard delete users
|
78
|
+
|
79
|
+
Alos enabling reply to last from the SDK
|
80
|
+
#443 Residently conversations last reply
|
81
|
+
|
82
|
+
3.6.2
|
83
|
+
#384 Add ability to snooze conversation
|
84
|
+
You can now snooze conversations in your app via:
|
85
|
+
intercom.conversations.snooze(...)
|
86
|
+
|
87
|
+
3.6.1
|
88
|
+
#430 Allow all conversations to be listed
|
89
|
+
You can now iterate over all conversations for your app via:
|
90
|
+
intercom.conversations.all.each { |convo| ... }
|
91
|
+
|
92
|
+
3.6.0
|
93
|
+
BREAKING CHANGE companies
|
94
|
+
We updated companies to be able to list users via company_id as well as id (#428 )
|
95
|
+
Note that this is a breaking change as we had to remove the old way of listing users via company.
|
96
|
+
|
97
|
+
Previously it was:
|
98
|
+
intercom.companies.users(company.id)
|
99
|
+
|
100
|
+
Now you get a list of users in a company by Intercom Company ID
|
101
|
+
intercom.companies.users_by_intercom_company_id(company.id)
|
102
|
+
|
103
|
+
Now you get a list of users in a company by external company_id
|
104
|
+
intercom.companies.users_by_company_id(company.company_id)
|
105
|
+
|
106
|
+
Rate limit handling
|
107
|
+
We also improved the way we handle rate limits in PR #409 which was related to issue #405
|
108
|
+
|
109
|
+
3.5.23
|
110
|
+
- New type of error (ResourceNotUniqueError). Thrown when trying to create a resource that already exists in Intercom
|
111
|
+
|
112
|
+
3.5.22
|
113
|
+
- Return object type
|
114
|
+
|
115
|
+
3.5.21
|
116
|
+
- Fix for PR-353 which addressed "NoMethodError in intercom/request"
|
117
|
+
- There were issues on older versions of Ruby (<2.3)
|
118
|
+
- This PR does not use lonely operator and instead simple checks for nil parsed_body
|
119
|
+
|
120
|
+
3.5.17
|
121
|
+
- Fix BlockedUserError typo
|
122
|
+
|
123
|
+
3.5.16
|
124
|
+
- Standardize comparison of attribute as string when input is Hash or JSON
|
125
|
+
|
126
|
+
3.5.15
|
127
|
+
- UnauthorizedError on invalid token
|
128
|
+
- BlockerUserError on restoring blocked user
|
129
|
+
|
130
|
+
3.5.14
|
131
|
+
- Rate Limit Exception (@jaimeiniesta)
|
132
|
+
|
133
|
+
3.5.12
|
134
|
+
- Use base_url in initialize parameter
|
135
|
+
|
136
|
+
3.5.11
|
137
|
+
- Add scroll api for companies
|
138
|
+
|
139
|
+
3.5.10
|
140
|
+
- Add Support for find_all events pagination (@jkeyes)
|
141
|
+
|
1
142
|
3.5.9
|
2
143
|
- Fix event create method
|
3
144
|
|
data/intercom.gemspec
CHANGED
@@ -12,7 +12,6 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.summary = %q{Ruby bindings for the Intercom API}
|
13
13
|
spec.description = %Q{Intercom (https://www.intercom.io) is a customer relationship management and messaging tool for web app owners. This library wraps the api provided by Intercom. See http://docs.intercom.io/api for more details. }
|
14
14
|
spec.license = "MIT"
|
15
|
-
spec.rubyforge_project = "intercom"
|
16
15
|
|
17
16
|
spec.files = `git ls-files`.split("\n")
|
18
17
|
spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -20,12 +19,12 @@ Gem::Specification.new do |spec|
|
|
20
19
|
spec.require_paths = ["lib"]
|
21
20
|
|
22
21
|
spec.add_development_dependency 'minitest', '~> 5.4'
|
22
|
+
spec.add_development_dependency "m", "~> 1.5.0"
|
23
23
|
spec.add_development_dependency 'rake', '~> 10.3'
|
24
24
|
spec.add_development_dependency 'mocha', '~> 1.0'
|
25
25
|
spec.add_development_dependency "fakeweb", ["~> 1.3"]
|
26
26
|
spec.add_development_dependency "pry"
|
27
27
|
|
28
|
-
spec.add_dependency 'json', '>= 1.8'
|
29
28
|
spec.required_ruby_version = '>= 2.1.0'
|
30
29
|
spec.add_development_dependency 'gem-release'
|
31
30
|
end
|
data/lib/intercom.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'intercom/version'
|
2
4
|
require 'intercom/service/admin'
|
5
|
+
require 'intercom/service/article'
|
6
|
+
require 'intercom/service/collection'
|
3
7
|
require 'intercom/service/company'
|
4
8
|
require 'intercom/service/contact'
|
5
9
|
require 'intercom/service/conversation'
|
@@ -10,28 +14,39 @@ require 'intercom/service/note'
|
|
10
14
|
require 'intercom/service/job'
|
11
15
|
require 'intercom/service/subscription'
|
12
16
|
require 'intercom/service/segment'
|
17
|
+
require 'intercom/service/section'
|
13
18
|
require 'intercom/service/tag'
|
14
|
-
require 'intercom/service/
|
19
|
+
require 'intercom/service/team'
|
15
20
|
require 'intercom/service/visitor'
|
21
|
+
require 'intercom/service/user'
|
22
|
+
require 'intercom/service/lead'
|
23
|
+
require 'intercom/deprecated_resources.rb'
|
16
24
|
require 'intercom/options'
|
17
25
|
require 'intercom/client'
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
25
|
-
require
|
26
|
-
require
|
27
|
-
require
|
28
|
-
require
|
29
|
-
require
|
30
|
-
require
|
31
|
-
require
|
32
|
-
require
|
33
|
-
require
|
34
|
-
require
|
26
|
+
require 'intercom/contact'
|
27
|
+
require 'intercom/user'
|
28
|
+
require 'intercom/lead'
|
29
|
+
require 'intercom/count'
|
30
|
+
require 'intercom/collection'
|
31
|
+
require 'intercom/company'
|
32
|
+
require 'intercom/service/data_attribute'
|
33
|
+
require 'intercom/note'
|
34
|
+
require 'intercom/job'
|
35
|
+
require 'intercom/tag'
|
36
|
+
require 'intercom/segment'
|
37
|
+
require 'intercom/section'
|
38
|
+
require 'intercom/event'
|
39
|
+
require 'intercom/conversation'
|
40
|
+
require 'intercom/message'
|
41
|
+
require 'intercom/admin'
|
42
|
+
require 'intercom/article'
|
43
|
+
require 'intercom/request'
|
44
|
+
require 'intercom/subscription'
|
45
|
+
require 'intercom/team'
|
46
|
+
require 'intercom/errors'
|
47
|
+
require 'intercom/visitor'
|
48
|
+
require 'intercom/data_attribute'
|
49
|
+
require 'json'
|
35
50
|
|
36
51
|
##
|
37
52
|
# Intercom is a customer relationship management and messaging tool for web app owners
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'intercom/utils'
|
4
|
+
|
5
|
+
module Intercom
|
6
|
+
module ApiOperations
|
7
|
+
module Archive
|
8
|
+
def archive(object)
|
9
|
+
@client.delete("/#{collection_name}/#{object.id}", {})
|
10
|
+
object
|
11
|
+
end
|
12
|
+
|
13
|
+
alias_method 'delete', 'archive'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,13 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'intercom/utils'
|
2
4
|
|
3
5
|
module Intercom
|
4
6
|
module ApiOperations
|
5
7
|
module Delete
|
6
8
|
def delete(object)
|
7
|
-
collection_name = Utils.resource_class_to_collection_name(collection_class)
|
8
9
|
@client.delete("/#{collection_name}/#{object.id}", {})
|
9
10
|
object
|
10
11
|
end
|
12
|
+
|
13
|
+
alias_method 'archive', 'delete'
|
11
14
|
end
|
12
15
|
end
|
13
16
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'intercom/utils'
|
2
4
|
|
3
5
|
module Intercom
|
@@ -5,14 +7,15 @@ module Intercom
|
|
5
7
|
module Find
|
6
8
|
def find(params)
|
7
9
|
raise BadRequestError, "#{self}#find takes a hash as its parameter but you supplied #{params.inspect}" unless params.is_a? Hash
|
8
|
-
|
10
|
+
|
9
11
|
if params[:id]
|
10
12
|
id = params.delete(:id)
|
11
13
|
response = @client.get("/#{collection_name}/#{id}", params)
|
12
14
|
else
|
13
15
|
response = @client.get("/#{collection_name}", params)
|
14
16
|
end
|
15
|
-
raise Intercom::HttpError
|
17
|
+
raise Intercom::HttpError, 'Http Error - No response entity returned' unless response
|
18
|
+
|
16
19
|
from_api(response)
|
17
20
|
end
|
18
21
|
end
|
@@ -1,13 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'intercom/client_collection_proxy'
|
2
4
|
require 'intercom/utils'
|
3
5
|
|
4
6
|
module Intercom
|
5
7
|
module ApiOperations
|
6
8
|
module FindAll
|
7
|
-
|
8
9
|
def find_all(params)
|
9
10
|
raise BadRequestError, "#find takes a hash as its parameter but you supplied #{params.inspect}" unless params.is_a? Hash
|
10
|
-
|
11
|
+
|
11
12
|
finder_details = {}
|
12
13
|
if params[:id] && !type_switched_finder?(params)
|
13
14
|
finder_details[:url] = "/#{collection_name}/#{params[:id]}"
|
@@ -16,7 +17,7 @@ module Intercom
|
|
16
17
|
finder_details[:url] = "/#{collection_name}"
|
17
18
|
finder_details[:params] = params
|
18
19
|
end
|
19
|
-
|
20
|
+
collection_proxy_class.new(collection_name, collection_class, details: finder_details, client: @client)
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
@@ -1,11 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'intercom/client_collection_proxy'
|
4
|
+
require 'intercom/base_collection_proxy'
|
2
5
|
require 'intercom/utils'
|
3
6
|
|
4
7
|
module Intercom
|
5
8
|
module ApiOperations
|
6
9
|
module List
|
7
10
|
def all
|
8
|
-
|
11
|
+
collection_proxy_class.new(collection_name, collection_class, client: @client)
|
9
12
|
end
|
10
13
|
end
|
11
14
|
end
|
@@ -1,16 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'intercom/utils'
|
2
4
|
|
3
5
|
module Intercom
|
4
6
|
module ApiOperations
|
5
7
|
module Load
|
6
8
|
def load(object)
|
7
|
-
collection_name = Utils.resource_class_to_collection_name(collection_class)
|
8
9
|
if object.id
|
9
10
|
response = @client.get("/#{collection_name}/#{object.id}", {})
|
10
11
|
else
|
11
12
|
raise "Cannot load #{collection_class} as it does not have a valid id."
|
12
13
|
end
|
13
|
-
raise Intercom::HttpError
|
14
|
+
raise Intercom::HttpError, 'Http Error - No response entity returned' unless response
|
15
|
+
|
14
16
|
object.from_response(response)
|
15
17
|
end
|
16
18
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Intercom
|
4
|
+
module ApiOperations
|
5
|
+
module NestedResource
|
6
|
+
module ClassMethods
|
7
|
+
def nested_resource_methods(resource,
|
8
|
+
path: nil,
|
9
|
+
operations: nil,
|
10
|
+
resource_plural: nil)
|
11
|
+
resource_plural ||= Utils.pluralize(resource.to_s)
|
12
|
+
path ||= resource_plural
|
13
|
+
raise ArgumentError, 'operations array required' if operations.nil?
|
14
|
+
|
15
|
+
resource_url_method = :"#{resource_plural}_url"
|
16
|
+
|
17
|
+
resource_name = Utils.resource_class_to_collection_name(self)
|
18
|
+
|
19
|
+
define_method(resource_url_method.to_sym) do |id, nested_id = nil|
|
20
|
+
url = "/#{resource_name}/#{id}/#{path}"
|
21
|
+
url += "/#{nested_id}" unless nested_id.nil?
|
22
|
+
url
|
23
|
+
end
|
24
|
+
|
25
|
+
operations.each do |operation|
|
26
|
+
case operation
|
27
|
+
when :create
|
28
|
+
define_method(:"create_#{resource}") do |params|
|
29
|
+
url = send(resource_url_method, self.id)
|
30
|
+
response = client.post(url, params)
|
31
|
+
raise_no_response_error unless response
|
32
|
+
self.class.from_api(response)
|
33
|
+
end
|
34
|
+
when :add
|
35
|
+
define_method(:"add_#{resource}") do |params|
|
36
|
+
url = send(resource_url_method, self.id)
|
37
|
+
response = client.post(url, params)
|
38
|
+
raise_no_response_error unless response
|
39
|
+
self.class.from_api(response)
|
40
|
+
end
|
41
|
+
when :delete
|
42
|
+
define_method(:"remove_#{resource}") do |params|
|
43
|
+
url = send(resource_url_method, self.id, params[:id])
|
44
|
+
response = client.delete(url, params)
|
45
|
+
raise_no_response_error unless response
|
46
|
+
self.class.from_api(response)
|
47
|
+
end
|
48
|
+
when :list
|
49
|
+
define_method(resource_plural.to_sym) do
|
50
|
+
url = send(resource_url_method, self.id)
|
51
|
+
resource_class = Utils.constantize_resource_name(resource.to_s)
|
52
|
+
resource_class.collection_proxy_class.new(resource_plural, resource_class, details: { url: url }, client: client)
|
53
|
+
end
|
54
|
+
else
|
55
|
+
raise ArgumentError, "Unknown operation: #{operation.inspect}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.included(base)
|
62
|
+
base.extend(ClassMethods)
|
63
|
+
end
|
64
|
+
|
65
|
+
private def raise_no_response_error
|
66
|
+
raise Intercom::HttpError, 'Http Error - No response entity returned'
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|