ucengine 0.5.0 → 0.5.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.
- data/Gemfile.lock +4 -4
- data/lib/ucengine.rb +38 -30
- data/lib/ucengine/version.rb +1 -1
- data/spec/ucengine_mock.rb +20 -1
- data/spec/ucengine_spec.rb +10 -1
- data/ucengine.gemspec +2 -2
- metadata +6 -43
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ucengine (0.
|
4
|
+
ucengine (0.5.3)
|
5
5
|
daemons (~> 1.1)
|
6
6
|
json (~> 1.5)
|
7
7
|
rest-client (~> 1.6)
|
@@ -9,12 +9,12 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: http://rubygems.org/
|
11
11
|
specs:
|
12
|
-
daemons (1.1.
|
12
|
+
daemons (1.1.3)
|
13
13
|
diff-lcs (1.1.2)
|
14
|
-
json (1.5.
|
14
|
+
json (1.5.3)
|
15
15
|
mime-types (1.16)
|
16
16
|
rack (1.2.2)
|
17
|
-
rest-client (1.6.
|
17
|
+
rest-client (1.6.3)
|
18
18
|
mime-types (>= 1.16)
|
19
19
|
rspec (2.4.0)
|
20
20
|
rspec-core (~> 2.4.0)
|
data/lib/ucengine.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'yaml'
|
3
|
+
require 'logger'
|
3
4
|
|
4
5
|
require 'rest-client'
|
5
6
|
|
@@ -28,18 +29,14 @@ require 'uri'
|
|
28
29
|
# end
|
29
30
|
class UCEngine
|
30
31
|
|
31
|
-
DEBUG = 0 # Print every request and everything above.
|
32
|
-
WARNING = 1 # Print everything that seems fishy.
|
33
|
-
ERROR = 2 # Print regular errors, usually HTTP errors.
|
34
|
-
CRITICAL = 3 # Only print critical errors (bad hostname or port, etc).
|
35
|
-
QUIET = 4 # Don't print anything (default).
|
36
|
-
|
37
32
|
# HTTP API conf.
|
38
33
|
API_ROOT = '/api'
|
39
34
|
API_VERSION = '0.5'
|
40
35
|
|
41
36
|
attr_reader :sid, :uid, :connected
|
42
37
|
|
38
|
+
@@logger = nil
|
39
|
+
|
43
40
|
# Load configuration file (default: config.yaml). The returned configuration
|
44
41
|
# is a Hash, as returned by YAML.load_file().
|
45
42
|
def self.load_config(path = 'config.yaml')
|
@@ -57,21 +54,26 @@ class UCEngine
|
|
57
54
|
# end
|
58
55
|
#
|
59
56
|
#
|
60
|
-
def self.run(name, &proc)
|
61
|
-
Daemons.run_proc(name, &proc)
|
57
|
+
def self.run(name, options = {}, &proc)
|
58
|
+
Daemons.run_proc(name, options, &proc)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Set the default logger.
|
62
|
+
def self.logger=(logger)
|
63
|
+
@@logger = logger
|
62
64
|
end
|
63
65
|
|
64
66
|
# Create a new U.C.Engine object. 'host' is the hostname of the U.C.Engine server
|
65
67
|
# and 'port' is to TCP port to connect to. Note that this method doesn't create
|
66
|
-
# a new connection, see the #connect method.
|
67
|
-
#
|
68
|
-
|
69
|
-
def initialize(host, port, debug = UCEngine::QUIET)
|
68
|
+
# a new connection, see the #connect method. An optional parameter 'level' can be
|
69
|
+
# used to set the logging level (default: Logger::UNKNOWN).
|
70
|
+
def initialize(host, port, level = Logger::UNKNOWN)
|
70
71
|
@host = host
|
71
72
|
@port = port
|
72
73
|
@http = Net::HTTP.new(host, port)
|
73
74
|
@threads = []
|
74
|
-
@
|
75
|
+
@logger = @@logger || Logger.new($stderr)
|
76
|
+
@logger.level = level
|
75
77
|
debug "Initialisation complete for #{host}:#{port}."
|
76
78
|
end
|
77
79
|
|
@@ -109,6 +111,16 @@ class UCEngine
|
|
109
111
|
end
|
110
112
|
end
|
111
113
|
|
114
|
+
# List users in a meeting room.
|
115
|
+
#
|
116
|
+
#
|
117
|
+
# uce = UCEngine.new("localhost", 4567)
|
118
|
+
# users = uce.roster('demo')
|
119
|
+
#
|
120
|
+
def roster(name)
|
121
|
+
get("/meeting/all/#{name}/roster")['result']
|
122
|
+
end
|
123
|
+
|
112
124
|
# Search events. The 'location' parameter is where you're expection the events to come:
|
113
125
|
# * "meeting": event from a specific meeting.
|
114
126
|
# * "": all events.
|
@@ -243,27 +255,17 @@ class UCEngine
|
|
243
255
|
#
|
244
256
|
# uce.upload(["demo_meeting"], File.new("/path/file_to_upload.pdf"))
|
245
257
|
#
|
246
|
-
def upload(location, file)
|
258
|
+
def upload(location, file, metadata={})
|
247
259
|
url = "http://#{@host}:#{@port}#{API_ROOT}/#{API_VERSION}/file/#{location}?uid=#{@uid}&sid=#{@sid}"
|
248
260
|
debug "Upload: #{file.path} to #{url}"
|
249
|
-
result = JSON.parse(RestClient.post(url, {:
|
261
|
+
result = JSON.parse(RestClient.post(url, { :content => file,
|
262
|
+
:metadata => metadata }))
|
250
263
|
debug 'Upload complete'
|
251
264
|
return result
|
252
265
|
end
|
253
266
|
|
254
|
-
protected
|
255
|
-
|
256
|
-
# Print debug messages
|
257
|
-
def log_message(level, message)
|
258
|
-
$stderr.write "#{message}\n\n" if level >= @debug
|
259
|
-
end
|
260
|
-
def debug(message) ; log_message UCEngine::DEBUG, message ; end
|
261
|
-
def warn(message) ; log_message UCEngine::WARNING, message ; end
|
262
|
-
def error(message) ; log_message UCEngine::ERROR, message ; end
|
263
|
-
def critical(message) ; log_message UCEngine::CRITICAL, message ; end
|
264
|
-
|
265
267
|
# Handle GET requests
|
266
|
-
def get(path, params, http = @http)
|
268
|
+
def get(path, params = {}, http = @http)
|
267
269
|
params[:uid] = @uid if @uid
|
268
270
|
params[:sid] = @sid if @sid
|
269
271
|
url = "http://#{@host}:#{@port}#{API_ROOT}/#{API_VERSION}#{path}"
|
@@ -274,7 +276,7 @@ class UCEngine
|
|
274
276
|
end
|
275
277
|
|
276
278
|
# Handle POST requests
|
277
|
-
def post(path, params, http = @http)
|
279
|
+
def post(path, params = {}, http = @http)
|
278
280
|
params[:uid] = @uid if @uid
|
279
281
|
params[:sid] = @sid if @sid
|
280
282
|
url = "http://#{@host}:#{@port}#{API_ROOT}/#{API_VERSION}#{path}"
|
@@ -285,15 +287,21 @@ class UCEngine
|
|
285
287
|
end
|
286
288
|
|
287
289
|
# Handle PUT requests
|
288
|
-
def put(path, params)
|
290
|
+
def put(path, params = {})
|
289
291
|
params['_method'] = 'PUT'
|
290
292
|
post path, params
|
291
293
|
end
|
292
294
|
|
293
295
|
# Handle DELETE requests
|
294
|
-
def delete(path, params)
|
296
|
+
def delete(path, params = {})
|
295
297
|
params['_method'] = 'DELETE'
|
296
298
|
post path, params
|
297
299
|
end
|
298
300
|
|
301
|
+
protected
|
302
|
+
|
303
|
+
def debug(message) ; @logger.debug message ; end
|
304
|
+
def warn(message) ; @logger.warn message ; end
|
305
|
+
def error(message) ; @logger.error message ; end
|
306
|
+
def critical(message) ; @logger.fatal message ; end
|
299
307
|
end
|
data/lib/ucengine/version.rb
CHANGED
data/spec/ucengine_mock.rb
CHANGED
@@ -23,6 +23,25 @@ class UCEngineMock < Sinatra::Base
|
|
23
23
|
{:result => 1234}.to_json
|
24
24
|
end
|
25
25
|
|
26
|
+
get "/api/#{VERSION}/meeting/all/:meeting/roster" do
|
27
|
+
status 200
|
28
|
+
users = [{:id => 34334839681323313178318538371527,
|
29
|
+
:name => 'jeffrey.lebowski@bathtub.com',
|
30
|
+
:domain => 'ucengine.org',
|
31
|
+
:auth => 'password',
|
32
|
+
:metadata => {
|
33
|
+
:nickname => "The Dude"
|
34
|
+
}},
|
35
|
+
{:id => 18519526811067452830480557737028,
|
36
|
+
:name => 'walter.sobchak@bowling.org',
|
37
|
+
:domain => 'ucengine.org',
|
38
|
+
:auth => 'password',
|
39
|
+
:metadata => {
|
40
|
+
:nickname => "The Veteran"
|
41
|
+
}}]
|
42
|
+
{:result => users}.to_json
|
43
|
+
end
|
44
|
+
|
26
45
|
post "/api/#{VERSION}/event/:meeting" do
|
27
46
|
if params[:meeting] == UCE_MEETING
|
28
47
|
if params[:type] == "test_type" &&
|
@@ -76,7 +95,7 @@ class UCEngineMock < Sinatra::Base
|
|
76
95
|
# Upload
|
77
96
|
post "/api/#{VERSION}/file/:meeting" do
|
78
97
|
if params[:meeting] == UCE_MEETING
|
79
|
-
if params[:
|
98
|
+
if params[:content][:tempfile].read == FILE_CONTENT
|
80
99
|
status 200
|
81
100
|
{:result => "test_upload"}.to_json
|
82
101
|
else
|
data/spec/ucengine_spec.rb
CHANGED
@@ -52,6 +52,15 @@ describe UCEngine do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
it "returns the list of connected users" do
|
56
|
+
@uce.connect(USER, :credential => PASSWORD) do |uce|
|
57
|
+
roster = uce.roster('demo')
|
58
|
+
roster.length.should eql(2)
|
59
|
+
roster[0]['name'].should eql('jeffrey.lebowski@bathtub.com')
|
60
|
+
roster[1]['name'].should eql('walter.sobchak@bowling.org')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
55
64
|
it "publishes an event" do
|
56
65
|
@uce.connect(USER, :credential => PASSWORD) do |uce|
|
57
66
|
result = uce.publish(:location => UCE_MEETING,
|
@@ -99,7 +108,7 @@ describe UCEngine do
|
|
99
108
|
@uce.connect(USER, :credential => PASSWORD) do |uce|
|
100
109
|
file = Tempfile.open("test_file")
|
101
110
|
file.write(FILE_CONTENT)
|
102
|
-
result = uce.upload(UCE_MEETING, file.open)
|
111
|
+
result = uce.upload(UCE_MEETING, file.open, :description => "a file")
|
103
112
|
result['result'].should eql("test_upload")
|
104
113
|
break
|
105
114
|
end
|
data/ucengine.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.authors = ['AF83']
|
9
9
|
s.email = ['victor.goya@af83.com', 'arnaud.berthomier@af83.com']
|
10
10
|
s.homepage = "https://github.com/AF83/ucengine.rb"
|
11
|
-
s.summary = "A ruby library to consume the
|
12
|
-
s.description = "A ruby library to consume the
|
11
|
+
s.summary = "A ruby library to consume the U.C.Engine API"
|
12
|
+
s.description = "A ruby library to consume the U.C.Engine API"
|
13
13
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
s.rubyforge_project = "ucengine"
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ucengine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
version: 0.5.0
|
4
|
+
prerelease:
|
5
|
+
version: 0.5.3
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- AF83
|
@@ -15,7 +10,7 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-04
|
13
|
+
date: 2011-07-04 00:00:00 +02:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
@@ -26,10 +21,6 @@ dependencies:
|
|
26
21
|
requirements:
|
27
22
|
- - ~>
|
28
23
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 6
|
33
24
|
version: "1.6"
|
34
25
|
type: :runtime
|
35
26
|
version_requirements: *id001
|
@@ -41,10 +32,6 @@ dependencies:
|
|
41
32
|
requirements:
|
42
33
|
- - ~>
|
43
34
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 13
|
45
|
-
segments:
|
46
|
-
- 1
|
47
|
-
- 1
|
48
35
|
version: "1.1"
|
49
36
|
type: :runtime
|
50
37
|
version_requirements: *id002
|
@@ -56,10 +43,6 @@ dependencies:
|
|
56
43
|
requirements:
|
57
44
|
- - ~>
|
58
45
|
- !ruby/object:Gem::Version
|
59
|
-
hash: 5
|
60
|
-
segments:
|
61
|
-
- 1
|
62
|
-
- 5
|
63
46
|
version: "1.5"
|
64
47
|
type: :runtime
|
65
48
|
version_requirements: *id003
|
@@ -71,10 +54,6 @@ dependencies:
|
|
71
54
|
requirements:
|
72
55
|
- - ">="
|
73
56
|
- !ruby/object:Gem::Version
|
74
|
-
hash: 15
|
75
|
-
segments:
|
76
|
-
- 1
|
77
|
-
- 0
|
78
57
|
version: "1.0"
|
79
58
|
type: :development
|
80
59
|
version_requirements: *id004
|
@@ -86,10 +65,6 @@ dependencies:
|
|
86
65
|
requirements:
|
87
66
|
- - ~>
|
88
67
|
- !ruby/object:Gem::Version
|
89
|
-
hash: 11
|
90
|
-
segments:
|
91
|
-
- 2
|
92
|
-
- 4
|
93
68
|
version: "2.4"
|
94
69
|
type: :development
|
95
70
|
version_requirements: *id005
|
@@ -101,14 +76,10 @@ dependencies:
|
|
101
76
|
requirements:
|
102
77
|
- - ~>
|
103
78
|
- !ruby/object:Gem::Version
|
104
|
-
hash: 11
|
105
|
-
segments:
|
106
|
-
- 1
|
107
|
-
- 2
|
108
79
|
version: "1.2"
|
109
80
|
type: :development
|
110
81
|
version_requirements: *id006
|
111
|
-
description: A ruby library to consume the
|
82
|
+
description: A ruby library to consume the U.C.Engine API
|
112
83
|
email:
|
113
84
|
- victor.goya@af83.com
|
114
85
|
- arnaud.berthomier@af83.com
|
@@ -146,27 +117,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
146
117
|
requirements:
|
147
118
|
- - ">="
|
148
119
|
- !ruby/object:Gem::Version
|
149
|
-
hash: 3
|
150
|
-
segments:
|
151
|
-
- 0
|
152
120
|
version: "0"
|
153
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
122
|
none: false
|
155
123
|
requirements:
|
156
124
|
- - ">="
|
157
125
|
- !ruby/object:Gem::Version
|
158
|
-
hash: 23
|
159
|
-
segments:
|
160
|
-
- 1
|
161
|
-
- 3
|
162
|
-
- 6
|
163
126
|
version: 1.3.6
|
164
127
|
requirements: []
|
165
128
|
|
166
129
|
rubyforge_project: ucengine
|
167
|
-
rubygems_version: 1.
|
130
|
+
rubygems_version: 1.6.2
|
168
131
|
signing_key:
|
169
132
|
specification_version: 3
|
170
|
-
summary: A ruby library to consume the
|
133
|
+
summary: A ruby library to consume the U.C.Engine API
|
171
134
|
test_files: []
|
172
135
|
|