livechat_client 0.0.1

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 (44) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +39 -0
  4. data/README.md +327 -0
  5. data/Rakefile +13 -0
  6. data/conf/cacert.pem +3376 -0
  7. data/lib/livechat.rb +23 -0
  8. data/lib/livechat/rest/agents.rb +19 -0
  9. data/lib/livechat/rest/canned_responses.rb +9 -0
  10. data/lib/livechat/rest/chats.rb +18 -0
  11. data/lib/livechat/rest/client.rb +142 -0
  12. data/lib/livechat/rest/errors.rb +14 -0
  13. data/lib/livechat/rest/goals.rb +14 -0
  14. data/lib/livechat/rest/groups.rb +9 -0
  15. data/lib/livechat/rest/instance_resource.rb +115 -0
  16. data/lib/livechat/rest/list_resource.rb +115 -0
  17. data/lib/livechat/rest/reports.rb +116 -0
  18. data/lib/livechat/rest/status.rb +13 -0
  19. data/lib/livechat/rest/utils.rb +25 -0
  20. data/lib/livechat/rest/visitors.rb +17 -0
  21. data/lib/livechat/util.rb +7 -0
  22. data/lib/livechat/version.rb +3 -0
  23. data/livechat_client.gemspec +33 -0
  24. data/spec/fixtures/agent.json +30 -0
  25. data/spec/fixtures/agents.json +16 -0
  26. data/spec/fixtures/canned_response.json +12 -0
  27. data/spec/fixtures/canned_responses.json +37 -0
  28. data/spec/fixtures/chat.json +129 -0
  29. data/spec/fixtures/chats.json +135 -0
  30. data/spec/fixtures/goal.json +8 -0
  31. data/spec/fixtures/goals.json +12 -0
  32. data/spec/fixtures/group.json +10 -0
  33. data/spec/fixtures/groups.json +32 -0
  34. data/spec/fixtures/visitors.json +91 -0
  35. data/spec/livechat/rest/agents_spec.rb +56 -0
  36. data/spec/livechat/rest/canned_responses_spec.rb +43 -0
  37. data/spec/livechat/rest/chats_spec.rb +37 -0
  38. data/spec/livechat/rest/goals_spec.rb +50 -0
  39. data/spec/livechat/rest/groups_spec.rb +45 -0
  40. data/spec/livechat/rest/reports_spec.rb +67 -0
  41. data/spec/livechat/rest/status_spec.rb +22 -0
  42. data/spec/livechat/rest/visitors_spec.rb +44 -0
  43. data/spec/spec_helper.rb +38 -0
  44. metadata +185 -0
