rct 0.1 → 0.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/bin/rct +1 -1
- data/lib/rct.rb +1 -2
- data/lib/rct/baseutils.rb +50 -12
- data/lib/rct/constants.rb +7 -2
- data/lib/rct/rct_cli.rb +9 -8
- data/lib/rct/rct_http.rb +66 -9
- data/lib/rct/response.rb +34 -20
- data/lib/rct/state.rb +13 -11
- data/lib/rct_client.rb +18 -16
- metadata +6 -6
data/bin/rct
CHANGED
@@ -19,7 +19,7 @@
|
|
19
19
|
#
|
20
20
|
|
21
21
|
|
22
|
-
|
22
|
+
#------------------------------------------------------------------------------
|
23
23
|
# rct main
|
24
24
|
#
|
25
25
|
# Runs either a CLI invocation or a test suite depending on arguments.
|
data/lib/rct.rb
CHANGED
data/lib/rct/baseutils.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2012 Jyri J. Virkki <jyri@virkki.com>
|
2
|
+
# Copyright 2012-2013 Jyri J. Virkki <jyri@virkki.com>
|
3
3
|
#
|
4
4
|
# This file is part of rct.
|
5
5
|
#
|
@@ -18,37 +18,63 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
|
21
|
-
|
22
|
-
# Assorted utility methods.
|
21
|
+
#-----------------------------------------------------------------------------
|
22
|
+
# Assorted utility methods. TODO: cleanup
|
23
23
|
#
|
24
24
|
class RCT
|
25
25
|
|
26
|
+
@log_level = RESULT
|
26
27
|
|
27
|
-
|
28
|
-
|
28
|
+
|
29
|
+
def self.log_level
|
30
|
+
@log_level
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def self.set_log_level(level)
|
35
|
+
@log_level = RESULT if level == RESULT
|
36
|
+
@log_level = INFO if level == INFO
|
37
|
+
@log_level = DEBUG if level == DEBUG
|
38
|
+
end
|
39
|
+
|
40
|
+
|
41
|
+
def self.increase_log_level
|
42
|
+
@log_level += 1
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def self.log(level, line)
|
47
|
+
if (level <= @log_level)
|
48
|
+
puts line
|
49
|
+
end
|
29
50
|
end
|
30
51
|
|
52
|
+
|
31
53
|
def self.error(msg)
|
32
54
|
puts "error: #{msg}"
|
33
55
|
end
|
34
56
|
|
57
|
+
|
35
58
|
def self.bad_invocation(msg)
|
36
59
|
error(msg)
|
37
60
|
exit(1)
|
38
61
|
end
|
39
62
|
|
63
|
+
|
40
64
|
def self.die(msg)
|
41
65
|
error(msg)
|
42
66
|
exit(1)
|
43
67
|
end
|
44
68
|
|
69
|
+
|
45
70
|
def self.argv_get(pos)
|
46
|
-
value =
|
47
|
-
|
48
|
-
|
71
|
+
value = ARGV[pos + 1]
|
72
|
+
ARGV.delete_at(pos + 1)
|
73
|
+
ARGV.delete_at(pos)
|
49
74
|
return value
|
50
75
|
end
|
51
76
|
|
77
|
+
|
52
78
|
def self.help
|
53
79
|
|
54
80
|
# default is CLI invocation of method name
|
@@ -60,10 +86,16 @@ class RCT
|
|
60
86
|
|
61
87
|
end
|
62
88
|
|
89
|
+
|
63
90
|
def self.parse_global_options
|
64
91
|
pos = 0
|
65
|
-
|
66
|
-
|
92
|
+
|
93
|
+
if (ARGV == nil)
|
94
|
+
die("No arguments!")
|
95
|
+
end
|
96
|
+
|
97
|
+
while (pos < ARGV.length)
|
98
|
+
arg = ARGV[pos]
|
67
99
|
|
68
100
|
if (arg == '-t' || arg == '--test')
|
69
101
|
sset(RCT_MODE, RCT_MODE_TEST)
|
@@ -78,6 +110,10 @@ class RCT
|
|
78
110
|
elsif (arg == '-p' || arg == '--port')
|
79
111
|
sset(SERVER_PORT, argv_get(pos))
|
80
112
|
|
113
|
+
elsif (arg == '-v')
|
114
|
+
increase_log_level()
|
115
|
+
ARGV.delete_at(pos)
|
116
|
+
|
81
117
|
else
|
82
118
|
pos += 1
|
83
119
|
end
|
@@ -85,10 +121,11 @@ class RCT
|
|
85
121
|
end
|
86
122
|
end
|
87
123
|
|
124
|
+
|
88
125
|
def self.get_opt(info)
|
89
126
|
pos = 0
|
90
|
-
while (pos <
|
91
|
-
arg =
|
127
|
+
while (pos < ARGV.length)
|
128
|
+
arg = ARGV[pos]
|
92
129
|
if (arg == info[0] || arg == info[1])
|
93
130
|
return argv_get(pos)
|
94
131
|
else
|
@@ -97,6 +134,7 @@ class RCT
|
|
97
134
|
end
|
98
135
|
end
|
99
136
|
|
137
|
+
|
100
138
|
def self.parse_options(opts, required)
|
101
139
|
return if opts == nil
|
102
140
|
opts.each { |key, info|
|
data/lib/rct/constants.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2012 Jyri J. Virkki <jyri@virkki.com>
|
2
|
+
# Copyright 2012-2013 Jyri J. Virkki <jyri@virkki.com>
|
3
3
|
#
|
4
4
|
# This file is part of rct.
|
5
5
|
#
|
@@ -17,7 +17,7 @@
|
|
17
17
|
# along with rct. If not, see <http://www.gnu.org/licenses/>.
|
18
18
|
#
|
19
19
|
|
20
|
-
RCT_VERSION = '0.
|
20
|
+
RCT_VERSION = '0.3'
|
21
21
|
|
22
22
|
RCT_MODE = '_mode'
|
23
23
|
RCT_MODE_CLI = 'cli'
|
@@ -36,6 +36,11 @@ REQ_PARAMS = '_req_params'
|
|
36
36
|
REQ_BODY = '_req_body'
|
37
37
|
REQ_HEADERS = '_req_headers'
|
38
38
|
|
39
|
+
REQ_AUTH_TYPE = '_auth_type'
|
40
|
+
REQ_AUTH_TYPE_BASIC = 'basic'
|
41
|
+
REQ_AUTH_NAME = '_req_auth_name'
|
42
|
+
REQ_AUTH_PWD = '_req_auth_pwd'
|
43
|
+
|
39
44
|
RESULT = 1
|
40
45
|
INFO = 2
|
41
46
|
DEBUG = 3
|
data/lib/rct/rct_cli.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2012 Jyri J. Virkki <jyri@virkki.com>
|
2
|
+
# Copyright 2012-2013 Jyri J. Virkki <jyri@virkki.com>
|
3
3
|
#
|
4
4
|
# This file is part of rct.
|
5
5
|
#
|
@@ -18,17 +18,18 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
|
21
|
-
|
21
|
+
#------------------------------------------------------------------------------
|
22
22
|
# Provides access to rct client methods as a CLI.
|
23
23
|
#
|
24
|
-
# In order to be accessible via CLI, a client class must implement a
|
25
|
-
# provides info about the CLI methods and their
|
24
|
+
# In order to be accessible via CLI, a client class must implement a
|
25
|
+
# 'cli' method which provides info about the CLI methods and their
|
26
|
+
# arguments.
|
26
27
|
#
|
27
28
|
class RCTCLI
|
28
29
|
|
29
30
|
|
30
31
|
def self.rct_cli
|
31
|
-
method =
|
32
|
+
method = ARGV.shift
|
32
33
|
if (method == nil || method.empty?)
|
33
34
|
RCT.bad_invocation("no CLI class/method given!")
|
34
35
|
end
|
@@ -36,7 +37,8 @@ class RCTCLI
|
|
36
37
|
method =~ /([^\.]*)\.(.*)/
|
37
38
|
class_name = $1
|
38
39
|
method_name = $2
|
39
|
-
RCT.
|
40
|
+
RCT.log(DEBUG, "Requested [#{method}]")
|
41
|
+
RCT.log(DEBUG, "CLI class: #{class_name}, method: #{method_name}")
|
40
42
|
|
41
43
|
obj = Object::const_get(class_name).new()
|
42
44
|
begin
|
@@ -60,10 +62,9 @@ class RCTCLI
|
|
60
62
|
$HTTP.handle_request()
|
61
63
|
}
|
62
64
|
|
63
|
-
|
65
|
+
RCT.log(INFO, response)
|
64
66
|
puts response.body
|
65
67
|
end
|
66
68
|
|
67
69
|
|
68
70
|
end
|
69
|
-
|
data/lib/rct/rct_http.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2012 Jyri J. Virkki <jyri@virkki.com>
|
2
|
+
# Copyright 2012-2013 Jyri J. Virkki <jyri@virkki.com>
|
3
3
|
#
|
4
4
|
# This file is part of rct.
|
5
5
|
#
|
@@ -21,9 +21,10 @@
|
|
21
21
|
require 'httpclient'
|
22
22
|
|
23
23
|
|
24
|
-
|
25
|
-
# This class provides the HTTP connection support for rct. This serves
|
26
|
-
# of the underlying HTTP connector class so that
|
24
|
+
#------------------------------------------------------------------------------
|
25
|
+
# This class provides the HTTP connection support for rct. This serves
|
26
|
+
# to hide the details of the underlying HTTP connector class so that
|
27
|
+
# it can be changed conveniently if desired.
|
27
28
|
#
|
28
29
|
# Currently using HTTPClient:
|
29
30
|
# http://rubydoc.info/gems/httpclient/2.1.5.2/HTTPClient
|
@@ -31,7 +32,7 @@ require 'httpclient'
|
|
31
32
|
class RCTHTTP
|
32
33
|
|
33
34
|
|
34
|
-
|
35
|
+
#----------------------------------------------------------------------------
|
35
36
|
# Constructor.
|
36
37
|
#
|
37
38
|
def initialize
|
@@ -39,12 +40,14 @@ class RCTHTTP
|
|
39
40
|
end
|
40
41
|
|
41
42
|
|
42
|
-
|
43
|
+
#----------------------------------------------------------------------------
|
43
44
|
# Handle one HTTP request.
|
44
45
|
#
|
45
|
-
# Connection parameters are all obtained from the current state (see
|
46
|
+
# Connection parameters are all obtained from the current state (see
|
47
|
+
# constants.rb). Destination server is specified by type (SERVER_TYPE)
|
48
|
+
# OR by hostname+port. If both are given, type takes precedence.
|
46
49
|
#
|
47
|
-
# * SERVER_TYPE - Connect to a server of this type
|
50
|
+
# * SERVER_TYPE - Connect to a server of this type.
|
48
51
|
# * SERVER_HOSTNAME - Connect to this server.
|
49
52
|
# * SERVER_PORT - Connect to this port on server.
|
50
53
|
# * SERVER_PROTOCOL - Protocol (http/https).
|
@@ -96,8 +99,20 @@ class RCTHTTP
|
|
96
99
|
end
|
97
100
|
headers['User-agent'] = "rct/#{RCT_VERSION}"
|
98
101
|
|
99
|
-
|
102
|
+
auth = RCT.sget(REQ_AUTH_TYPE)
|
103
|
+
if (auth != nil)
|
104
|
+
if (auth == REQ_AUTH_TYPE_BASIC)
|
105
|
+
name = RCT.sget(REQ_AUTH_NAME)
|
106
|
+
pwd = RCT.sget(REQ_AUTH_PWD)
|
107
|
+
@http_client.set_auth(nil, name, pwd)
|
108
|
+
else
|
109
|
+
raise "Requested auth type '#{auth}' unknown"
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
show_request(method, url, headers, RCT.sget(REQ_BODY))
|
100
114
|
|
115
|
+
res = nil
|
101
116
|
begin
|
102
117
|
if (method == "GET")
|
103
118
|
res = @http_client.get(url, nil, headers)
|
@@ -116,15 +131,57 @@ class RCTHTTP
|
|
116
131
|
else
|
117
132
|
raise "Method #{method} not implemented yet!"
|
118
133
|
end
|
134
|
+
|
119
135
|
rescue Exception => e
|
120
136
|
response = Response.new(nil)
|
121
137
|
response.add_error(e.to_s)
|
138
|
+
show_response(response)
|
122
139
|
return response
|
123
140
|
end
|
124
141
|
|
142
|
+
show_response(res)
|
125
143
|
response = Response.new(res)
|
126
144
|
return response
|
127
145
|
end
|
128
146
|
|
129
147
|
|
148
|
+
#----------------------------------------------------------------------------
|
149
|
+
# Show verbose info about the request.
|
150
|
+
#
|
151
|
+
def show_request(method, url, headers, body)
|
152
|
+
return if (RCT.log_level < INFO)
|
153
|
+
|
154
|
+
RCT.log(INFO, "-----[ REQUEST ]---" + "-" * 60)
|
155
|
+
RCT.log(INFO, "#{method} #{url}")
|
156
|
+
headers.each { |k,v|
|
157
|
+
RCT.log(INFO, "#{k}: #{v}")
|
158
|
+
}
|
159
|
+
RCT.log(INFO, "")
|
160
|
+
|
161
|
+
if (body != nil)
|
162
|
+
RCT.log(INFO, body)
|
163
|
+
RCT.log(INFO, "")
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
|
168
|
+
#----------------------------------------------------------------------------
|
169
|
+
# Show verbose info about the response.
|
170
|
+
#
|
171
|
+
def show_response(res)
|
172
|
+
return if (RCT.log_level < INFO)
|
173
|
+
|
174
|
+
RCT.log(INFO, "-----[ RESPONSE ]--" + "-" * 60)
|
175
|
+
RCT.log(INFO, "#{res.to_s}")
|
176
|
+
|
177
|
+
headers = res.headers
|
178
|
+
if (headers != nil)
|
179
|
+
headers.each { |k,v|
|
180
|
+
RCT.log(INFO, "XH: #{k}: #{v}")
|
181
|
+
}
|
182
|
+
end
|
183
|
+
|
184
|
+
RCT.log(INFO, res.body)
|
185
|
+
end
|
186
|
+
|
130
187
|
end
|
data/lib/rct/response.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#
|
2
|
-
# Copyright 2012 Jyri J. Virkki <jyri@virkki.com>
|
2
|
+
# Copyright 2012-2013 Jyri J. Virkki <jyri@virkki.com>
|
3
3
|
#
|
4
4
|
# This file is part of rct.
|
5
5
|
#
|
@@ -18,24 +18,26 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
|
21
|
-
|
21
|
+
#------------------------------------------------------------------------------
|
22
22
|
# The Response object represents the response from one HTTP call.
|
23
|
-
# This Response class wraps the response object from the underlying
|
24
|
-
# provides assorted convenience methods.
|
23
|
+
# This Response class wraps the response object from the underlying
|
24
|
+
# HTTP client library and provides assorted convenience methods.
|
25
25
|
#
|
26
26
|
# Client class methods will receive a Response object back from yield.
|
27
27
|
# Client class methods must return this Response object.
|
28
|
-
|
29
|
-
# Currently using response from HTTPClient:
|
30
|
-
|
28
|
+
#
|
29
|
+
# Currently using response from HTTPClient:
|
30
|
+
# http://rubydoc.info/gems/httpclient/HTTP/Message
|
31
|
+
#
|
32
|
+
#
|
31
33
|
class Response
|
32
34
|
|
33
35
|
|
34
|
-
|
36
|
+
#----------------------------------------------------------------------------
|
35
37
|
# Constructor...
|
36
38
|
#
|
37
|
-
# The 'res' argument must never be nil for successful responses. It
|
38
|
-
# represents an error response.
|
39
|
+
# The 'res' argument must never be nil for successful responses. It
|
40
|
+
# may be nil if this represents an error response.
|
39
41
|
#
|
40
42
|
def initialize(res)
|
41
43
|
@res = res
|
@@ -43,9 +45,10 @@ class Response
|
|
43
45
|
end
|
44
46
|
|
45
47
|
|
46
|
-
|
48
|
+
#----------------------------------------------------------------------------
|
47
49
|
# Flag this reponse as an error and add an error message string.
|
48
|
-
# This method may be called multiple times, the error messages are
|
50
|
+
# This method may be called multiple times, the error messages are
|
51
|
+
# appended to each other.
|
49
52
|
#
|
50
53
|
def add_error(msg)
|
51
54
|
if (@fail_msg == nil)
|
@@ -56,8 +59,9 @@ class Response
|
|
56
59
|
end
|
57
60
|
|
58
61
|
|
59
|
-
|
60
|
-
# Returns true unless this response has been flagged as an error via
|
62
|
+
#----------------------------------------------------------------------------
|
63
|
+
# Returns true unless this response has been flagged as an error via
|
64
|
+
# add_error() method.
|
61
65
|
#
|
62
66
|
def ok
|
63
67
|
return true if @fail_msg == nil
|
@@ -65,7 +69,7 @@ class Response
|
|
65
69
|
end
|
66
70
|
|
67
71
|
|
68
|
-
|
72
|
+
#----------------------------------------------------------------------------
|
69
73
|
# Return HTTP status code (or -1 if an error)
|
70
74
|
#
|
71
75
|
def status
|
@@ -74,7 +78,7 @@ class Response
|
|
74
78
|
end
|
75
79
|
|
76
80
|
|
77
|
-
|
81
|
+
#----------------------------------------------------------------------------
|
78
82
|
# Return requested HTTP header (or nil if an error)
|
79
83
|
#
|
80
84
|
def header(name)
|
@@ -83,7 +87,16 @@ class Response
|
|
83
87
|
end
|
84
88
|
|
85
89
|
|
86
|
-
|
90
|
+
#----------------------------------------------------------------------------
|
91
|
+
# Return all HTTP headers (or nil if an error)
|
92
|
+
#
|
93
|
+
def headers
|
94
|
+
return nil if @res == nil
|
95
|
+
return @res.header
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
#----------------------------------------------------------------------------
|
87
100
|
# Return HTTP response body (or nil if an error)
|
88
101
|
#
|
89
102
|
def body
|
@@ -92,9 +105,10 @@ class Response
|
|
92
105
|
end
|
93
106
|
|
94
107
|
|
95
|
-
|
96
|
-
# Return short string representation. On error, contains the error
|
97
|
-
# contains the HTTP response code and text
|
108
|
+
#----------------------------------------------------------------------------
|
109
|
+
# Return short string representation. On error, contains the error
|
110
|
+
# message(s). Otherwise, contains the HTTP response code and text
|
111
|
+
# description.
|
98
112
|
#
|
99
113
|
def to_s
|
100
114
|
return "error: #{@fail_msg}" if @res == nil
|
data/lib/rct/state.rb
CHANGED
@@ -18,20 +18,22 @@
|
|
18
18
|
#
|
19
19
|
|
20
20
|
|
21
|
-
|
21
|
+
#------------------------------------------------------------------------------
|
22
22
|
# This is the global state where mostly everything is kept in rct.
|
23
23
|
#
|
24
|
-
# There are two kinds of state, permanent and temporary. Values set in
|
25
|
-
# removed with the reset() method. Values in
|
26
|
-
#
|
24
|
+
# There are two kinds of state, permanent and temporary. Values set in
|
25
|
+
# temporary state can be removed with the reset() method. Values in
|
26
|
+
# permanent state remain available for the lifetime of this State
|
27
|
+
# object (unless individually removed with delete() method).
|
27
28
|
#
|
28
|
-
# When retrieving a value, content in the temporary state overrides
|
29
|
-
# if the key is present in both. This
|
29
|
+
# When retrieving a value, content in the temporary state overrides
|
30
|
+
# content in permanent state if the key is present in both. This
|
31
|
+
# provides a way to temporarily override a global default.
|
30
32
|
#
|
31
33
|
class State
|
32
34
|
|
33
35
|
|
34
|
-
|
36
|
+
#----------------------------------------------------------------------------
|
35
37
|
# Constructor...
|
36
38
|
#
|
37
39
|
def initialize
|
@@ -40,7 +42,7 @@ class State
|
|
40
42
|
end
|
41
43
|
|
42
44
|
|
43
|
-
|
45
|
+
#----------------------------------------------------------------------------
|
44
46
|
# Set (or change) 'key' in state to contain 'value'.
|
45
47
|
# If 'temp' is true, this key is stored in temporary state only.
|
46
48
|
#
|
@@ -53,7 +55,7 @@ class State
|
|
53
55
|
end
|
54
56
|
|
55
57
|
|
56
|
-
|
58
|
+
#----------------------------------------------------------------------------
|
57
59
|
# Get the value of 'key' (if available, or returns nil).
|
58
60
|
#
|
59
61
|
def get(key)
|
@@ -65,7 +67,7 @@ class State
|
|
65
67
|
end
|
66
68
|
|
67
69
|
|
68
|
-
|
70
|
+
#----------------------------------------------------------------------------
|
69
71
|
# Delete the given 'key' from both permanent and temporary state.
|
70
72
|
#
|
71
73
|
def delete(key)
|
@@ -74,7 +76,7 @@ class State
|
|
74
76
|
end
|
75
77
|
|
76
78
|
|
77
|
-
|
79
|
+
#----------------------------------------------------------------------------
|
78
80
|
# Reset temporary state.
|
79
81
|
# Returns the old temporary state hash object.
|
80
82
|
#
|
data/lib/rct_client.rb
CHANGED
@@ -22,17 +22,18 @@ require 'securerandom'
|
|
22
22
|
require 'json'
|
23
23
|
|
24
24
|
|
25
|
-
|
25
|
+
#------------------------------------------------------------------------------
|
26
26
|
# Base class for rct client classes.
|
27
27
|
#
|
28
28
|
class RCTClient
|
29
29
|
|
30
30
|
|
31
|
-
|
32
|
-
# Adds an additional query param "name=value" to the given 'params'.
|
31
|
+
#----------------------------------------------------------------------------
|
32
|
+
# Adds an additional query param "name=value" to the given 'params'.
|
33
|
+
# This 'params' may be nil.
|
33
34
|
#
|
34
|
-
# The new param is added only if both name and value are non-nil,
|
35
|
-
# returned unchanged.
|
35
|
+
# The new param is added only if both name and value are non-nil,
|
36
|
+
# otherwise params is returned unchanged.
|
36
37
|
#
|
37
38
|
def add_param(params, name, value)
|
38
39
|
if (name == nil || name.empty? || value == nil || value.empty?)
|
@@ -47,7 +48,7 @@ class RCTClient
|
|
47
48
|
end
|
48
49
|
|
49
50
|
|
50
|
-
|
51
|
+
#----------------------------------------------------------------------------
|
51
52
|
# Returns a random UUID.
|
52
53
|
#
|
53
54
|
def uuid
|
@@ -55,8 +56,9 @@ class RCTClient
|
|
55
56
|
end
|
56
57
|
|
57
58
|
|
58
|
-
|
59
|
-
# Return true if var contains something (that is, it is not nil and
|
59
|
+
#----------------------------------------------------------------------------
|
60
|
+
# Return true if var contains something (that is, it is not nil and
|
61
|
+
# not empty).
|
60
62
|
#
|
61
63
|
def set(var)
|
62
64
|
return false if var == nil
|
@@ -65,9 +67,9 @@ class RCTClient
|
|
65
67
|
end
|
66
68
|
|
67
69
|
|
68
|
-
|
69
|
-
# If the global state contains a non-nil/non-empty value for key
|
70
|
-
# 'hash' provided.
|
70
|
+
#----------------------------------------------------------------------------
|
71
|
+
# If the global state contains a non-nil/non-empty value for key
|
72
|
+
# 'name', add it to the 'hash' provided.
|
71
73
|
#
|
72
74
|
def add_to_hash_if_set(name, hash)
|
73
75
|
value = RCT.sget(name)
|
@@ -78,7 +80,7 @@ class RCTClient
|
|
78
80
|
end
|
79
81
|
|
80
82
|
|
81
|
-
|
83
|
+
#----------------------------------------------------------------------------
|
82
84
|
# Log a message. Level is one of RESULT, INFO, DEBUG.
|
83
85
|
#
|
84
86
|
def log(level, line)
|
@@ -86,7 +88,7 @@ class RCTClient
|
|
86
88
|
end
|
87
89
|
|
88
90
|
|
89
|
-
|
91
|
+
#----------------------------------------------------------------------------
|
90
92
|
# Set (or change) 'key' in state to contain 'value'.
|
91
93
|
# If 'temp' is true, this key is stored in temporary state only.
|
92
94
|
#
|
@@ -95,7 +97,7 @@ class RCTClient
|
|
95
97
|
end
|
96
98
|
|
97
99
|
|
98
|
-
|
100
|
+
#----------------------------------------------------------------------------
|
99
101
|
# Set (or change) 'key' in temporary state to contain 'value'.
|
100
102
|
#
|
101
103
|
def ssettmp(key, value)
|
@@ -103,7 +105,7 @@ class RCTClient
|
|
103
105
|
end
|
104
106
|
|
105
107
|
|
106
|
-
|
108
|
+
#----------------------------------------------------------------------------
|
107
109
|
# Get the value of 'key' (if available, or returns nil).
|
108
110
|
#
|
109
111
|
def sget(key)
|
@@ -111,7 +113,7 @@ class RCTClient
|
|
111
113
|
end
|
112
114
|
|
113
115
|
|
114
|
-
|
116
|
+
#----------------------------------------------------------------------------
|
115
117
|
# Delete the given 'key' from both permanent and temporary state.
|
116
118
|
#
|
117
119
|
def sdelete(key)
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: rct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: '0.
|
5
|
+
version: '0.3'
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jyri J. Virkki
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-06-11 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: wip
|
15
15
|
email: jyri@virkki.com
|
@@ -19,13 +19,13 @@ extensions: []
|
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- lib/rct/baseutils.rb
|
22
|
-
- lib/rct/constants.rb
|
23
22
|
- lib/rct/rct_cli.rb
|
24
|
-
- lib/rct/
|
25
|
-
- lib/rct/response.rb
|
23
|
+
- lib/rct/constants.rb
|
26
24
|
- lib/rct/state.rb
|
27
|
-
- lib/rct.rb
|
25
|
+
- lib/rct/response.rb
|
26
|
+
- lib/rct/rct_http.rb
|
28
27
|
- lib/rct_client.rb
|
28
|
+
- lib/rct.rb
|
29
29
|
- bin/rct
|
30
30
|
homepage: https://github.com/jvirkki/rct
|
31
31
|
licenses:
|