fms-admin-api 0.1 → 0.2
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/.travis.yml +6 -0
- data/Gemfile.lock +6 -2
- data/README.md +29 -7
- data/fms-admin-api.gemspec +2 -1
- data/gems/fms-admin-api-0.1.gem +0 -0
- data/lib/fms/client.rb +21 -3
- data/lib/fms/cmdline.rb +1 -1
- data/lib/fms/version.rb +2 -2
- data/tests/client_tests.rb +49 -0
- data/tests/cmdline_tests.rb +24 -0
- metadata +17 -19
data/.travis.yml
ADDED
data/Gemfile.lock
CHANGED
|
@@ -8,12 +8,15 @@ PATH
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: http://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
activesupport (3.
|
|
11
|
+
activesupport (3.2.3)
|
|
12
|
+
i18n (~> 0.6)
|
|
12
13
|
multi_json (~> 1.0)
|
|
13
14
|
addressable (2.2.6)
|
|
14
15
|
colorize (0.5.8)
|
|
15
16
|
crack (0.3.1)
|
|
16
|
-
|
|
17
|
+
i18n (0.6.0)
|
|
18
|
+
multi_json (1.3.5)
|
|
19
|
+
rake (0.9.2.2)
|
|
17
20
|
webmock (1.7.8)
|
|
18
21
|
addressable (~> 2.2, > 2.2.5)
|
|
19
22
|
crack (>= 0.1.7)
|
|
@@ -23,4 +26,5 @@ PLATFORMS
|
|
|
23
26
|
|
|
24
27
|
DEPENDENCIES
|
|
25
28
|
fms-admin-api!
|
|
29
|
+
rake
|
|
26
30
|
webmock
|
data/README.md
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
Flash Media Server Administration API
|
|
1
|
+
Flash Media Server Administration API 
|
|
2
2
|
=====================================
|
|
3
3
|
|
|
4
4
|
Command line interface to [Flash Media Server Administration API][fmsapi]:
|
|
5
5
|
|
|
6
|
+
Instalation
|
|
7
|
+
-----------
|
|
8
|
+
|
|
9
|
+
$ gem install fms-admin-api
|
|
10
|
+
|
|
6
11
|
Usage
|
|
7
12
|
-----
|
|
8
13
|
|
|
@@ -21,20 +26,37 @@ Ruby client usage
|
|
|
21
26
|
|
|
22
27
|
You can use the ruby client directly on you code:
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
```ruby
|
|
30
|
+
require 'fms'
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
client = FMS::Client.new(:host => 'fms.example.com',
|
|
33
|
+
:auser => 'fms',
|
|
34
|
+
:apswd => 'secret') # you can use :port here, 1111 is default
|
|
35
|
+
```
|
|
29
36
|
|
|
30
37
|
now just call any method defined in the [FMS Admin API][fmsapi]:
|
|
31
38
|
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
```ruby
|
|
40
|
+
client.reload_app(:app_inst => 'live/cam1')
|
|
41
|
+
client.get_apps(:force => true, :verbose => true)
|
|
42
|
+
```
|
|
34
43
|
|
|
35
44
|
just note that the methods name and parameters are used with ruby_default_notation
|
|
36
45
|
instead of camelCase as documented.
|
|
37
46
|
|
|
47
|
+
The return value from all api method calls is a `FMS::Response`, on which you may want to call `.to_xml`
|
|
48
|
+
to get a `REXML::Document` instance:
|
|
49
|
+
|
|
50
|
+
```ruby
|
|
51
|
+
require 'rexml/xpath'
|
|
52
|
+
|
|
53
|
+
xml_resp = client.get_live_stream_stats(:app_inst => 'live', :stream => 'cam1').to_xml
|
|
54
|
+
puts REXML::XPath.first(xml_resp, '/result/data/publisher/name').text
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
there is also a `to_s` method on `FMS::Response`.
|
|
59
|
+
|
|
38
60
|
Take a look in the tests/ folder for more detailed specification.
|
|
39
61
|
|
|
40
62
|
[fmsapi]: http://help.adobe.com/en_US/flashmediaserver/adminapi/WSa4cb07693d12388431df580a12a34991ebc-8000.html
|
data/fms-admin-api.gemspec
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
|
4
|
-
require "fms"
|
|
4
|
+
require "fms/version"
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = "fms-admin-api"
|
|
@@ -22,4 +22,5 @@ Gem::Specification.new do |s|
|
|
|
22
22
|
s.add_runtime_dependency "activesupport"
|
|
23
23
|
s.add_runtime_dependency "colorize"
|
|
24
24
|
s.add_development_dependency "webmock"
|
|
25
|
+
s.add_development_dependency "rake"
|
|
25
26
|
end
|
|
Binary file
|
data/lib/fms/client.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'net/http'
|
|
2
|
+
require 'rexml/document'
|
|
2
3
|
require 'active_support'
|
|
3
4
|
|
|
4
5
|
module FMS
|
|
@@ -24,17 +25,17 @@ module FMS
|
|
|
24
25
|
else
|
|
25
26
|
params = {}
|
|
26
27
|
end
|
|
27
|
-
do_get(meth, camelize_params(params))
|
|
28
|
+
Response.new do_get(meth, camelize_params(params)).strip
|
|
28
29
|
end
|
|
29
30
|
|
|
30
|
-
private
|
|
31
|
+
private
|
|
31
32
|
|
|
32
33
|
def do_get(action, params = {})
|
|
33
34
|
resp = Net::HTTP.get_response(build_url(action, params))
|
|
34
35
|
raise NoMethodError, "#{action.inspect} is not a valid API method" unless resp.code == "200"
|
|
35
36
|
resp.body
|
|
36
37
|
end
|
|
37
|
-
|
|
38
|
+
|
|
38
39
|
def build_url(method, extra_params = {})
|
|
39
40
|
url = URI("http://#{@host}:#{@port}/admin/#{method}")
|
|
40
41
|
url.query = URI.encode_www_form(@base_params.merge(extra_params))
|
|
@@ -50,4 +51,21 @@ module FMS
|
|
|
50
51
|
end
|
|
51
52
|
|
|
52
53
|
end
|
|
54
|
+
|
|
55
|
+
class Response
|
|
56
|
+
|
|
57
|
+
def initialize(content)
|
|
58
|
+
@content = content
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def to_xml
|
|
62
|
+
REXML::Document.new @content
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def to_s
|
|
66
|
+
@content
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
|
|
53
71
|
end
|
data/lib/fms/cmdline.rb
CHANGED
|
@@ -74,7 +74,7 @@ module FMS
|
|
|
74
74
|
init_params = filter_init_params params
|
|
75
75
|
begin
|
|
76
76
|
c = FMS::Client.new(init_params)
|
|
77
|
-
Output.stdout c.send(method.to_sym, params)
|
|
77
|
+
Output.stdout c.send(method.to_sym, params).to_s
|
|
78
78
|
rescue ArgumentError => error
|
|
79
79
|
Output.stderr error.message.gsub(':','--')
|
|
80
80
|
rescue NoMethodError => error
|
data/lib/fms/version.rb
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
module FMS
|
|
2
|
-
VERSION = "0.
|
|
3
|
-
end
|
|
2
|
+
VERSION = "0.2"
|
|
3
|
+
end
|
data/tests/client_tests.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require 'rexml/xpath'
|
|
1
2
|
require 'tests_helper'
|
|
2
3
|
|
|
3
4
|
class ClientTests < BaseTestCase
|
|
@@ -32,4 +33,52 @@ class ClientTests < BaseTestCase
|
|
|
32
33
|
assert_requested(:get, "http://fms.example.com:1111/admin/reloadApp?appInst=live/cam1&apswd=fms&auser=fms")
|
|
33
34
|
end
|
|
34
35
|
|
|
36
|
+
def test_should_return_response_as_xml
|
|
37
|
+
url = "http://fms.example.com:1111/admin/getLiveStreamStats?appInst=live&apswd=fms&auser=fms&stream=cam1"
|
|
38
|
+
stub_request(:get, url).to_return(:body => GET_LIVE_STREAM_STATS)
|
|
39
|
+
|
|
40
|
+
c = FMS::Client.new(:host => 'fms.example.com')
|
|
41
|
+
xml_resp = c.get_live_stream_stats(:app_inst => 'live', :stream => 'cam1').to_xml
|
|
42
|
+
|
|
43
|
+
assert_requested(:get, url)
|
|
44
|
+
assert_equal "cam1", REXML::XPath.first(xml_resp, '/result/data/publisher/name').text
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_should_return_response_as_raw_string
|
|
48
|
+
url = "http://fms.example.com:1111/admin/getLiveStreamStats?appInst=live&apswd=fms&auser=fms&stream=cam1"
|
|
49
|
+
stub_request(:get, url).to_return(:body => GET_LIVE_STREAM_STATS)
|
|
50
|
+
|
|
51
|
+
c = FMS::Client.new(:host => 'fms.example.com')
|
|
52
|
+
str_resp = c.get_live_stream_stats(:app_inst => 'live', :stream => 'cam1').to_s
|
|
53
|
+
|
|
54
|
+
assert_requested(:get, url)
|
|
55
|
+
assert str_resp.include?('<name>cam1</name>')
|
|
56
|
+
end
|
|
57
|
+
|
|
35
58
|
end
|
|
59
|
+
|
|
60
|
+
# Stub responses
|
|
61
|
+
|
|
62
|
+
GET_LIVE_STREAM_STATS = %Q{
|
|
63
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
64
|
+
<result>
|
|
65
|
+
<level>status</level>
|
|
66
|
+
<code>NetConnection.Call.Success</code>
|
|
67
|
+
<timestamp>Mon May 14 22:44:35 2012</timestamp>
|
|
68
|
+
<data>
|
|
69
|
+
<name>_defaultRoot_:_defaultVHost_:::_0</name>
|
|
70
|
+
<publisher>
|
|
71
|
+
<name>cam1</name>
|
|
72
|
+
<time>Mon May 14 22:43:39 2012</time>
|
|
73
|
+
<type>publishing</type>
|
|
74
|
+
<client>oAACAAAA</client>
|
|
75
|
+
<stream_id>ACACAAAA</stream_id>
|
|
76
|
+
<client_type>normal</client_type>
|
|
77
|
+
<diffserv_bits>0x0</diffserv_bits>
|
|
78
|
+
<publish_time>Mon May 14 22:43:39 2012</publish_time>
|
|
79
|
+
</publisher>
|
|
80
|
+
<subscribers>
|
|
81
|
+
</subscribers>
|
|
82
|
+
</data>
|
|
83
|
+
</result>
|
|
84
|
+
}
|
data/tests/cmdline_tests.rb
CHANGED
|
@@ -63,6 +63,16 @@ class CommandLineTests < BaseTestCase
|
|
|
63
63
|
assert_help_message
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
+
def test_should_return_response_as_string
|
|
67
|
+
url = "http://fms.example.com:1111/admin/getLiveStreams?appInst=live&apswd=fms&auser=fms"
|
|
68
|
+
stub_request(:get, url).to_return(:body => GET_LIVE_STREAMS)
|
|
69
|
+
|
|
70
|
+
run_command ["get_live_streams", "--host=fms.example.com", "--app_inst=live"]
|
|
71
|
+
assert_requested(:get, url)
|
|
72
|
+
assert_command_stdout_contains GET_LIVE_STREAMS.strip
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
66
76
|
def run_command(argv)
|
|
67
77
|
FMS::CmdLine.parse(argv)
|
|
68
78
|
end
|
|
@@ -95,3 +105,17 @@ class CommandLineTests < BaseTestCase
|
|
|
95
105
|
end
|
|
96
106
|
|
|
97
107
|
end
|
|
108
|
+
|
|
109
|
+
GET_LIVE_STREAMS = %Q{
|
|
110
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
111
|
+
<result>
|
|
112
|
+
<level>status</level>
|
|
113
|
+
<code>NetConnection.Call.Success</code>
|
|
114
|
+
<timestamp>Mon May 14 22:47:45 2012</timestamp>
|
|
115
|
+
<name>_defaultRoot_:_defaultVHost_:::_0</name>
|
|
116
|
+
<data>
|
|
117
|
+
<_0>stream1</_0>
|
|
118
|
+
<_1>stream1</_2>
|
|
119
|
+
</data>
|
|
120
|
+
</result>
|
|
121
|
+
}
|
metadata
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fms-admin-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
prerelease:
|
|
5
|
-
|
|
6
|
-
- 0
|
|
7
|
-
- 1
|
|
8
|
-
version: "0.1"
|
|
4
|
+
prerelease:
|
|
5
|
+
version: "0.2"
|
|
9
6
|
platform: ruby
|
|
10
7
|
authors:
|
|
11
8
|
- Igor Sobreira
|
|
@@ -13,8 +10,7 @@ autorequire:
|
|
|
13
10
|
bindir: bin
|
|
14
11
|
cert_chain: []
|
|
15
12
|
|
|
16
|
-
date:
|
|
17
|
-
default_executable:
|
|
13
|
+
date: 2012-05-17 00:00:00 Z
|
|
18
14
|
dependencies:
|
|
19
15
|
- !ruby/object:Gem::Dependency
|
|
20
16
|
name: activesupport
|
|
@@ -24,8 +20,6 @@ dependencies:
|
|
|
24
20
|
requirements:
|
|
25
21
|
- - ">="
|
|
26
22
|
- !ruby/object:Gem::Version
|
|
27
|
-
segments:
|
|
28
|
-
- 0
|
|
29
23
|
version: "0"
|
|
30
24
|
type: :runtime
|
|
31
25
|
version_requirements: *id001
|
|
@@ -37,8 +31,6 @@ dependencies:
|
|
|
37
31
|
requirements:
|
|
38
32
|
- - ">="
|
|
39
33
|
- !ruby/object:Gem::Version
|
|
40
|
-
segments:
|
|
41
|
-
- 0
|
|
42
34
|
version: "0"
|
|
43
35
|
type: :runtime
|
|
44
36
|
version_requirements: *id002
|
|
@@ -50,11 +42,20 @@ dependencies:
|
|
|
50
42
|
requirements:
|
|
51
43
|
- - ">="
|
|
52
44
|
- !ruby/object:Gem::Version
|
|
53
|
-
segments:
|
|
54
|
-
- 0
|
|
55
45
|
version: "0"
|
|
56
46
|
type: :development
|
|
57
47
|
version_requirements: *id003
|
|
48
|
+
- !ruby/object:Gem::Dependency
|
|
49
|
+
name: rake
|
|
50
|
+
prerelease: false
|
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
|
52
|
+
none: false
|
|
53
|
+
requirements:
|
|
54
|
+
- - ">="
|
|
55
|
+
- !ruby/object:Gem::Version
|
|
56
|
+
version: "0"
|
|
57
|
+
type: :development
|
|
58
|
+
version_requirements: *id004
|
|
58
59
|
description: Ruby client and command line interface to Flash Media Server Administration API
|
|
59
60
|
email:
|
|
60
61
|
- igor@igorsobreira.com
|
|
@@ -66,12 +67,14 @@ extra_rdoc_files: []
|
|
|
66
67
|
|
|
67
68
|
files:
|
|
68
69
|
- .rvmrc
|
|
70
|
+
- .travis.yml
|
|
69
71
|
- Gemfile
|
|
70
72
|
- Gemfile.lock
|
|
71
73
|
- README.md
|
|
72
74
|
- Rakefile
|
|
73
75
|
- bin/fmsapi
|
|
74
76
|
- fms-admin-api.gemspec
|
|
77
|
+
- gems/fms-admin-api-0.1.gem
|
|
75
78
|
- lib/fms.rb
|
|
76
79
|
- lib/fms/client.rb
|
|
77
80
|
- lib/fms/cmdline.rb
|
|
@@ -79,7 +82,6 @@ files:
|
|
|
79
82
|
- tests/client_tests.rb
|
|
80
83
|
- tests/cmdline_tests.rb
|
|
81
84
|
- tests/tests_helper.rb
|
|
82
|
-
has_rdoc: true
|
|
83
85
|
homepage: http://github.com/igorsobreira/fms-admin-api
|
|
84
86
|
licenses: []
|
|
85
87
|
|
|
@@ -93,21 +95,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
93
95
|
requirements:
|
|
94
96
|
- - ">="
|
|
95
97
|
- !ruby/object:Gem::Version
|
|
96
|
-
segments:
|
|
97
|
-
- 0
|
|
98
98
|
version: "0"
|
|
99
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
100
|
none: false
|
|
101
101
|
requirements:
|
|
102
102
|
- - ">="
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
|
-
segments:
|
|
105
|
-
- 0
|
|
106
104
|
version: "0"
|
|
107
105
|
requirements: []
|
|
108
106
|
|
|
109
107
|
rubyforge_project: fms-admin-api
|
|
110
|
-
rubygems_version: 1.
|
|
108
|
+
rubygems_version: 1.8.21
|
|
111
109
|
signing_key:
|
|
112
110
|
specification_version: 3
|
|
113
111
|
summary: Ruby client and command line interface to Flash Media Server Administration API
|