bixby-common 0.3.8
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/.document +5 -0
- data/Gemfile +40 -0
- data/Gemfile.lock +147 -0
- data/Rakefile +58 -0
- data/VERSION +1 -0
- data/bixby-common.gemspec +135 -0
- data/lib/bixby-common.rb +1 -0
- data/lib/bixby_common/api/json_request.rb +36 -0
- data/lib/bixby_common/api/json_response.rb +83 -0
- data/lib/bixby_common/bixby.rb +23 -0
- data/lib/bixby_common/command_response.rb +80 -0
- data/lib/bixby_common/command_spec.rb +138 -0
- data/lib/bixby_common/exception/bundle_not_found.rb +5 -0
- data/lib/bixby_common/exception/command_exception.rb +13 -0
- data/lib/bixby_common/exception/command_not_found.rb +5 -0
- data/lib/bixby_common/exception/encryption_error.rb +5 -0
- data/lib/bixby_common/util/crypto_util.rb +130 -0
- data/lib/bixby_common/util/debug.rb +19 -0
- data/lib/bixby_common/util/hashify.rb +16 -0
- data/lib/bixby_common/util/http_client.rb +64 -0
- data/lib/bixby_common/util/jsonify.rb +27 -0
- data/lib/bixby_common/util/log.rb +50 -0
- data/lib/bixby_common.rb +24 -0
- data/test/bixby_common_test.rb +18 -0
- data/test/command_response_test.rb +48 -0
- data/test/command_spec_test.rb +98 -0
- data/test/helper.rb +34 -0
- data/test/support/repo/vendor/test_bundle/bin/cat +2 -0
- data/test/support/repo/vendor/test_bundle/bin/cat.json +3 -0
- data/test/support/repo/vendor/test_bundle/bin/echo +2 -0
- data/test/support/repo/vendor/test_bundle/digest +20 -0
- data/test/support/repo/vendor/test_bundle/manifest.json +0 -0
- data/test/util/http_client_test.rb +58 -0
- data/test/util/jsonify_test.rb +36 -0
- data/test/util/log_test.rb +26 -0
- metadata +450 -0
data/.document
ADDED
data/Gemfile
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
source "https://rubygems.org"
|
2
|
+
|
3
|
+
gem "multi_json"
|
4
|
+
gem "httpi", :git => "https://github.com/chetan/httpi.git",
|
5
|
+
:branch => "chunked_responses"
|
6
|
+
|
7
|
+
gem "logging"
|
8
|
+
|
9
|
+
group :development do
|
10
|
+
gem "yard", "~> 0.8"
|
11
|
+
gem "bundler", "~> 1.1"
|
12
|
+
gem "jeweler", :git => "https://github.com/chetan/jeweler.git", :branch => "bixby"
|
13
|
+
gem "pry"
|
14
|
+
|
15
|
+
gem "simplecov", :platforms => [:mri_19, :rbx], :git => "https://github.com/chetan/simplecov.git", :branch => "inline_nocov"
|
16
|
+
gem "rcov", :platforms => :mri_18
|
17
|
+
|
18
|
+
gem "minitest", :platforms => [:mri_19, :rbx]
|
19
|
+
gem "test-unit", :platforms => :mri_18
|
20
|
+
gem "webmock", :require => false
|
21
|
+
gem "mocha", :require => false
|
22
|
+
|
23
|
+
gem "turn"
|
24
|
+
|
25
|
+
gem "test_guard", :git => "https://github.com/chetan/test_guard.git"
|
26
|
+
gem 'rb-inotify', :require => false
|
27
|
+
gem 'rb-fsevent', :require => false
|
28
|
+
gem 'rb-fchange', :require => false
|
29
|
+
|
30
|
+
# platform specific gemms
|
31
|
+
# not sure we need to include these at all
|
32
|
+
gem "json", :platforms => [:jruby]
|
33
|
+
gem "oj", :platforms => [:mri, :rbx]
|
34
|
+
|
35
|
+
gem "httpclient", :platforms => [:jruby]
|
36
|
+
gem "curb", :platforms => [:mri, :rbx]
|
37
|
+
|
38
|
+
gem "jruby-openssl", :platforms => [:jruby]
|
39
|
+
end
|
40
|
+
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
GIT
|
2
|
+
remote: https://github.com/chetan/httpi.git
|
3
|
+
revision: f6e49303fee6778c714bcc556fa5f9247bc3a3f3
|
4
|
+
branch: chunked_responses
|
5
|
+
specs:
|
6
|
+
httpi (2.0.0)
|
7
|
+
rack
|
8
|
+
|
9
|
+
GIT
|
10
|
+
remote: https://github.com/chetan/jeweler.git
|
11
|
+
revision: 41062abfc55dc1f5775d6419c796fd1c8756fc7b
|
12
|
+
branch: bixby
|
13
|
+
specs:
|
14
|
+
jeweler (1.8.4)
|
15
|
+
bundler (~> 1.0)
|
16
|
+
git (>= 1.2.5)
|
17
|
+
rake
|
18
|
+
rdoc
|
19
|
+
|
20
|
+
GIT
|
21
|
+
remote: https://github.com/chetan/simplecov.git
|
22
|
+
revision: 308449b2193700f7a9a4291821a323110838fbc0
|
23
|
+
branch: inline_nocov
|
24
|
+
specs:
|
25
|
+
simplecov (0.7.1)
|
26
|
+
multi_json (~> 1.0)
|
27
|
+
simplecov-html (~> 0.7.1)
|
28
|
+
|
29
|
+
GIT
|
30
|
+
remote: https://github.com/chetan/test_guard.git
|
31
|
+
revision: dc2f30da10945323a3e8f377311b6df54f46ad4c
|
32
|
+
specs:
|
33
|
+
test_guard (0.1.2)
|
34
|
+
awesome_print
|
35
|
+
growl
|
36
|
+
guard
|
37
|
+
simplecov
|
38
|
+
simplecov-console
|
39
|
+
single_test
|
40
|
+
turn
|
41
|
+
|
42
|
+
GEM
|
43
|
+
remote: https://rubygems.org/
|
44
|
+
specs:
|
45
|
+
addressable (2.3.2)
|
46
|
+
ansi (1.4.3)
|
47
|
+
awesome_print (1.1.0)
|
48
|
+
bouncy-castle-java (1.5.0146.1)
|
49
|
+
coderay (1.0.8)
|
50
|
+
colorize (0.5.8)
|
51
|
+
crack (0.3.2)
|
52
|
+
curb (0.8.3)
|
53
|
+
ffi (1.3.1)
|
54
|
+
ffi (1.3.1-java)
|
55
|
+
git (1.2.5)
|
56
|
+
growl (1.0.3)
|
57
|
+
guard (1.6.2)
|
58
|
+
listen (>= 0.6.0)
|
59
|
+
lumberjack (>= 1.0.2)
|
60
|
+
pry (>= 0.9.10)
|
61
|
+
terminal-table (>= 1.4.3)
|
62
|
+
thor (>= 0.14.6)
|
63
|
+
hirb (0.7.1)
|
64
|
+
httpclient (2.3.2)
|
65
|
+
jruby-openssl (0.8.2)
|
66
|
+
bouncy-castle-java (>= 1.5.0146.1)
|
67
|
+
json (1.7.7)
|
68
|
+
json (1.7.7-java)
|
69
|
+
listen (0.7.2)
|
70
|
+
little-plugger (1.1.3)
|
71
|
+
logging (1.8.1)
|
72
|
+
little-plugger (>= 1.1.3)
|
73
|
+
multi_json (>= 1.3.6)
|
74
|
+
lumberjack (1.0.2)
|
75
|
+
metaclass (0.0.1)
|
76
|
+
method_source (0.8.1)
|
77
|
+
minitest (4.6.0)
|
78
|
+
mocha (0.13.2)
|
79
|
+
metaclass (~> 0.0.1)
|
80
|
+
multi_json (1.5.1)
|
81
|
+
oj (2.0.4)
|
82
|
+
pry (0.9.11.4)
|
83
|
+
coderay (~> 1.0.5)
|
84
|
+
method_source (~> 0.8)
|
85
|
+
slop (~> 3.4)
|
86
|
+
pry (0.9.11.4-java)
|
87
|
+
coderay (~> 1.0.5)
|
88
|
+
method_source (~> 0.8)
|
89
|
+
slop (~> 3.4)
|
90
|
+
spoon (~> 0.0)
|
91
|
+
rack (1.5.2)
|
92
|
+
rake (10.0.3)
|
93
|
+
rb-fchange (0.0.6)
|
94
|
+
ffi
|
95
|
+
rb-fsevent (0.9.3)
|
96
|
+
rb-inotify (0.9.0)
|
97
|
+
ffi (>= 0.5.0)
|
98
|
+
rcov (1.0.0)
|
99
|
+
rdoc (3.12.1)
|
100
|
+
json (~> 1.4)
|
101
|
+
simplecov-console (0.1.1)
|
102
|
+
colorize
|
103
|
+
hirb
|
104
|
+
simplecov
|
105
|
+
simplecov-html (0.7.1)
|
106
|
+
single_test (0.5.2)
|
107
|
+
rake (> 0.9)
|
108
|
+
slop (3.4.3)
|
109
|
+
spoon (0.0.1)
|
110
|
+
terminal-table (1.4.5)
|
111
|
+
test-unit (2.5.4)
|
112
|
+
thor (0.17.0)
|
113
|
+
turn (0.9.6)
|
114
|
+
ansi
|
115
|
+
webmock (1.9.0)
|
116
|
+
addressable (>= 2.2.7)
|
117
|
+
crack (>= 0.1.7)
|
118
|
+
yard (0.8.4.1)
|
119
|
+
|
120
|
+
PLATFORMS
|
121
|
+
java
|
122
|
+
ruby
|
123
|
+
|
124
|
+
DEPENDENCIES
|
125
|
+
bundler (~> 1.1)
|
126
|
+
curb
|
127
|
+
httpclient
|
128
|
+
httpi!
|
129
|
+
jeweler!
|
130
|
+
jruby-openssl
|
131
|
+
json
|
132
|
+
logging
|
133
|
+
minitest
|
134
|
+
mocha
|
135
|
+
multi_json
|
136
|
+
oj
|
137
|
+
pry
|
138
|
+
rb-fchange
|
139
|
+
rb-fsevent
|
140
|
+
rb-inotify
|
141
|
+
rcov
|
142
|
+
simplecov!
|
143
|
+
test-unit
|
144
|
+
test_guard!
|
145
|
+
turn
|
146
|
+
webmock
|
147
|
+
yard (~> 0.8)
|
data/Rakefile
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'bundler'
|
5
|
+
begin
|
6
|
+
Bundler.setup(:default, :development)
|
7
|
+
rescue Bundler::BundlerError => e
|
8
|
+
$stderr.puts e.message
|
9
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
+
exit e.status_code
|
11
|
+
end
|
12
|
+
require 'rake'
|
13
|
+
require 'jeweler'
|
14
|
+
|
15
|
+
Jeweler::Tasks.new do |gemspec|
|
16
|
+
gemspec.name = "bixby-common"
|
17
|
+
gemspec.summary = "Bixby Common"
|
18
|
+
gemspec.description = "Bixby Common files/libs"
|
19
|
+
gemspec.email = "chetan@pixelcop.net"
|
20
|
+
gemspec.homepage = "http://github.com/chetan/bixby-common"
|
21
|
+
gemspec.authors = ["Chetan Sarva"]
|
22
|
+
end
|
23
|
+
Jeweler::RubygemsDotOrgTasks.new
|
24
|
+
|
25
|
+
Dir['tasks/**/*.rake'].each { |rake| load rake }
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
Rake::TestTask.new(:test) do |test|
|
29
|
+
test.libs << 'lib' << 'test'
|
30
|
+
test.pattern = 'test/**/*_test.rb'
|
31
|
+
test.verbose = true
|
32
|
+
end
|
33
|
+
|
34
|
+
if Module.const_defined? :Rcov then
|
35
|
+
begin
|
36
|
+
require 'rcov/rcovtask'
|
37
|
+
Rcov::RcovTask.new do |test|
|
38
|
+
test.libs << 'test'
|
39
|
+
test.pattern = 'test/**/*_test.rb'
|
40
|
+
test.verbose = true
|
41
|
+
test.rcov_opts << '--exclude "gems/*"'
|
42
|
+
end
|
43
|
+
rescue Exception => ex
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
task :default => :test
|
48
|
+
|
49
|
+
begin
|
50
|
+
require 'single_test'
|
51
|
+
SingleTest.load_tasks
|
52
|
+
|
53
|
+
rescue LoadError
|
54
|
+
warn "single_test not available"
|
55
|
+
end
|
56
|
+
|
57
|
+
require 'yard'
|
58
|
+
YARD::Rake::YardocTask.new
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.3.8
|
@@ -0,0 +1,135 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "bixby-common"
|
8
|
+
s.version = "0.3.8"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Chetan Sarva"]
|
12
|
+
s.date = "2013-03-23"
|
13
|
+
s.description = "Bixby Common files/libs"
|
14
|
+
s.email = "chetan@pixelcop.net"
|
15
|
+
s.files = [
|
16
|
+
".document",
|
17
|
+
"Gemfile",
|
18
|
+
"Gemfile.lock",
|
19
|
+
"Rakefile",
|
20
|
+
"VERSION",
|
21
|
+
"bixby-common.gemspec",
|
22
|
+
"lib/bixby-common.rb",
|
23
|
+
"lib/bixby_common.rb",
|
24
|
+
"lib/bixby_common/api/json_request.rb",
|
25
|
+
"lib/bixby_common/api/json_response.rb",
|
26
|
+
"lib/bixby_common/bixby.rb",
|
27
|
+
"lib/bixby_common/command_response.rb",
|
28
|
+
"lib/bixby_common/command_spec.rb",
|
29
|
+
"lib/bixby_common/exception/bundle_not_found.rb",
|
30
|
+
"lib/bixby_common/exception/command_exception.rb",
|
31
|
+
"lib/bixby_common/exception/command_not_found.rb",
|
32
|
+
"lib/bixby_common/exception/encryption_error.rb",
|
33
|
+
"lib/bixby_common/util/crypto_util.rb",
|
34
|
+
"lib/bixby_common/util/debug.rb",
|
35
|
+
"lib/bixby_common/util/hashify.rb",
|
36
|
+
"lib/bixby_common/util/http_client.rb",
|
37
|
+
"lib/bixby_common/util/jsonify.rb",
|
38
|
+
"lib/bixby_common/util/log.rb",
|
39
|
+
"test/bixby_common_test.rb",
|
40
|
+
"test/command_response_test.rb",
|
41
|
+
"test/command_spec_test.rb",
|
42
|
+
"test/helper.rb",
|
43
|
+
"test/support/repo/vendor/test_bundle/bin/cat",
|
44
|
+
"test/support/repo/vendor/test_bundle/bin/cat.json",
|
45
|
+
"test/support/repo/vendor/test_bundle/bin/echo",
|
46
|
+
"test/support/repo/vendor/test_bundle/digest",
|
47
|
+
"test/support/repo/vendor/test_bundle/manifest.json",
|
48
|
+
"test/util/http_client_test.rb",
|
49
|
+
"test/util/jsonify_test.rb",
|
50
|
+
"test/util/log_test.rb"
|
51
|
+
]
|
52
|
+
s.homepage = "http://github.com/chetan/bixby-common"
|
53
|
+
s.require_paths = ["lib"]
|
54
|
+
s.rubygems_version = "1.8.25"
|
55
|
+
s.summary = "Bixby Common"
|
56
|
+
|
57
|
+
if s.respond_to? :specification_version then
|
58
|
+
s.specification_version = 3
|
59
|
+
|
60
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
61
|
+
s.add_runtime_dependency(%q<multi_json>, [">= 0"])
|
62
|
+
s.add_runtime_dependency(%q<httpi>, [">= 0"])
|
63
|
+
s.add_runtime_dependency(%q<logging>, [">= 0"])
|
64
|
+
s.add_development_dependency(%q<yard>, ["~> 0.8"])
|
65
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.1"])
|
66
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
67
|
+
s.add_development_dependency(%q<pry>, [">= 0"])
|
68
|
+
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
69
|
+
s.add_development_dependency(%q<rcov>, [">= 0"])
|
70
|
+
s.add_development_dependency(%q<minitest>, [">= 0"])
|
71
|
+
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
72
|
+
s.add_development_dependency(%q<webmock>, [">= 0"])
|
73
|
+
s.add_development_dependency(%q<mocha>, [">= 0"])
|
74
|
+
s.add_development_dependency(%q<turn>, [">= 0"])
|
75
|
+
s.add_development_dependency(%q<test_guard>, [">= 0"])
|
76
|
+
s.add_development_dependency(%q<rb-inotify>, [">= 0"])
|
77
|
+
s.add_development_dependency(%q<rb-fsevent>, [">= 0"])
|
78
|
+
s.add_development_dependency(%q<rb-fchange>, [">= 0"])
|
79
|
+
s.add_development_dependency(%q<json>, [">= 0"])
|
80
|
+
s.add_development_dependency(%q<oj>, [">= 0"])
|
81
|
+
s.add_development_dependency(%q<httpclient>, [">= 0"])
|
82
|
+
s.add_development_dependency(%q<curb>, [">= 0"])
|
83
|
+
s.add_development_dependency(%q<jruby-openssl>, [">= 0"])
|
84
|
+
else
|
85
|
+
s.add_dependency(%q<multi_json>, [">= 0"])
|
86
|
+
s.add_dependency(%q<httpi>, [">= 0"])
|
87
|
+
s.add_dependency(%q<logging>, [">= 0"])
|
88
|
+
s.add_dependency(%q<yard>, ["~> 0.8"])
|
89
|
+
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
90
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
91
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
92
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
93
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
94
|
+
s.add_dependency(%q<minitest>, [">= 0"])
|
95
|
+
s.add_dependency(%q<test-unit>, [">= 0"])
|
96
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
97
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
98
|
+
s.add_dependency(%q<turn>, [">= 0"])
|
99
|
+
s.add_dependency(%q<test_guard>, [">= 0"])
|
100
|
+
s.add_dependency(%q<rb-inotify>, [">= 0"])
|
101
|
+
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
102
|
+
s.add_dependency(%q<rb-fchange>, [">= 0"])
|
103
|
+
s.add_dependency(%q<json>, [">= 0"])
|
104
|
+
s.add_dependency(%q<oj>, [">= 0"])
|
105
|
+
s.add_dependency(%q<httpclient>, [">= 0"])
|
106
|
+
s.add_dependency(%q<curb>, [">= 0"])
|
107
|
+
s.add_dependency(%q<jruby-openssl>, [">= 0"])
|
108
|
+
end
|
109
|
+
else
|
110
|
+
s.add_dependency(%q<multi_json>, [">= 0"])
|
111
|
+
s.add_dependency(%q<httpi>, [">= 0"])
|
112
|
+
s.add_dependency(%q<logging>, [">= 0"])
|
113
|
+
s.add_dependency(%q<yard>, ["~> 0.8"])
|
114
|
+
s.add_dependency(%q<bundler>, ["~> 1.1"])
|
115
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
116
|
+
s.add_dependency(%q<pry>, [">= 0"])
|
117
|
+
s.add_dependency(%q<simplecov>, [">= 0"])
|
118
|
+
s.add_dependency(%q<rcov>, [">= 0"])
|
119
|
+
s.add_dependency(%q<minitest>, [">= 0"])
|
120
|
+
s.add_dependency(%q<test-unit>, [">= 0"])
|
121
|
+
s.add_dependency(%q<webmock>, [">= 0"])
|
122
|
+
s.add_dependency(%q<mocha>, [">= 0"])
|
123
|
+
s.add_dependency(%q<turn>, [">= 0"])
|
124
|
+
s.add_dependency(%q<test_guard>, [">= 0"])
|
125
|
+
s.add_dependency(%q<rb-inotify>, [">= 0"])
|
126
|
+
s.add_dependency(%q<rb-fsevent>, [">= 0"])
|
127
|
+
s.add_dependency(%q<rb-fchange>, [">= 0"])
|
128
|
+
s.add_dependency(%q<json>, [">= 0"])
|
129
|
+
s.add_dependency(%q<oj>, [">= 0"])
|
130
|
+
s.add_dependency(%q<httpclient>, [">= 0"])
|
131
|
+
s.add_dependency(%q<curb>, [">= 0"])
|
132
|
+
s.add_dependency(%q<jruby-openssl>, [">= 0"])
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
data/lib/bixby-common.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bixby_common"
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module Bixby
|
3
|
+
|
4
|
+
# Wraps a JSON Request
|
5
|
+
#
|
6
|
+
# @attr [String] operation Name of operation
|
7
|
+
# @attr [Array] params Array of paramters; must be valid JSON types
|
8
|
+
class JsonRequest
|
9
|
+
|
10
|
+
include Jsonify
|
11
|
+
include HttpClient
|
12
|
+
|
13
|
+
attr_accessor :operation, :params
|
14
|
+
|
15
|
+
# Create a new JsonRequest
|
16
|
+
#
|
17
|
+
# @param [String] operation Name of operation
|
18
|
+
# @param [Array] params Array of parameters; must ve valid JSON types
|
19
|
+
def initialize(operation, params)
|
20
|
+
@operation = operation
|
21
|
+
@params = params
|
22
|
+
end
|
23
|
+
|
24
|
+
# Convert object to String, useful for debugging
|
25
|
+
#
|
26
|
+
# @return [String]
|
27
|
+
def to_s # :nocov:
|
28
|
+
s = []
|
29
|
+
s << "JsonRequest:#{self.object_id}"
|
30
|
+
s << " operation: #{self.operation}"
|
31
|
+
s << " params: " + MultiJson.dump(self.params)
|
32
|
+
s.join("\n")
|
33
|
+
end # :nocov:
|
34
|
+
|
35
|
+
end # JsonRequest
|
36
|
+
end # Bixby
|
@@ -0,0 +1,83 @@
|
|
1
|
+
|
2
|
+
module Bixby
|
3
|
+
|
4
|
+
# Wraps a JSON Response
|
5
|
+
#
|
6
|
+
# @attr [String] status Status of operaiton ("success" or "fail")
|
7
|
+
# @attr [String] message Response message
|
8
|
+
# @attr [Hash] data Response data as key/value pairs
|
9
|
+
# @attr [FixNum] code Response code
|
10
|
+
class JsonResponse
|
11
|
+
|
12
|
+
include Jsonify
|
13
|
+
|
14
|
+
attr_accessor :status, :message, :data, :code
|
15
|
+
|
16
|
+
SUCCESS = "success"
|
17
|
+
FAIL = "fail"
|
18
|
+
|
19
|
+
# Create a new JsonResponse
|
20
|
+
#
|
21
|
+
# @param [String] status Status of operaiton ("success" or "fail")
|
22
|
+
# @param [String] message Response message
|
23
|
+
# @param [Hash] data Response data as key/value pairs
|
24
|
+
# @param [FixNum] code Response code
|
25
|
+
def initialize(status = nil, message = nil, data = nil, code = nil)
|
26
|
+
@status = status
|
27
|
+
@message = message
|
28
|
+
@data = data
|
29
|
+
@code = code
|
30
|
+
end
|
31
|
+
|
32
|
+
# Was operation successful?
|
33
|
+
#
|
34
|
+
# @return [Boolean] True if @status == "success"
|
35
|
+
def success?
|
36
|
+
@status && @status == SUCCESS
|
37
|
+
end
|
38
|
+
|
39
|
+
# Was operation unsuccessful?
|
40
|
+
#
|
41
|
+
# @return [Boolean] True if @status != "success"
|
42
|
+
def fail?
|
43
|
+
@status && @status == FAIL
|
44
|
+
end
|
45
|
+
alias_method :error?, :fail?
|
46
|
+
|
47
|
+
# Create a JsonResponse representing an invalid request
|
48
|
+
#
|
49
|
+
# @param [String] msg Optional message (default: "invalid request")
|
50
|
+
def self.invalid_request(msg = nil) # :nocov:
|
51
|
+
new("fail", (msg || "invalid request"), nil, 400)
|
52
|
+
end # :nocov:
|
53
|
+
|
54
|
+
# Create a JsonResponse indicating "bundle not found"
|
55
|
+
#
|
56
|
+
# @param [String] bundle Name of bundle
|
57
|
+
def self.bundle_not_found(bundle) # :nocov:
|
58
|
+
new("fail", "bundle not found: #{bundle}", nil, 404)
|
59
|
+
end # :nocov:
|
60
|
+
|
61
|
+
# Create a JsonResponse indicating "command not found"
|
62
|
+
#
|
63
|
+
# @param [String] command Name of command
|
64
|
+
def self.command_not_found(command) # :nocov:
|
65
|
+
new("fail", "command not found: #{command}", nil, 404)
|
66
|
+
end # :nocov:
|
67
|
+
|
68
|
+
# Convert object to String, useful for debugging
|
69
|
+
#
|
70
|
+
# @return [String]
|
71
|
+
def to_s # :nocov:
|
72
|
+
s = []
|
73
|
+
s << "JsonResponse:#{self.object_id}"
|
74
|
+
s << " status: #{self.status}"
|
75
|
+
s << " code: #{self.code}"
|
76
|
+
s << " message: #{self.message}"
|
77
|
+
s << " data: " + MultiJson.dump(self.data)
|
78
|
+
s.join("\n")
|
79
|
+
end # :nocov:
|
80
|
+
|
81
|
+
end # JsonResponse
|
82
|
+
|
83
|
+
end # Bixby
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
module Bixby
|
3
|
+
class << self
|
4
|
+
attr_accessor :manager_uri
|
5
|
+
|
6
|
+
def repo_path
|
7
|
+
path("repo")
|
8
|
+
end
|
9
|
+
|
10
|
+
# Path to BIXBY_HOME
|
11
|
+
def root
|
12
|
+
ENV["BIXBY_HOME"]
|
13
|
+
end
|
14
|
+
alias_method :home, :root
|
15
|
+
|
16
|
+
# Helper for creating absolute paths inside BIXBY_HOME
|
17
|
+
def path(*args)
|
18
|
+
File.expand_path(File.join(root, *args))
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
|
2
|
+
module Bixby
|
3
|
+
class CommandResponse
|
4
|
+
|
5
|
+
include Jsonify
|
6
|
+
|
7
|
+
attr_accessor :status, :stdout, :stderr
|
8
|
+
|
9
|
+
# Create a new CommandResponse from the given from_json_response
|
10
|
+
#
|
11
|
+
# @param [JsonResponse] res
|
12
|
+
#
|
13
|
+
# @return [CommandResponse]
|
14
|
+
def self.from_json_response(res)
|
15
|
+
cr = CommandResponse.new(res.data)
|
16
|
+
if res.message then
|
17
|
+
cr.status ||= 255
|
18
|
+
cr.stderr ||= res.message
|
19
|
+
end
|
20
|
+
return cr
|
21
|
+
end
|
22
|
+
|
23
|
+
# Create a JsonResponse from this CommandResponse
|
24
|
+
#
|
25
|
+
# @return [JsonResponse]
|
26
|
+
def to_json_response
|
27
|
+
return JsonResponse.new((status == 0 ? "success" : "fail"), nil, self)
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize(params = nil)
|
31
|
+
if params.kind_of? Hash then
|
32
|
+
params.each{ |k,v| self.send("#{k}=", v) if self.respond_to? "#{k}=" }
|
33
|
+
|
34
|
+
elsif params.class.to_s == "Mixlib::ShellOut" then
|
35
|
+
@status = params.exitstatus
|
36
|
+
@stdout = params.stdout
|
37
|
+
@stderr = params.stderr
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def success?
|
42
|
+
@status.to_i == 0
|
43
|
+
end
|
44
|
+
|
45
|
+
def fail?
|
46
|
+
not success?
|
47
|
+
end
|
48
|
+
alias_method :error?, :fail?
|
49
|
+
|
50
|
+
def raise!
|
51
|
+
if fail? then
|
52
|
+
msg = stdout || ""
|
53
|
+
msg += "\n" if !(stdout.nil? or stdout.empty?)
|
54
|
+
msg += stderr || ""
|
55
|
+
raise CommandException.new(msg, msg)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def decode # :nocov:
|
60
|
+
MultiJson.load(@stdout)
|
61
|
+
end # :nocov:
|
62
|
+
|
63
|
+
def decode_stderr # :nocov:
|
64
|
+
MultiJson.load(@stderr)
|
65
|
+
end # :nocov:
|
66
|
+
|
67
|
+
# Convert object to String, useful for debugging
|
68
|
+
#
|
69
|
+
# @return [String]
|
70
|
+
def to_s # :nocov:
|
71
|
+
s = []
|
72
|
+
s << "CommandResponse:#{self.object_id}"
|
73
|
+
s << " status: #{self.status}"
|
74
|
+
s << " stdout: " + Debug.pretty_str(stdout)
|
75
|
+
s << " stderr: " + Debug.pretty_str(stderr)
|
76
|
+
s.join("\n")
|
77
|
+
end # :nocov:
|
78
|
+
|
79
|
+
end # CommandResponse
|
80
|
+
end # Bixby
|