circuit_client 0.0.2 → 0.0.3
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.
- checksums.yaml +5 -5
- data/lib/circuit_client/client.rb +45 -30
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 44b59486d0af395164c4ba24986dbc36fb553aaf00b1d2621766d8227e820000
|
4
|
+
data.tar.gz: 4fb9e02e4f19d42be8e62c0e1efed8c3eff8f49c3a7f904a8444a53131c02d82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08180e655db091020cb66e6c4a8e2f0eb609c4ae14188615a912faaf4734223803bb1c6ec1bc236cb335c1c26fe6cb31da16c995f83c9e353862ad0548f0a953'
|
7
|
+
data.tar.gz: d37e67f5acbe6096cb0c8434cdd6fe22beb947a3de2338f4d66c3f7794d2df9dfecee6b389c159363c8dc568bc4ad7858d24322495e3243367947c60f61cc0e3
|
@@ -7,33 +7,34 @@ require 'json'
|
|
7
7
|
require 'circuit_client/error_middleware'
|
8
8
|
|
9
9
|
module CircuitClient
|
10
|
+
# client for accessing circuit API
|
10
11
|
class Client
|
11
12
|
# Set the hostname of the circuit system
|
12
13
|
attr_accessor :host
|
13
14
|
|
14
|
-
|
15
|
+
# The base path of the API
|
15
16
|
attr_accessor :base_path
|
16
17
|
|
17
|
-
|
18
|
+
# The protocol to use 'http' or 'https'
|
18
19
|
attr_accessor :protocol
|
19
20
|
|
20
|
-
|
21
|
+
# Timeout for http requests
|
21
22
|
attr_accessor :timeout
|
22
23
|
|
23
|
-
|
24
|
+
# The client_id for authentication
|
24
25
|
attr_accessor :client_id
|
25
26
|
|
26
|
-
|
27
|
+
# The client_secret for authentication
|
27
28
|
attr_accessor :client_secret
|
28
29
|
|
29
|
-
|
30
|
+
# The authentication method to use (currently only :client_credentials supported)
|
30
31
|
attr_accessor :auth_method
|
31
32
|
|
32
|
-
|
33
|
-
|
33
|
+
# Enable tracing (outputs http requests to STDOUT)
|
34
|
+
attr_accessor :trace
|
34
35
|
|
35
|
-
|
36
|
-
|
36
|
+
# Initialize a new client
|
37
|
+
#
|
37
38
|
# Examples
|
38
39
|
#
|
39
40
|
# CircuitClient::Client.new do |c|
|
@@ -52,7 +53,7 @@ module CircuitClient
|
|
52
53
|
yield self
|
53
54
|
end
|
54
55
|
|
55
|
-
|
56
|
+
# The faraday http connection object
|
56
57
|
def connection
|
57
58
|
@connection ||= Faraday.new(url: base_uri.to_s) do |faraday|
|
58
59
|
faraday.response :logger if @trace
|
@@ -61,7 +62,7 @@ module CircuitClient
|
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
64
|
-
|
65
|
+
# The token used for authentication
|
65
66
|
def access_token
|
66
67
|
return @access_token unless @access_token.nil?
|
67
68
|
case @auth_method
|
@@ -72,7 +73,7 @@ module CircuitClient
|
|
72
73
|
end
|
73
74
|
end
|
74
75
|
|
75
|
-
|
76
|
+
# Authenticate using client_credentials method
|
76
77
|
def auth_client_credentials
|
77
78
|
raise "client_id parameter required" if @client_id.nil?
|
78
79
|
raise "client_secret parameter required" if @client_secret.nil?
|
@@ -86,31 +87,47 @@ module CircuitClient
|
|
86
87
|
data['access_token']
|
87
88
|
end
|
88
89
|
|
89
|
-
|
90
|
+
# Return URI with path elements
|
90
91
|
def base_uri
|
91
92
|
URI("#{@protocol}://#{@host}")
|
92
93
|
end
|
93
94
|
|
94
|
-
|
95
|
+
# Returns an URI with the base_uri and the supplied path
|
95
96
|
def build_uri(path)
|
96
97
|
uri = base_uri
|
97
98
|
uri.path = path
|
98
99
|
uri.to_s
|
99
100
|
end
|
100
101
|
|
101
|
-
|
102
|
+
# Returns an URI and with a path relative to the base_path of the API
|
102
103
|
def build_api_uri(path)
|
103
104
|
build_uri("#{@base_path}#{path}")
|
104
105
|
end
|
105
106
|
|
106
|
-
|
107
|
-
#
|
108
|
-
# Examples
|
107
|
+
# Create a new message in a existing conversation
|
109
108
|
#
|
110
|
-
#
|
109
|
+
# Examples
|
110
|
+
#
|
111
|
+
# client.create_message(
|
112
|
+
# '<convId>',
|
113
|
+
# 'my message text...',
|
114
|
+
# subject: 'Todays meeting'
|
115
|
+
# )
|
116
|
+
#
|
117
|
+
# To send to an existing message item use :item_id parameter:
|
118
|
+
#
|
119
|
+
# client.create_message(
|
120
|
+
# '<convId>',
|
121
|
+
# 'my message text...',
|
122
|
+
# item_id: 'itemId'
|
123
|
+
# )
|
111
124
|
#
|
112
125
|
def create_message(conv, text, **options)
|
113
|
-
|
126
|
+
item_id = options[:item_id]
|
127
|
+
path = "/conversations/#{conv}/messages"
|
128
|
+
path += "/#{item_id}" unless item_id.nil?
|
129
|
+
options.delete(:item_id)
|
130
|
+
call(:post, path, {
|
114
131
|
'content' => text,
|
115
132
|
**options,
|
116
133
|
} )
|
@@ -121,7 +138,7 @@ module CircuitClient
|
|
121
138
|
call(:get, "/conversations")
|
122
139
|
end
|
123
140
|
|
124
|
-
|
141
|
+
# Create a new group conversation
|
125
142
|
def create_group_conversation(participants, topic)
|
126
143
|
call(:post, '/conversations/group', {
|
127
144
|
participants: participants,
|
@@ -129,14 +146,14 @@ module CircuitClient
|
|
129
146
|
} )
|
130
147
|
end
|
131
148
|
|
132
|
-
|
149
|
+
# Create a new 1:1 conversation
|
133
150
|
def create_direct_conversation(participant)
|
134
151
|
call(:post, '/conversations/direct', {
|
135
152
|
participant: participant,
|
136
153
|
} )
|
137
154
|
end
|
138
155
|
|
139
|
-
|
156
|
+
# Remove participants from a conversation
|
140
157
|
def delete_group_conversation_participants(conv, participants)
|
141
158
|
call(:delete, "/conversations/group/#{conv}/participants", {
|
142
159
|
participants: participants,
|
@@ -148,7 +165,7 @@ module CircuitClient
|
|
148
165
|
delete_group_conversation_participants(conv, [current_user['userId']])
|
149
166
|
end
|
150
167
|
|
151
|
-
|
168
|
+
# Get the profile of the connections user
|
152
169
|
def get_user_profile
|
153
170
|
call(:get, "/users/profile")
|
154
171
|
end
|
@@ -158,17 +175,17 @@ module CircuitClient
|
|
158
175
|
@current_user ||= get_user_profile
|
159
176
|
end
|
160
177
|
|
161
|
-
|
178
|
+
# Get profile of a user
|
162
179
|
def get_users(id)
|
163
180
|
call(:get, "/users/#{id}")
|
164
181
|
end
|
165
182
|
|
166
|
-
|
183
|
+
# Get presence information of a user
|
167
184
|
def get_users_presence(id)
|
168
185
|
call(:get, "/users/#{id}/presence")
|
169
186
|
end
|
170
187
|
|
171
|
-
|
188
|
+
private
|
172
189
|
|
173
190
|
def call(method, path, payload = {}, headers = {})
|
174
191
|
response = connection.send(method) do |req|
|
@@ -186,7 +203,5 @@ module CircuitClient
|
|
186
203
|
end
|
187
204
|
return JSON.parse(response.body) if response.success?
|
188
205
|
end
|
189
|
-
|
190
206
|
end
|
191
207
|
end
|
192
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: circuit_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Markus Benning
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -118,7 +118,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
118
|
version: '0'
|
119
119
|
requirements: []
|
120
120
|
rubyforge_project:
|
121
|
-
rubygems_version: 2.6
|
121
|
+
rubygems_version: 2.7.6
|
122
122
|
signing_key:
|
123
123
|
specification_version: 4
|
124
124
|
summary: Simple client for circuit REST API
|