beats-client 0.2.1 → 0.3.0
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/.gitignore +2 -0
- data/.rvmrc +1 -1
- data/HISTORY.md +5 -0
- data/beats-client.gemspec +2 -2
- data/lib/beats/client.rb +6 -0
- data/lib/beats/command.rb +8 -4
- data/lib/beats/commands/base.rb +6 -0
- data/lib/beats/commands/help.rb +3 -0
- data/lib/beats/commands/ingest.rb +22 -0
- data/lib/beats/version.rb +1 -1
- data/test/client_test.rb +15 -0
- data/test/command_test.rb +10 -3
- metadata +19 -16
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm 1.9.
|
1
|
+
rvm 1.9.3@beats-ruby-client --create
|
data/HISTORY.md
CHANGED
data/beats-client.gemspec
CHANGED
@@ -5,8 +5,8 @@ require "beats/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "beats-client"
|
7
7
|
s.version = Beats::VERSION
|
8
|
-
s.authors = ["Niklas Holmgren"]
|
9
|
-
s.email = ["niklas@sutajio.se"]
|
8
|
+
s.authors = ["Niklas Holmgren", "Sebastian Falk"]
|
9
|
+
s.email = ["niklas@sutajio.se", "sebastian.falk@netlight.se"]
|
10
10
|
s.homepage = "https://github.com/ProjectDaisy/beats-ruby-client"
|
11
11
|
s.summary = %q{A CLI client and SDK for Beats API}
|
12
12
|
s.description = %q{A CLI client and SDK for Beats API}
|
data/lib/beats/client.rb
CHANGED
@@ -70,6 +70,12 @@ module Beats
|
|
70
70
|
def sentence
|
71
71
|
decode_json(get(resolve_uri(@base_url, href(:sentence))))
|
72
72
|
end
|
73
|
+
|
74
|
+
def add_resource(resource)
|
75
|
+
decode_json(post(resolve_uri(@base_url, ""),
|
76
|
+
MultiJson.encode(resource),
|
77
|
+
'Content-Type' => 'application/json'))
|
78
|
+
end
|
73
79
|
|
74
80
|
private
|
75
81
|
|
data/lib/beats/command.rb
CHANGED
@@ -10,20 +10,22 @@ module Beats
|
|
10
10
|
DEFAULT_COMMAND = 'help'
|
11
11
|
|
12
12
|
class << self
|
13
|
-
def parse(command)
|
13
|
+
def parse(command, *args)
|
14
14
|
command = DEFAULT_COMMAND if command == ''
|
15
15
|
parts = command.split(':')
|
16
16
|
klass = command_class(parts.first)
|
17
17
|
if klass.has_command?(parts.last)
|
18
|
-
[klass, parts.last.to_sym]
|
18
|
+
[klass.new(*args.flatten), parts.last.to_sym]
|
19
|
+
elsif klass.has_command?('gem_execute')
|
20
|
+
[klass.new(*args.flatten << parts.last), 'gem_execute'.to_sym]
|
19
21
|
else
|
20
22
|
raise InvalidCommand, command
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
26
|
def run(command, *args)
|
25
|
-
|
26
|
-
|
27
|
+
object, method = parse(command, *args)
|
28
|
+
object.send(method)
|
27
29
|
rescue RestClient::Unauthorized => e
|
28
30
|
puts '!!! AUTHENTICATION REQUIRED !!!'
|
29
31
|
run 'auth:login'
|
@@ -36,6 +38,8 @@ module Beats
|
|
36
38
|
error "Unable to connect to server. Your internet connection might be down."
|
37
39
|
rescue InvalidCommand => e
|
38
40
|
error "Unknown command: #{e.to_s}"
|
41
|
+
rescue LoadError => e
|
42
|
+
error "Load error: #{e.to_s}"
|
39
43
|
rescue CommandFailed => e
|
40
44
|
error e.message
|
41
45
|
rescue Interrupt => e
|
data/lib/beats/commands/base.rb
CHANGED
data/lib/beats/commands/help.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Beats
|
2
|
+
module Command
|
3
|
+
class Ingest < Base
|
4
|
+
|
5
|
+
def ingest
|
6
|
+
display 'Usage: beats ingest:<adapter> [options]'
|
7
|
+
end
|
8
|
+
|
9
|
+
def gem_execute
|
10
|
+
adapter = args.pop
|
11
|
+
load_adapter(adapter)
|
12
|
+
# TODO: Add a general solution to CamelCase the adapter?
|
13
|
+
handler = Beats.const_get('Adapter').const_get(adapter.capitalize!).const_get('Handler').new(args)
|
14
|
+
handler.each_release do |release|
|
15
|
+
display YAML.dump(release)
|
16
|
+
client.add_resource(release)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/beats/version.rb
CHANGED
data/test/client_test.rb
CHANGED
@@ -58,5 +58,20 @@ class ClientTest < Test::Unit::TestCase
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
61
|
+
def test_can_add_resource
|
62
|
+
@client.add_resource(
|
63
|
+
{"type"=>"Album",
|
64
|
+
"name"=>"Dwight Live",
|
65
|
+
"artist"=>"Dwight Yoakam",
|
66
|
+
"tracks"=>
|
67
|
+
[{"type"=>"Track",
|
68
|
+
"artist"=>"Dwight Yoakam",
|
69
|
+
"name"=>"Little Sister",
|
70
|
+
"album"=>"Dwight Live"},
|
71
|
+
{"type"=>"Track",
|
72
|
+
"artist"=>"Dwight Yoakam",
|
73
|
+
"name"=>"It Only Hurts When I Cry",
|
74
|
+
"album"=>"Dwight Live"}]})
|
75
|
+
end
|
61
76
|
|
62
77
|
end
|
data/test/command_test.rb
CHANGED
@@ -9,11 +9,18 @@ end
|
|
9
9
|
class CommandTest < Test::Unit::TestCase
|
10
10
|
|
11
11
|
def test_should_resolve_commands
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
Beats::Command::Help.new.to_s
|
13
|
+
Beats::Command.parse('').to_s
|
14
|
+
assert command_answer_ok?(Beats::Command.parse(''), Beats::Command::Help, :help)
|
15
|
+
assert command_answer_ok?(Beats::Command.parse('test'), Beats::Command::Test, :test)
|
16
|
+
assert command_answer_ok?(Beats::Command.parse('test:foo'), Beats::Command::Test, :foo)
|
17
|
+
assert command_answer_ok?(Beats::Command.parse('ingest:discogs'), Beats::Command::Ingest, :gem_execute)
|
15
18
|
end
|
16
19
|
|
20
|
+
def command_answer_ok?(arr, klass, sym)
|
21
|
+
arr[0].instance_of?(klass) && arr[1] == sym
|
22
|
+
end
|
23
|
+
|
17
24
|
def test_should_raise_exeption_if_command_could_not_be_resolved
|
18
25
|
assert_raises Beats::Command::InvalidCommand do
|
19
26
|
Beats::Command.parse('foo')
|
metadata
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beats-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Niklas Holmgren
|
9
|
+
- Sebastian Falk
|
9
10
|
autorequire:
|
10
11
|
bindir: bin
|
11
12
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
13
|
+
date: 2012-02-29 00:00:00.000000000 Z
|
13
14
|
dependencies:
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: rest-client
|
16
|
-
requirement: &
|
17
|
+
requirement: &70232077106980 !ruby/object:Gem::Requirement
|
17
18
|
none: false
|
18
19
|
requirements:
|
19
20
|
- - ! '>='
|
@@ -21,10 +22,10 @@ dependencies:
|
|
21
22
|
version: '0'
|
22
23
|
type: :runtime
|
23
24
|
prerelease: false
|
24
|
-
version_requirements: *
|
25
|
+
version_requirements: *70232077106980
|
25
26
|
- !ruby/object:Gem::Dependency
|
26
27
|
name: multi_json
|
27
|
-
requirement: &
|
28
|
+
requirement: &70232077106080 !ruby/object:Gem::Requirement
|
28
29
|
none: false
|
29
30
|
requirements:
|
30
31
|
- - ! '>='
|
@@ -32,10 +33,10 @@ dependencies:
|
|
32
33
|
version: '0'
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements: *
|
36
|
+
version_requirements: *70232077106080
|
36
37
|
- !ruby/object:Gem::Dependency
|
37
38
|
name: json_pure
|
38
|
-
requirement: &
|
39
|
+
requirement: &70232077105200 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
41
|
requirements:
|
41
42
|
- - ! '>='
|
@@ -43,10 +44,10 @@ dependencies:
|
|
43
44
|
version: '0'
|
44
45
|
type: :runtime
|
45
46
|
prerelease: false
|
46
|
-
version_requirements: *
|
47
|
+
version_requirements: *70232077105200
|
47
48
|
- !ruby/object:Gem::Dependency
|
48
49
|
name: rake
|
49
|
-
requirement: &
|
50
|
+
requirement: &70232077104540 !ruby/object:Gem::Requirement
|
50
51
|
none: false
|
51
52
|
requirements:
|
52
53
|
- - ! '>='
|
@@ -54,10 +55,10 @@ dependencies:
|
|
54
55
|
version: '0'
|
55
56
|
type: :development
|
56
57
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
+
version_requirements: *70232077104540
|
58
59
|
- !ruby/object:Gem::Dependency
|
59
60
|
name: yard
|
60
|
-
requirement: &
|
61
|
+
requirement: &70232077103880 !ruby/object:Gem::Requirement
|
61
62
|
none: false
|
62
63
|
requirements:
|
63
64
|
- - ! '>='
|
@@ -65,10 +66,10 @@ dependencies:
|
|
65
66
|
version: '0'
|
66
67
|
type: :development
|
67
68
|
prerelease: false
|
68
|
-
version_requirements: *
|
69
|
+
version_requirements: *70232077103880
|
69
70
|
- !ruby/object:Gem::Dependency
|
70
71
|
name: redcarpet
|
71
|
-
requirement: &
|
72
|
+
requirement: &70232077103380 !ruby/object:Gem::Requirement
|
72
73
|
none: false
|
73
74
|
requirements:
|
74
75
|
- - ! '>='
|
@@ -76,10 +77,10 @@ dependencies:
|
|
76
77
|
version: '0'
|
77
78
|
type: :development
|
78
79
|
prerelease: false
|
79
|
-
version_requirements: *
|
80
|
+
version_requirements: *70232077103380
|
80
81
|
- !ruby/object:Gem::Dependency
|
81
82
|
name: github-markup
|
82
|
-
requirement: &
|
83
|
+
requirement: &70232077102180 !ruby/object:Gem::Requirement
|
83
84
|
none: false
|
84
85
|
requirements:
|
85
86
|
- - ! '>='
|
@@ -87,10 +88,11 @@ dependencies:
|
|
87
88
|
version: '0'
|
88
89
|
type: :development
|
89
90
|
prerelease: false
|
90
|
-
version_requirements: *
|
91
|
+
version_requirements: *70232077102180
|
91
92
|
description: A CLI client and SDK for Beats API
|
92
93
|
email:
|
93
94
|
- niklas@sutajio.se
|
95
|
+
- sebastian.falk@netlight.se
|
94
96
|
executables:
|
95
97
|
- beats
|
96
98
|
extensions: []
|
@@ -114,6 +116,7 @@ files:
|
|
114
116
|
- lib/beats/commands/auth.rb
|
115
117
|
- lib/beats/commands/base.rb
|
116
118
|
- lib/beats/commands/help.rb
|
119
|
+
- lib/beats/commands/ingest.rb
|
117
120
|
- lib/beats/commands/sentence.rb
|
118
121
|
- lib/beats/commands/version.rb
|
119
122
|
- lib/beats/version.rb
|