adobe_connect 0.0.6 → 0.0.7
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/.yardopts +6 -0
- data/README.md +1 -1
- data/adobe_connect.gemspec +3 -2
- data/lib/adobe_connect.rb +1 -0
- data/lib/adobe_connect/config.rb +43 -0
- data/lib/adobe_connect/meeting_folder.rb +17 -0
- data/lib/adobe_connect/param_formatter.rb +9 -0
- data/lib/adobe_connect/response.rb +20 -0
- data/lib/adobe_connect/service.rb +36 -0
- data/lib/adobe_connect/user.rb +44 -1
- data/lib/adobe_connect/version.rb +2 -1
- metadata +29 -14
data/.yardopts
ADDED
data/README.md
CHANGED
data/adobe_connect.gemspec
CHANGED
|
@@ -17,13 +17,14 @@ Gem::Specification.new do |gem|
|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
18
18
|
gem.require_paths = ['lib']
|
|
19
19
|
|
|
20
|
-
gem.add_dependency 'activesupport', '>= 2.3.
|
|
21
|
-
gem.add_dependency 'nokogiri', '~> 1.5.
|
|
20
|
+
gem.add_dependency 'activesupport', '>= 2.3.17'
|
|
21
|
+
gem.add_dependency 'nokogiri', '~> 1.5.5'
|
|
22
22
|
gem.add_dependency 'pry', '>= 0.9.11.4'
|
|
23
23
|
gem.add_dependency 'rake', '>= 0.9.2'
|
|
24
24
|
|
|
25
25
|
gem.add_development_dependency 'minitest', '~> 4.6.0'
|
|
26
26
|
gem.add_development_dependency 'mocha', '~> 0.13.2'
|
|
27
|
+
gem.add_development_dependency 'redcarpet'
|
|
27
28
|
gem.add_development_dependency 'yard', '~> 0.8.4.1'
|
|
28
29
|
gem.add_development_dependency 'yard-tomdoc', '~> 0.6.0'
|
|
29
30
|
end
|
data/lib/adobe_connect.rb
CHANGED
data/lib/adobe_connect/config.rb
CHANGED
|
@@ -1,25 +1,68 @@
|
|
|
1
1
|
module AdobeConnect
|
|
2
|
+
|
|
3
|
+
# Public: Manage configuration for AdobeConnect::Service objects, like
|
|
4
|
+
# username/password/domain.
|
|
2
5
|
module Config
|
|
3
6
|
|
|
4
7
|
@settings = Hash.new
|
|
5
8
|
|
|
6
9
|
class << self
|
|
10
|
+
# Public: Merge the given settings hash into the current settings.
|
|
11
|
+
#
|
|
12
|
+
# settings - A hash of setting options.
|
|
13
|
+
#
|
|
14
|
+
# Returns nothing.
|
|
7
15
|
def merge(settings)
|
|
8
16
|
@settings.merge(settings)
|
|
9
17
|
end
|
|
10
18
|
|
|
19
|
+
# Public: Declare default Connect settings using a block.
|
|
20
|
+
#
|
|
21
|
+
# &block - A block with configuration options.
|
|
22
|
+
#
|
|
23
|
+
# Examples
|
|
24
|
+
#
|
|
25
|
+
# AdobeConnect::Config.declare do
|
|
26
|
+
# username 'user@example.com'
|
|
27
|
+
# password 'password'
|
|
28
|
+
# domain 'http://connect.example.com'
|
|
29
|
+
# end
|
|
30
|
+
#
|
|
31
|
+
# Returns nothing.
|
|
11
32
|
def declare(&block)
|
|
12
33
|
instance_eval(&block)
|
|
13
34
|
end
|
|
14
35
|
|
|
36
|
+
# Public: Fetch a single key value from the current settings.
|
|
37
|
+
#
|
|
38
|
+
# key - The key to fetch.
|
|
39
|
+
#
|
|
40
|
+
# Examples
|
|
41
|
+
#
|
|
42
|
+
# AdobeConnect::Config[:username] #=> 'user@example.com'
|
|
43
|
+
#
|
|
44
|
+
# Returns the value of the key (usually a string).
|
|
15
45
|
def [](key)
|
|
16
46
|
@settings[key]
|
|
17
47
|
end
|
|
18
48
|
|
|
49
|
+
# Public: Set a single key's value.
|
|
50
|
+
#
|
|
51
|
+
# key - The name of the key to set.
|
|
52
|
+
# value - The value to set the key to.
|
|
53
|
+
#
|
|
54
|
+
# Examples
|
|
55
|
+
#
|
|
56
|
+
# AdobeConnect::Config[:username] = 'user@example.com'
|
|
57
|
+
#
|
|
58
|
+
# Returns nothing.
|
|
19
59
|
def []=(key, value)
|
|
20
60
|
@settings[key] = value
|
|
21
61
|
end
|
|
22
62
|
|
|
63
|
+
# Public: Getter for the internal settings hash.
|
|
64
|
+
#
|
|
65
|
+
# Returns a hash.
|
|
23
66
|
def settings; @settings; end
|
|
24
67
|
|
|
25
68
|
private
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
module AdobeConnect
|
|
2
|
+
|
|
3
|
+
# Public: Represents a folder object inside of Connect.
|
|
2
4
|
class MeetingFolder
|
|
3
5
|
attr_reader :name, :id, :service, :url
|
|
4
6
|
|
|
7
|
+
# Public: Create a new AdobeConnect::MeetingFolder.
|
|
8
|
+
#
|
|
9
|
+
# id - The SCO-ID of the folder object.
|
|
10
|
+
# name - The name of the folder object.
|
|
11
|
+
# url - The Connect URL of the object.
|
|
12
|
+
# service - An AdobeConnect::Service object (default: Service.new).
|
|
5
13
|
def initialize(id, name, url, service = AdobeConnect::Service.new)
|
|
6
14
|
@name = name
|
|
7
15
|
@id = id
|
|
@@ -9,10 +17,19 @@ module AdobeConnect
|
|
|
9
17
|
@url = url
|
|
10
18
|
end
|
|
11
19
|
|
|
20
|
+
# Public: Fetch the contents of this folder.
|
|
21
|
+
#
|
|
22
|
+
# Returns a Nokogiri object.
|
|
12
23
|
def contents
|
|
13
24
|
service.sco_contents(:sco_id => id)
|
|
14
25
|
end
|
|
15
26
|
|
|
27
|
+
# Public: Find a folder on the current Connect instance.
|
|
28
|
+
#
|
|
29
|
+
# name - The name of the folder to find.
|
|
30
|
+
# service - An AdobeConnect::Service object (default: Service.new).
|
|
31
|
+
#
|
|
32
|
+
# Returns a new AdobeConnect::MeetingFolder object.
|
|
16
33
|
def self.find(name, service = AdobeConnect::Service.new)
|
|
17
34
|
response = service.sco_search_by_field(
|
|
18
35
|
:query => name,
|
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
module AdobeConnect
|
|
2
|
+
|
|
3
|
+
# Public: Responsible for translating params hashes into query strings
|
|
2
4
|
class ParamFormatter
|
|
3
5
|
attr_reader :params
|
|
4
6
|
|
|
7
|
+
# Public: Create a new AdobeConnect::ParamFormatter.
|
|
8
|
+
#
|
|
9
|
+
# params - A hash of params to format.
|
|
5
10
|
def initialize(params)
|
|
6
11
|
@params = params
|
|
7
12
|
end
|
|
8
13
|
|
|
14
|
+
# Public: Translate a hash of params into a query string. Dasherize any
|
|
15
|
+
# underscored values, and escape URL unfriendly values.
|
|
16
|
+
#
|
|
17
|
+
# Returns a query string.
|
|
9
18
|
def format
|
|
10
19
|
params.sort_by { |k, v| k.to_s }.inject(['']) do |array, param|
|
|
11
20
|
key, value = param.map { |p| ERB::Util.url_encode(p) }
|
|
@@ -1,21 +1,41 @@
|
|
|
1
1
|
module AdobeConnect
|
|
2
|
+
|
|
3
|
+
# Public: A response from the Connect API.
|
|
2
4
|
class Response
|
|
3
5
|
attr_reader :status, :body
|
|
4
6
|
|
|
7
|
+
# Public: Create a new AdobeConnect::Response.
|
|
8
|
+
#
|
|
9
|
+
# response - A Net::HTTP response.
|
|
5
10
|
def initialize(response)
|
|
6
11
|
@response = response
|
|
7
12
|
@status = response.code.to_i
|
|
8
13
|
@body = Nokogiri::XML(response.body)
|
|
9
14
|
end
|
|
10
15
|
|
|
16
|
+
# Public: Fetch the given header's value.
|
|
17
|
+
#
|
|
18
|
+
# header - The string name of the header to fetch.
|
|
19
|
+
#
|
|
20
|
+
# Returns a header value as a string.
|
|
11
21
|
def fetch(header)
|
|
12
22
|
@response.fetch(header)
|
|
13
23
|
end
|
|
14
24
|
|
|
25
|
+
# Public: Execute an xpath call against the response body.
|
|
26
|
+
#
|
|
27
|
+
# *args - Arguments to pass to Nokogiri's xpath method.
|
|
28
|
+
#
|
|
29
|
+
# Returns a Nokogiri object.
|
|
15
30
|
def xpath(*args)
|
|
16
31
|
@body.xpath(*args)
|
|
17
32
|
end
|
|
18
33
|
|
|
34
|
+
# Public: Execute an at_xpath call against the response body.
|
|
35
|
+
#
|
|
36
|
+
# *args - Arguments to pass to Nokogiri's xpath method.
|
|
37
|
+
#
|
|
38
|
+
# Returns a Nokogiri object.
|
|
19
39
|
def at_xpath(*args)
|
|
20
40
|
@body.at_xpath(*args)
|
|
21
41
|
end
|
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
module AdobeConnect
|
|
2
|
+
|
|
3
|
+
# Public: Manages calls to the Connect API.
|
|
2
4
|
class Service
|
|
3
5
|
attr_reader :username, :domain, :session
|
|
4
6
|
|
|
7
|
+
# Public: Create a new AdobeConnect::Service.
|
|
8
|
+
#
|
|
9
|
+
# options - An AdobeConnect::Config object or a hash with the keys:
|
|
10
|
+
# :username - An Adobe Connect username.
|
|
11
|
+
# :password - The Connect user's password.
|
|
12
|
+
# :domain - The domain for the Connect instance (with protocol
|
|
13
|
+
# prepended).
|
|
5
14
|
def initialize(options = AdobeConnect::Config)
|
|
6
15
|
@username = options[:username]
|
|
7
16
|
@password = options[:password]
|
|
@@ -9,6 +18,9 @@ module AdobeConnect
|
|
|
9
18
|
@authenticated = false
|
|
10
19
|
end
|
|
11
20
|
|
|
21
|
+
# Public: Authenticate against the currently configured Connect service.
|
|
22
|
+
#
|
|
23
|
+
# Returns a boolean.
|
|
12
24
|
def log_in
|
|
13
25
|
response = request('login', { :login => username, :password => password }, false)
|
|
14
26
|
if response.at_xpath('//status').attr('code') == 'ok'
|
|
@@ -20,10 +32,16 @@ module AdobeConnect
|
|
|
20
32
|
end
|
|
21
33
|
end
|
|
22
34
|
|
|
35
|
+
# Public: Get the current authentication status.
|
|
36
|
+
#
|
|
37
|
+
# Returns a boolean.
|
|
23
38
|
def authenticated?
|
|
24
39
|
@authenticated
|
|
25
40
|
end
|
|
26
41
|
|
|
42
|
+
# Public: Get the HTTP client used to make requests.
|
|
43
|
+
#
|
|
44
|
+
# Returns a Net::HTTP instance.
|
|
27
45
|
def client
|
|
28
46
|
if @client.nil?
|
|
29
47
|
@client = Net::HTTP.new(domain.host, domain.port)
|
|
@@ -33,6 +51,17 @@ module AdobeConnect
|
|
|
33
51
|
@client
|
|
34
52
|
end
|
|
35
53
|
|
|
54
|
+
# Public: Forward any missing methods to the Connect instance.
|
|
55
|
+
#
|
|
56
|
+
# method - The name of the method called.
|
|
57
|
+
# *args - An array of arguments passed to the method.
|
|
58
|
+
#
|
|
59
|
+
# Examples
|
|
60
|
+
#
|
|
61
|
+
# service = AdobeConnect::Service.new
|
|
62
|
+
# service.sco_by_url(url_path: '/example/') #=> calls service.request.
|
|
63
|
+
#
|
|
64
|
+
# Returns an AdobeConnect::Response.
|
|
36
65
|
def method_missing(method, *args)
|
|
37
66
|
action = method.to_s.dasherize
|
|
38
67
|
params = args.first
|
|
@@ -43,6 +72,13 @@ module AdobeConnect
|
|
|
43
72
|
private
|
|
44
73
|
attr_reader :password
|
|
45
74
|
|
|
75
|
+
# Public: Execute a call against the Adobe Connect instance.
|
|
76
|
+
#
|
|
77
|
+
# action - The name of the API action to call.
|
|
78
|
+
# params - A hash of params to pass in the request.
|
|
79
|
+
# use_session - If true, require an active session (default: true).
|
|
80
|
+
#
|
|
81
|
+
# Returns an AdobeConnect::Response.
|
|
46
82
|
def request(action, params, use_session = true)
|
|
47
83
|
if use_session
|
|
48
84
|
log_in unless authenticated?
|
data/lib/adobe_connect/user.rb
CHANGED
|
@@ -1,21 +1,47 @@
|
|
|
1
1
|
module AdobeConnect
|
|
2
|
+
|
|
3
|
+
# Public: Represents a user in a Connect environment.
|
|
2
4
|
class User
|
|
3
|
-
|
|
5
|
+
# Public: SCO-ID from the Adobe Connect instance.
|
|
6
|
+
attr_reader :id
|
|
7
|
+
|
|
8
|
+
# Public: Generic user object.
|
|
9
|
+
attr_reader :app_user
|
|
10
|
+
|
|
11
|
+
attr_reader :service, :errors
|
|
4
12
|
|
|
13
|
+
# Public: Create a new AdobeConnect User.
|
|
14
|
+
#
|
|
15
|
+
# app_user - A user object with the following methods:
|
|
16
|
+
# first_name - User's first name.
|
|
17
|
+
# last_name - User's last name.
|
|
18
|
+
# email - The email address for the user.
|
|
19
|
+
# uuid - A unique identifier for this user (used to
|
|
20
|
+
# generate a password).
|
|
21
|
+
# service - An AdobeConnect::Service object (default: Service.new)
|
|
5
22
|
def initialize(app_user, service = Service.new)
|
|
6
23
|
@app_user = app_user
|
|
7
24
|
@service = service
|
|
8
25
|
@errors = []
|
|
9
26
|
end
|
|
10
27
|
|
|
28
|
+
# Public: Getter for the Connect user's username.
|
|
29
|
+
#
|
|
30
|
+
# Returns an email string.
|
|
11
31
|
def username
|
|
12
32
|
app_user.email
|
|
13
33
|
end
|
|
14
34
|
|
|
35
|
+
# Public: Generate a password for this connect user.
|
|
36
|
+
#
|
|
37
|
+
# Returns a password string.
|
|
15
38
|
def password
|
|
16
39
|
Digest::MD5.hexdigest(@app_user.uuid)[0..9]
|
|
17
40
|
end
|
|
18
41
|
|
|
42
|
+
# Public: Save this user to the Adobe Connect instance.
|
|
43
|
+
#
|
|
44
|
+
# Returns a boolean.
|
|
19
45
|
def save
|
|
20
46
|
response = service.principal_update(:first_name => app_user.first_name,
|
|
21
47
|
:last_name => app_user.last_name, :login => app_user.email,
|
|
@@ -30,6 +56,12 @@ module AdobeConnect
|
|
|
30
56
|
end
|
|
31
57
|
end
|
|
32
58
|
|
|
59
|
+
# Public: Create a Connect user from the given app user.
|
|
60
|
+
#
|
|
61
|
+
# app_user - A generic user object (see #initialize for required
|
|
62
|
+
# attributes).
|
|
63
|
+
#
|
|
64
|
+
# Returns an AdobeConnect::User.
|
|
33
65
|
def self.create(app_user)
|
|
34
66
|
user = AdobeConnect::User.new(app_user)
|
|
35
67
|
user.save
|
|
@@ -37,6 +69,12 @@ module AdobeConnect
|
|
|
37
69
|
user
|
|
38
70
|
end
|
|
39
71
|
|
|
72
|
+
# Public: Find the given app user on the Connect server.
|
|
73
|
+
#
|
|
74
|
+
# app_user - A generic user object (see #initialize for required
|
|
75
|
+
# attributes).
|
|
76
|
+
#
|
|
77
|
+
# Returns an AdobeConnect::User or nil.
|
|
40
78
|
def self.find(app_user)
|
|
41
79
|
user = AdobeConnect::User.new(app_user)
|
|
42
80
|
response = user.service.principal_list(:filter_login => user.username)
|
|
@@ -48,6 +86,11 @@ module AdobeConnect
|
|
|
48
86
|
end
|
|
49
87
|
|
|
50
88
|
private
|
|
89
|
+
# Internal: Store request errors in @errors.
|
|
90
|
+
#
|
|
91
|
+
# response - An AdobeConnect::Response.
|
|
92
|
+
#
|
|
93
|
+
# Returns nothing.
|
|
51
94
|
def save_errors(response)
|
|
52
95
|
@errors = response.xpath('//invalid').map(&:attributes)
|
|
53
96
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: adobe_connect
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 17
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 0
|
|
9
|
-
-
|
|
10
|
-
version: 0.0.
|
|
9
|
+
- 7
|
|
10
|
+
version: 0.0.7
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Zach Pendleton
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2013-02-
|
|
18
|
+
date: 2013-02-14 00:00:00 Z
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
21
21
|
name: activesupport
|
|
@@ -25,12 +25,12 @@ dependencies:
|
|
|
25
25
|
requirements:
|
|
26
26
|
- - ">="
|
|
27
27
|
- !ruby/object:Gem::Version
|
|
28
|
-
hash:
|
|
28
|
+
hash: 33
|
|
29
29
|
segments:
|
|
30
30
|
- 2
|
|
31
31
|
- 3
|
|
32
|
-
-
|
|
33
|
-
version: 2.3.
|
|
32
|
+
- 17
|
|
33
|
+
version: 2.3.17
|
|
34
34
|
type: :runtime
|
|
35
35
|
version_requirements: *id001
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
@@ -41,12 +41,12 @@ dependencies:
|
|
|
41
41
|
requirements:
|
|
42
42
|
- - ~>
|
|
43
43
|
- !ruby/object:Gem::Version
|
|
44
|
-
hash:
|
|
44
|
+
hash: 9
|
|
45
45
|
segments:
|
|
46
46
|
- 1
|
|
47
47
|
- 5
|
|
48
|
-
-
|
|
49
|
-
version: 1.5.
|
|
48
|
+
- 5
|
|
49
|
+
version: 1.5.5
|
|
50
50
|
type: :runtime
|
|
51
51
|
version_requirements: *id002
|
|
52
52
|
- !ruby/object:Gem::Dependency
|
|
@@ -115,9 +115,23 @@ dependencies:
|
|
|
115
115
|
type: :development
|
|
116
116
|
version_requirements: *id006
|
|
117
117
|
- !ruby/object:Gem::Dependency
|
|
118
|
-
name:
|
|
118
|
+
name: redcarpet
|
|
119
119
|
prerelease: false
|
|
120
120
|
requirement: &id007 !ruby/object:Gem::Requirement
|
|
121
|
+
none: false
|
|
122
|
+
requirements:
|
|
123
|
+
- - ">="
|
|
124
|
+
- !ruby/object:Gem::Version
|
|
125
|
+
hash: 3
|
|
126
|
+
segments:
|
|
127
|
+
- 0
|
|
128
|
+
version: "0"
|
|
129
|
+
type: :development
|
|
130
|
+
version_requirements: *id007
|
|
131
|
+
- !ruby/object:Gem::Dependency
|
|
132
|
+
name: yard
|
|
133
|
+
prerelease: false
|
|
134
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
|
121
135
|
none: false
|
|
122
136
|
requirements:
|
|
123
137
|
- - ~>
|
|
@@ -130,11 +144,11 @@ dependencies:
|
|
|
130
144
|
- 1
|
|
131
145
|
version: 0.8.4.1
|
|
132
146
|
type: :development
|
|
133
|
-
version_requirements: *
|
|
147
|
+
version_requirements: *id008
|
|
134
148
|
- !ruby/object:Gem::Dependency
|
|
135
149
|
name: yard-tomdoc
|
|
136
150
|
prerelease: false
|
|
137
|
-
requirement: &
|
|
151
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
|
138
152
|
none: false
|
|
139
153
|
requirements:
|
|
140
154
|
- - ~>
|
|
@@ -146,7 +160,7 @@ dependencies:
|
|
|
146
160
|
- 0
|
|
147
161
|
version: 0.6.0
|
|
148
162
|
type: :development
|
|
149
|
-
version_requirements: *
|
|
163
|
+
version_requirements: *id009
|
|
150
164
|
description: An API wrapper for interacting with Adobe Connect services.
|
|
151
165
|
email:
|
|
152
166
|
- zachpendleton@gmail.com
|
|
@@ -159,6 +173,7 @@ extra_rdoc_files: []
|
|
|
159
173
|
files:
|
|
160
174
|
- .gitignore
|
|
161
175
|
- .travis.yml
|
|
176
|
+
- .yardopts
|
|
162
177
|
- Gemfile
|
|
163
178
|
- LICENSE.txt
|
|
164
179
|
- README.md
|