chatmeter 1.1.8

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.
@@ -0,0 +1,14 @@
1
+ module Chatmeter
2
+ class API
3
+
4
+ # GET /singlesignon/generateLoginToken?username={username}
5
+ def sso_token_for(user_name)
6
+ request(
7
+ expects: 200,
8
+ method: :get,
9
+ path: "/singlesignon/generateLoginToken?username=#{user_name}"
10
+ )[:ssoToken]
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,33 @@
1
+ module Chatmeter
2
+ class API
3
+
4
+ # GET /users/{user_id}/groups
5
+ def groups_for_user(user_id)
6
+ request(
7
+ expects: 200,
8
+ method: :get,
9
+ path: "/users/#{user_id}/groups"
10
+ )
11
+ end
12
+
13
+ # POST /users/{user_id}/groups
14
+ def add_group_to_user(user_id, params)
15
+ request(
16
+ expects: 200,
17
+ method: :post,
18
+ path: "/users/#{user_id}/groups",
19
+ body: params.to_json
20
+ )
21
+ end
22
+
23
+ # DELETE /users/{user_id}/groups?groupIds={group_ids}
24
+ def delete_group_access(user_id, group_ids)
25
+ request(
26
+ expects: 200,
27
+ method: :delete,
28
+ path: "/users/#{user_id}/groups?groupIds=#{group_ids.join(',')}"
29
+ )
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,36 @@
1
+ module Chatmeter
2
+ class API
3
+
4
+ # GET /users/{user_id}/locations
5
+ def locations_for_user(user_id)
6
+ request(
7
+ expects: 200,
8
+ method: :get,
9
+ path: "/users/#{user_id}/locations"
10
+ )
11
+ end
12
+
13
+ # POST /users/{user_id}/locations
14
+ def add_location_to_user(user_id, location_ids)
15
+ request(
16
+ expects: 200,
17
+ method: :post,
18
+ path: "/users/#{user_id}/locations",
19
+ body: {
20
+ "locationIds": location_ids
21
+ }.to_json
22
+ )
23
+ end
24
+
25
+ # DELETE /users/{user_id}/locations?locationIds={location_ids}
26
+ def remove_location_access(user_id, params)
27
+ request(
28
+ expects: 200,
29
+ method: :post,
30
+ path: "/users/#{user_id}/locations/delete",
31
+ body: params.to_json
32
+ )
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,89 @@
1
+ module Chatmeter
2
+ class API
3
+
4
+ # GET /users
5
+ def list_all_users(params={})
6
+ request(
7
+ expects: 200,
8
+ method: :get,
9
+ path: "/users",
10
+ query: params
11
+ )[:users]
12
+ end
13
+
14
+ # GET /user/{user_id}
15
+ def get_user(user_id)
16
+ request(
17
+ expects: 200,
18
+ method: :get,
19
+ path: "/user/#{user_id}"
20
+ )
21
+ end
22
+
23
+ # POST /users
24
+ def create_new_user(params)
25
+ request(
26
+ expects: 200,
27
+ method: :post,
28
+ path: "/users",
29
+ body: params.to_json
30
+ )
31
+ end
32
+
33
+ # PUT /users/{user_id}
34
+ def update_user(user_id, params)
35
+ request(
36
+ expects: 200,
37
+ method: :put,
38
+ path: "/users/#{user_id}",
39
+ body: params.to_json
40
+ )
41
+ end
42
+
43
+ # PUT /users/{user_id}/password
44
+ def update_user_password(user_id, params)
45
+ request(
46
+ expects: 200,
47
+ method: :put,
48
+ path: "/users/#{user_id}/password",
49
+ body: params.to_json
50
+ )
51
+ end
52
+
53
+ # DELETE /users/{user_id}
54
+ def delete_user(user_id)
55
+ request(
56
+ expects: 200,
57
+ method: :delete,
58
+ path: "/users/#{user_id}"
59
+ )
60
+ end
61
+
62
+ # POST /users
63
+ def enable_user(user_id, params)
64
+ request(
65
+ expects: 200,
66
+ method: :post,
67
+ path: "/users/#{user_id}/status",
68
+ body: params.to_json
69
+ )
70
+ end
71
+
72
+ def add_sub_account(user_id, params)
73
+ request(
74
+ expects: 200,
75
+ method: :put,
76
+ path: "/users/#{user_id}/accounts",
77
+ body: params.to_json
78
+ )
79
+ end
80
+
81
+ def get_user_locations(user_id)
82
+ request(
83
+ expects: 200,
84
+ method: :get,
85
+ path: "/users/#{user_id}/locations"
86
+ )
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,92 @@
1
+ require "base64"
2
+ require "cgi"
3
+ require "excon"
4
+ require "securerandom"
5
+ require "uri"
6
+ require "multi_json"
7
+ require 'json'
8
+
9
+ require "chatmeter/version"
10
+ require "chatmeter/api/errors"
11
+ require "chatmeter/api/user_management"
12
+ require "chatmeter/api/single_signon"
13
+ require "chatmeter/api/group"
14
+ require "chatmeter/api/account"
15
+ require "chatmeter/api/location"
16
+ require "chatmeter/api/review"
17
+ require "chatmeter/api/user_group_access"
18
+ require "chatmeter/api/user_location_access"
19
+ require "chatmeter/api/login"
20
+ require "chatmeter/api/campaign"
21
+ require "chatmeter/api/mock"
22
+ require "chatmeter/api/errors"
23
+
24
+ module Chatmeter
25
+ class API
26
+
27
+ HEADERS = {
28
+ 'Accept-Encoding': 'gzip',
29
+ 'Accept': 'application/json',
30
+ 'Content-Type': 'application/json'
31
+ }
32
+
33
+ OPTIONS = {
34
+ headers: {},
35
+ host: ENV['CHATMETER_API_ROOT'] || "live.chatmeter.com",
36
+ username: ENV['CHATMETER_ADMIN_USER'],
37
+ password: ENV['CHATMETER_ADMIN_PASSWORD'],
38
+ scheme: 'https',
39
+ api_version: 'v5'
40
+ }
41
+
42
+ def initialize(options={})
43
+ options = OPTIONS.merge(options)
44
+ options = options.merge(headers: HEADERS)
45
+
46
+ if !@api_key && options.has_key?(:username) && options.has_key?(:password)
47
+ username = options.delete(:username)
48
+ password = options.delete(:password)
49
+ @connection = Excon.new("#{options[:scheme]}://#{options[:host]}", options)
50
+ @api_key = self.post_login(username, password)[:token]
51
+ end
52
+
53
+ headers = HEADERS.merge({ Authorization: @api_key })
54
+ @connection = Excon.new("#{options[:scheme]}://#{options[:host]}", headers: headers, mock: options[:mock])
55
+ end
56
+
57
+ def request(params, &block)
58
+ params[:path] = "/#{OPTIONS[:api_version]}#{params[:path]}"
59
+
60
+ begin
61
+ response = @connection.request(params, &block)
62
+ rescue Excon::Errors::HTTPStatusError => error
63
+ klass = case error.response.status
64
+ when 400 then Chatmeter::API::Errors::BadRequest
65
+ when 401 then Chatmeter::API::Errors::Unauthorized
66
+ when 403 then Chatmeter::API::Errors::Forbidden
67
+ when 404 then Chatmeter::API::Errors::NotFound
68
+ when /50./ then Chatmeter::API::Errors::RequestFailed
69
+ else Chatmeter::API::Errors::ErrorWithResponse
70
+ end
71
+
72
+ reerror = klass.new(error.message, error.response)
73
+ reerror.set_backtrace(error.backtrace)
74
+ raise(reerror)
75
+ end
76
+
77
+ if response.body && !response.body.empty?
78
+ begin
79
+ response.body = MultiJson.load(response.body, symbolize_keys: true)
80
+ rescue
81
+ if response.headers['Content-Type'] === 'application/json'
82
+ raise
83
+ end
84
+ # leave non-JSON body as is
85
+ end
86
+ end
87
+
88
+ @connection.reset
89
+ response.body || ""
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,3 @@
1
+ module Chatmeter
2
+ VERSION = "1.1.8"
3
+ end
data/lib/chatmeter.rb ADDED
@@ -0,0 +1 @@
1
+ require(File.join(File.dirname(__FILE__), "chatmeter", "api"))
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chatmeter
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.8
5
+ platform: ruby
6
+ authors:
7
+ - Levi Brown
8
+ - Kyle Rose
9
+ - Pablo Rodriguez
10
+ autorequire:
11
+ bindir: exe
12
+ cert_chain: []
13
+ date: 2018-12-18 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.15'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.15'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - "~>"
34
+ - !ruby/object:Gem::Version
35
+ version: '10.0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: '10.0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '3.0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: '3.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: pry
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: multi_json
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: excon
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: json
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
106
+ type: :runtime
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ description: ''
114
+ email:
115
+ - levi.brown@getg5.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - ".gitignore"
121
+ - ".rspec"
122
+ - ".travis.yml"
123
+ - CODE_OF_CONDUCT.md
124
+ - Gemfile
125
+ - LICENSE.txt
126
+ - README.md
127
+ - Rakefile
128
+ - bin/console
129
+ - bin/setup
130
+ - chatmeter.gemspec
131
+ - lib/chatmeter.rb
132
+ - lib/chatmeter/api.rb
133
+ - lib/chatmeter/api/account.rb
134
+ - lib/chatmeter/api/campaign.rb
135
+ - lib/chatmeter/api/errors.rb
136
+ - lib/chatmeter/api/group.rb
137
+ - lib/chatmeter/api/location.rb
138
+ - lib/chatmeter/api/login.rb
139
+ - lib/chatmeter/api/mock.rb
140
+ - lib/chatmeter/api/mock/account.rb
141
+ - lib/chatmeter/api/mock/campaign.rb
142
+ - lib/chatmeter/api/mock/group.rb
143
+ - lib/chatmeter/api/mock/location.rb
144
+ - lib/chatmeter/api/mock/login.rb
145
+ - lib/chatmeter/api/mock/review.rb
146
+ - lib/chatmeter/api/mock/single_signon.rb
147
+ - lib/chatmeter/api/mock/user_group_access.rb
148
+ - lib/chatmeter/api/mock/user_location_access.rb
149
+ - lib/chatmeter/api/mock/user_management.rb
150
+ - lib/chatmeter/api/review.rb
151
+ - lib/chatmeter/api/single_signon.rb
152
+ - lib/chatmeter/api/user_group_access.rb
153
+ - lib/chatmeter/api/user_location_access.rb
154
+ - lib/chatmeter/api/user_management.rb
155
+ - lib/chatmeter/version.rb
156
+ homepage: https://github.com/G5/chatmeter
157
+ licenses:
158
+ - MIT
159
+ metadata: {}
160
+ post_install_message:
161
+ rdoc_options: []
162
+ require_paths:
163
+ - lib
164
+ required_ruby_version: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '0'
169
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ requirements: []
175
+ rubyforge_project:
176
+ rubygems_version: 2.7.7
177
+ signing_key:
178
+ specification_version: 4
179
+ summary: A ruby wrapper for the chatmeter API.
180
+ test_files: []