@@ -0,0 +1,45 @@
1
+ require "spec_helper"
2
+
3
+ include WebMock::API
4
+
5
+
6
+ describe LiveChat::REST::Groups do
7
+ before do
8
+ @livechat = create_client
9
+
10
+ stub_rest 'groups'
11
+ end
12
+
13
+ after do
14
+ WebMock.reset!
15
+ end
16
+
17
+
18
+ it "lists all groups" do
19
+ @livechat.groups
20
+ end
21
+
22
+ it "gets a single group details" do
23
+ @livechat.groups(2)
24
+ end
25
+
26
+ it "creates a new group" do
27
+ @livechat.groups.create do |group|
28
+ group[:name] = 'Human Resources'
29
+ group[:agents] = ['jenny.doe@mycompany.com', 'john.doe@mycompany.com']
30
+ end
31
+ end
32
+
33
+ it "updates a group" do
34
+ @livechat.groups(3).update do |group|
35
+ group[:name] = 'Quality Assurance'
36
+ group[:agents] = ['jane.doe@mycompany.com']
37
+ end
38
+ end
39
+
40
+ it "removes a group" do
41
+ @livechat.groups(4).delete
42
+ end
43
+
44
+ end
45
+
@@ -0,0 +1,67 @@
1
+ require "spec_helper"
2
+
3
+ include WebMock::API
4
+
5
+
6
+ describe LiveChat::REST::Reports do
7
+ before do
8
+ @livechat = create_client
9
+ @reports_base = "#{ENDPOINT}/reports"
10
+ stub_request(:get, /#{@reports_base}/).to_return(:body => {})
11
+ end
12
+
13
+ after do
14
+ WebMock.reset!
15
+ end
16
+
17
+ it "gets dashboard data" do
18
+ @livechat.reports.dashboard
19
+ expect(@livechat.last_request.path).to eq '/reports/dashboard'
20
+ end
21
+
22
+ it "gets dashboard data for agent" do
23
+ @livechat.reports.dashboard(:agent => 'john.doe@mycompany.com')
24
+ end
25
+
26
+ it "gets dashboard data for group" do
27
+ @livechat.reports.dashboard(:group => 1)
28
+ expect(@livechat.last_request.path).to eq '/reports/dashboard/group/1'
29
+ end
30
+
31
+ it "gets chats report" do
32
+ @livechat.reports.chats(:date_from => '2013-01-01')
33
+ expect(@livechat.last_request.path).to eq '/reports/chats?date_from=2013-01-01'
34
+ end
35
+
36
+ it "gets ratings report" do
37
+ @livechat.reports.ratings(:group => 1)
38
+ expect(@livechat.last_request.path).to eq '/reports/ratings?group=1'
39
+ end
40
+
41
+ it "gets ratings ranking" do
42
+ @livechat.reports.ratings_ranking(:group => 1)
43
+ end
44
+
45
+ it "gets queued visitors report" do
46
+ @livechat.reports.queued_visitors(:date_from => '2013-01-01')
47
+ end
48
+
49
+ it "gets queue waiting times report" do
50
+ @livechat.reports.queued_visitors_waiting_times(:date_from => '2013-01-01')
51
+ end
52
+
53
+ it "gets availability report" do
54
+ @livechat.reports.availability
55
+ end
56
+
57
+ it "gets chatting time report" do
58
+ @livechat.reports.chatting_time
59
+ end
60
+
61
+ it "gets goals report" do
62
+ @livechat.reports.goals
63
+ expect(@livechat.last_request.path).to eq '/reports/goals'
64
+ end
65
+
66
+ end
67
+
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ include WebMock::API
4
+
5
+
6
+ describe LiveChat::REST::Status do
7
+ before do
8
+ @livechat = create_client
9
+
10
+ stub_request(:any, /.*status/)
11
+ end
12
+
13
+ after do
14
+ WebMock.reset!
15
+ end
16
+
17
+ it "gets status" do
18
+ @livechat.status(:group => 0)
19
+ end
20
+
21
+ end
22
+
@@ -0,0 +1,44 @@
1
+ require "spec_helper"
2
+
3
+ include WebMock::API
4
+
5
+
6
+ describe LiveChat::REST::Visitors do
7
+ before do
8
+ @livechat = create_client
9
+
10
+ base = "#{ENDPOINT}/visitors"
11
+ stub_request(:post, /#{base}/)
12
+ stub_request(:get, "#{base}").to_return(:body => fixture('visitors.json'))
13
+
14
+ end
15
+
16
+ after do
17
+ WebMock.reset!
18
+ end
19
+
20
+
21
+ it "lists all visitors" do
22
+ visitors = @livechat.visitors
23
+ expect(visitors.list.length).to be(2)
24
+
25
+ end
26
+
27
+ it "lists only chatting visitors" do
28
+ @livechat.visitors.chatting
29
+ end
30
+
31
+ it "adds custom visitor details" do
32
+ @livechat.visitors('S1352647457.ac951bfe2e').add_details do |detail|
33
+ detail[:license_id] = '12345'
34
+ detail[:token] = '26132406c42c96ba61ed42689b70f719'
35
+ detail[:id] = 'my-app'
36
+ #todo: need to test array encoding for the fields parameter. example:
37
+ #curl -H X-API-Version:2 https://api.livechatinc.com/visitors/S1352647457.ac951bfe2e/details -X POST
38
+ #-d "license_id=12345&token=26132406c42c96ba61ed42689b70f719&id=my-app&fields[0][name]=Age&fields[0][value]=36"
39
+ detail[:fields] = [{:name => 'Age', :value => 36}]
40
+ end
41
+ end
42
+
43
+ end
44
+
@@ -0,0 +1,38 @@
1
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
2
+
3
+ require 'livechat'
4
+ require 'webmock/rspec'
5
+ require 'json'
6
+
7
+ def fixture_path
8
+ File.expand_path("../fixtures", __FILE__)
9
+ end
10
+
11
+ def fixture(file)
12
+ File.new(fixture_path + "/" + file).read.to_s
13
+ end
14
+
15
+ def stub_rest(resource_name)
16
+ base = "#{ENDPOINT}/#{resource_name}"
17
+ singular = resource_name.chop #todo inflect
18
+ stub_request(:delete, /#{base}/)
19
+ stub_request(:any, /#{base}/).to_return(:body => fixture("#{singular}.json"))
20
+ stub_request(:get, "#{base}").to_return(:body => fixture("#{resource_name}.json"))
21
+ end
22
+
23
+ if ENV["LIVE"]
24
+ LOGIN = ENV["LIVECHAT_LOGIN"]
25
+ API_KEY = ENV["LIVECHAT_API_KEY"]
26
+ else
27
+ LOGIN, API_KEY = "ignored_login", "ignored_api_key"
28
+ ENDPOINT = "https://#{LOGIN}:#{API_KEY}@ignored:443"
29
+ end
30
+
31
+ LiveChat::REST::Client::DEFAULTS[:host] = 'ignored'
32
+
33
+ def create_client
34
+ LiveChat::REST::Client.new do |config|
35
+ config[:login] = LOGIN
36
+ config[:api_key] = API_KEY
37
+ end
38
+ end
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: livechat_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Alexandre Maia
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-09-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: webmock
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.9.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.9.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: hashie
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '1.2'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '1.2'
78
+ - !ruby/object:Gem::Dependency
79
+ name: multi_json
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Ruby wrapper for the REST API at http://developers.livechatinc.com/rest-api/
95
+ email:
96
+ - alexandre.maia@gmail.com
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .gitignore
102
+ - Gemfile
103
+ - Gemfile.lock
104
+ - README.md
105
+ - Rakefile
106
+ - conf/cacert.pem
107
+ - lib/livechat.rb
108
+ - lib/livechat/rest/agents.rb
109
+ - lib/livechat/rest/canned_responses.rb
110
+ - lib/livechat/rest/chats.rb
111
+ - lib/livechat/rest/client.rb
112
+ - lib/livechat/rest/errors.rb
113
+ - lib/livechat/rest/goals.rb
114
+ - lib/livechat/rest/groups.rb
115
+ - lib/livechat/rest/instance_resource.rb
116
+ - lib/livechat/rest/list_resource.rb
117
+ - lib/livechat/rest/reports.rb
118
+ - lib/livechat/rest/status.rb
119
+ - lib/livechat/rest/utils.rb
120
+ - lib/livechat/rest/visitors.rb
121
+ - lib/livechat/util.rb
122
+ - lib/livechat/version.rb
123
+ - livechat_client.gemspec
124
+ - spec/fixtures/agent.json
125
+ - spec/fixtures/agents.json
126
+ - spec/fixtures/canned_response.json
127
+ - spec/fixtures/canned_responses.json
128
+ - spec/fixtures/chat.json
129
+ - spec/fixtures/chats.json
130
+ - spec/fixtures/goal.json
131
+ - spec/fixtures/goals.json
132
+ - spec/fixtures/group.json
133
+ - spec/fixtures/groups.json
134
+ - spec/fixtures/visitors.json
135
+ - spec/livechat/rest/agents_spec.rb
136
+ - spec/livechat/rest/canned_responses_spec.rb
137
+ - spec/livechat/rest/chats_spec.rb
138
+ - spec/livechat/rest/goals_spec.rb
139
+ - spec/livechat/rest/groups_spec.rb
140
+ - spec/livechat/rest/reports_spec.rb
141
+ - spec/livechat/rest/status_spec.rb
142
+ - spec/livechat/rest/visitors_spec.rb
143
+ - spec/spec_helper.rb
144
+ homepage: https://github.com/cxz/livechat_client
145
+ licenses:
146
+ - MIT
147
+ post_install_message:
148
+ rdoc_options:
149
+ - --line-numbers
150
+ - --inline-source
151
+ - --title
152
+ - livechat
153
+ - --main
154
+ - README.md
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ none: false
159
+ requirements:
160
+ - - ! '>='
161
+ - !ruby/object:Gem::Version
162
+ version: 1.8.7
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ! '>='
167
+ - !ruby/object:Gem::Version
168
+ version: 1.3.6
169
+ requirements: []
170
+ rubyforge_project:
171
+ rubygems_version: 1.8.24
172
+ signing_key:
173
+ specification_version: 3
174
+ summary: LiveChat REST API Client
175
+ test_files:
176
+ - spec/livechat/rest/agents_spec.rb
177
+ - spec/livechat/rest/groups_spec.rb
178
+ - spec/livechat/rest/status_spec.rb
179
+ - spec/livechat/rest/chats_spec.rb
180
+ - spec/livechat/rest/canned_responses_spec.rb
181
+ - spec/livechat/rest/goals_spec.rb
182
+ - spec/livechat/rest/visitors_spec.rb
183
+ - spec/livechat/rest/reports_spec.rb
184
+ - spec/spec_helper.rb
185
+ has_rdoc: