Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ You can also use the [omniauth-intercom lib](https://github.com/intercom/omniaut
Resources this API supports:

https://api.intercom.io/users
https://api.intercom.io/teams
https://api.intercom.io/contacts
https://api.intercom.io/companies
https://api.intercom.io/counts
Expand Down Expand Up @@ -129,6 +130,14 @@ intercom.admins.find(id: admin_id)
intercom.admins.all.each {|admin| puts admin.email }
```

#### Teams
```ruby
# Find a team by id
intercom.teams.find(id: team_id)
# Iterate over all teams
intercom.teams.all.each {|team| puts team.name }
```

#### Companies
```ruby
# Add a user to one or more companies
Expand Down
2 changes: 2 additions & 0 deletions lib/intercom.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
require 'intercom/service/subscription'
require 'intercom/service/segment'
require 'intercom/service/tag'
require 'intercom/service/team'
require 'intercom/service/user'
require 'intercom/service/visitor'
require 'intercom/options'
Expand All @@ -31,6 +32,7 @@
require "intercom/admin"
require "intercom/request"
require "intercom/subscription"
require "intercom/team"
require "intercom/errors"
require "intercom/visitor"
require "json"
Expand Down
4 changes: 4 additions & 0 deletions lib/intercom/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,10 @@ def tags
Intercom::Service::Tag.new(self)
end

def teams
Intercom::Service::Team.new(self)
end

def users
Intercom::Service::User.new(self)
end
Expand Down
17 changes: 17 additions & 0 deletions lib/intercom/service/team.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'intercom/service/base_service'
require 'intercom/api_operations/list'
require 'intercom/api_operations/find'

module Intercom
module Service
class Team < BaseService
include ApiOperations::List
include ApiOperations::Find

def collection_class
Intercom::Team
end

end
end
end
7 changes: 7 additions & 0 deletions lib/intercom/team.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require 'intercom/traits/api_resource'

module Intercom
class Team
include Traits::ApiResource
end
end
29 changes: 29 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,35 @@ def test_admin
}
end

def test_team_list
{
"type"=> "team.list",
"teams" => [
{
"type"=> "team",
"id"=> "2744328",
"name"=> "the_a_team",
"admin_ids"=> [646303, 814860],
},
{
"type"=> "team",
"id"=> "814865",
"name"=> "BA_App",
"admin_ids" => [492881, 1195856]
},
]
}
end

def test_team
{
"type" => "team",
"id" => "2744328",
"name" => "the_a_team",
"admin_ids" => [646303, 814860]
}
end

def test_company
{
"type" => "company",
Expand Down
21 changes: 21 additions & 0 deletions spec/unit/intercom/team_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
require "spec_helper"

describe "Intercom::Team" do
let (:client) { Intercom::Client.new(token: 'token') }

it "returns a CollectionProxy for all without making any requests" do
client.expects(:execute_request).never
all = client.teams.all
all.must_be_instance_of(Intercom::ClientCollectionProxy)
end

it 'gets an team list' do
client.expects(:get).with("/teams", {}).returns(test_team_list)
client.teams.all.each { |t| }
end

it "gets an team" do
client.expects(:get).with("/teams/1234", {}).returns(test_team)
client.teams.find(:id => "1234")
end
end