Skip to content

Commit dd26a66

Browse files
authored
Merge branch 'master' into sp/delete_tag
2 parents e5067f7 + eefac08 commit dd26a66

File tree

10 files changed

+138
-0
lines changed

10 files changed

+138
-0
lines changed

README.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,29 @@ intercom.collections.save(section)
693693
intercom.sections.delete(section)
694694
```
695695

696+
#### Phone Call Redirect (switch)
697+
698+
```ruby
699+
# Create a redirect
700+
redirect = intercom.phone_call_redirect.create(phone_number: "+353871234567")
701+
702+
```
703+
704+
#### Data Content Export
705+
706+
```ruby
707+
# Create a data export
708+
export = intercom.data_content_export.create(created_at_after: 1667566801, created_at_before: 1668085202)
709+
710+
711+
#View a data export
712+
export = intercom.data_content_export.find(id: 'k0e27ohsyvh8ef3m')
713+
714+
# Cancel a data export
715+
export = intercom.data_content_export.cancel('k0e27ohsyvh8ef3m')
716+
717+
```
718+
696719
### Errors
697720

698721
There are different styles for error handling - some people prefer exceptions; some prefer nil and check; some prefer error objects/codes. Balancing these preferences alongside our wish to provide an idiomatic gem has brought us to use the current mechanism of throwing specific exceptions. Our approach in the client is to propagate errors and signal our failure loudly so that erroneous data does not get propagated through our customers' systems - in other words, if you see a `Intercom::ServiceUnavailableError` you know where the problem is.

lib/intercom.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
require 'intercom/service/user'
2222
require 'intercom/service/lead'
2323
require 'intercom/deprecated_resources.rb'
24+
require 'intercom/service/export_content'
25+
require 'intercom/service/phone_call_redirect'
2426
require 'intercom/options'
2527
require 'intercom/client'
2628
require 'intercom/contact'
@@ -46,6 +48,8 @@
4648
require 'intercom/errors'
4749
require 'intercom/visitor'
4850
require 'intercom/data_attribute'
51+
require 'intercom/export_content'
52+
require 'intercom/phone_call_redirect'
4953
require 'json'
5054

5155
##

lib/intercom/client.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,14 @@ def collections
124124
Intercom::Service::Collection.new(self)
125125
end
126126

127+
def export_content
128+
Intercom::Service::ExportContent.new(self)
129+
end
130+
131+
def phone_call_redirect
132+
Intercom::Service::PhoneCallRedirect.new(self)
133+
end
134+
127135
def get(path, params)
128136
execute_request Intercom::Request.get(path, params)
129137
end

lib/intercom/export_content.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'intercom/traits/api_resource'
2+
3+
module Intercom
4+
class ExportContent
5+
include Traits::ApiResource
6+
end
7+
end
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'intercom/traits/api_resource'
2+
3+
module Intercom
4+
class PhoneCallRedirect
5+
include Traits::ApiResource
6+
end
7+
end

lib/intercom/service/conversation.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ def collection_class
2121
Intercom::Conversation
2222
end
2323

24+
def collection_proxy_class
25+
Intercom::BaseCollectionProxy
26+
end
27+
2428
def mark_read(id)
2529
@client.put("/conversations/#{id}", read: true)
2630
end
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
require 'intercom/service/base_service'
2+
require 'intercom/api_operations/find'
3+
require 'intercom/api_operations/list'
4+
require 'intercom/api_operations/save'
5+
6+
module Intercom
7+
module Service
8+
class ExportContent < BaseService
9+
include ApiOperations::Load
10+
include ApiOperations::List
11+
include ApiOperations::Find
12+
include ApiOperations::Save
13+
14+
def collection_class
15+
Intercom::ExportContent
16+
end
17+
18+
def collection_name
19+
'export/content/data'
20+
end
21+
22+
def cancel(id)
23+
response = @client.post("/export/cancel/#{id}", {})
24+
collection_class.new.from_response(response)
25+
end
26+
27+
end
28+
end
29+
end
30+
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require 'intercom/service/base_service'
2+
require 'intercom/api_operations/save'
3+
4+
module Intercom
5+
module Service
6+
class PhoneCallRedirect < BaseService
7+
include ApiOperations::Save
8+
9+
def collection_class
10+
Intercom::PhoneCallRedirect
11+
end
12+
13+
end
14+
end
15+
end
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
require 'spec_helper'
2+
3+
describe "Intercom::ExportContent" do
4+
let(:client) { Intercom::Client.new(token: 'token') }
5+
let(:job) {
6+
{
7+
job_identifier: "k0e27ohsyvh8ef3m",
8+
status: "no_data",
9+
download_url: "",
10+
download_expires_at: 0
11+
}
12+
}
13+
14+
it "creates an export job" do
15+
client.expects(:post).with("/export/content/data", {"created_at_after" => 1667566801, "created_at_before" => 1668085202}).returns(job)
16+
client.export_content.create({"created_at_after" => 1667566801, "created_at_before" => 1668085202})
17+
end
18+
19+
it "can view an export job" do
20+
client.expects(:get).with("/export/content/data/#{job[:job_identifier]}", {}).returns(job)
21+
client.export_content.find(id: job[:job_identifier])
22+
end
23+
24+
it "Cancels a export job redirect" do
25+
client.expects(:post).with("/export/cancel/#{job[:job_identifier]}", {}).returns(job)
26+
client.export_content.cancel(job[:job_identifier])
27+
end
28+
end
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
require 'spec_helper'
2+
3+
describe "Intercom::PhoneCallRedirect" do
4+
let(:client) { Intercom::Client.new(token: 'token') }
5+
6+
it "creates a phone redirect" do
7+
8+
client.expects(:post).with("/phone_call_redirect", {phone_number: "+353871234567"})
9+
client.phone_call_redirect.create(phone_number: "+353871234567")
10+
end
11+
12+
end

0 commit comments

Comments
 (0)