stormmq-client 0.0.4
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/LICENSE +21 -0
- data/README +1 -0
- data/Rakefile +19 -0
- data/TODO +11 -0
- data/bin/stormmq-amqp-echo-test +204 -0
- data/bin/stormmq-create-system +211 -0
- data/bin/stormmq-delete-system +117 -0
- data/bin/stormmq-describe-company +106 -0
- data/bin/stormmq-describe-system +135 -0
- data/bin/stormmq-get-amqpuser-password +148 -0
- data/bin/stormmq-list-amqpusers +142 -0
- data/bin/stormmq-list-apis +86 -0
- data/bin/stormmq-list-bindings +130 -0
- data/bin/stormmq-list-clusters +101 -0
- data/bin/stormmq-list-companies +89 -0
- data/bin/stormmq-list-exchanges +131 -0
- data/bin/stormmq-list-queues +131 -0
- data/bin/stormmq-list-systems +111 -0
- data/bin/stormmq-url-signer +111 -0
- data/lib/stormmq/amqp.rb +92 -0
- data/lib/stormmq/application.rb +36 -0
- data/lib/stormmq/base64_extensions.rb +19 -0
- data/lib/stormmq/errors.rb +33 -0
- data/lib/stormmq/rest.rb +160 -0
- data/lib/stormmq/secret_keys.rb +70 -0
- data/lib/stormmq/url.rb +125 -0
- data/lib/stormmq/utils.rb +27 -0
- data/spec/stormmq/amqp_spec.rb +21 -0
- data/spec/stormmq/secret_keys_spec.rb +25 -0
- data/spec/stormmq/url_spec.rb +129 -0
- data/spec/stormmq/utils_spec.rb +13 -0
- metadata +254 -0
@@ -0,0 +1,117 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#--
|
4
|
+
# Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
5
|
+
# All rights reserved.
|
6
|
+
#
|
7
|
+
# Please refer to the LICENSE file that accompanies this source
|
8
|
+
# for terms of use and redistribution.
|
9
|
+
#++
|
10
|
+
|
11
|
+
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
|
12
|
+
|
13
|
+
require 'stormmq/application'
|
14
|
+
|
15
|
+
class StormMQ::Application::DeleteSystem < StormMQ::Application
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
synopsis "--help | <userName> | <userName> <systemName> | <userName> <systemName> <companyName>"
|
19
|
+
options :help
|
20
|
+
expected_args [1,3]
|
21
|
+
end
|
22
|
+
|
23
|
+
def main
|
24
|
+
user = argv[0]
|
25
|
+
system = argv[1] || user
|
26
|
+
company = argv[2] || user
|
27
|
+
self.rest_client(user).delete_system(company, system)
|
28
|
+
end
|
29
|
+
|
30
|
+
def man
|
31
|
+
<<-EOM
|
32
|
+
NAME
|
33
|
+
|
34
|
+
#{File.basename(__FILE__)}
|
35
|
+
|
36
|
+
PURPOSE
|
37
|
+
|
38
|
+
Deletes systems PERMANENTLY, with no chance of recovery. You can
|
39
|
+
recreate the system, of course, if you kept your settings.
|
40
|
+
You will just lose any messages in the meantime.
|
41
|
+
|
42
|
+
USAGE
|
43
|
+
|
44
|
+
#{File.basename(__FILE__)} --help
|
45
|
+
#{File.basename(__FILE__)} <userName>
|
46
|
+
#{File.basename(__FILE__)} <userName> <systemName>
|
47
|
+
#{File.basename(__FILE__)} <userName> <systemName> <companyName>
|
48
|
+
|
49
|
+
The second form assumes your companyName and systemName is the same
|
50
|
+
as your userName. This is true for ordinary users who've just
|
51
|
+
signed up.
|
52
|
+
|
53
|
+
The third form assumes your companyName is the same as your
|
54
|
+
userName. This is true for ordinary users.
|
55
|
+
|
56
|
+
PARAMETERS
|
57
|
+
|
58
|
+
<userName>
|
59
|
+
|
60
|
+
The user name you log into the site with.
|
61
|
+
|
62
|
+
<systemName>
|
63
|
+
|
64
|
+
If you're not sure if you've already created a system, use:
|
65
|
+
|
66
|
+
stormmq-list-systems <userName>
|
67
|
+
|
68
|
+
A systemName can not contain a '/' or ':'
|
69
|
+
|
70
|
+
<companyName>
|
71
|
+
|
72
|
+
For ordinary users, this is the same as your userName. If you're
|
73
|
+
not sure of your companyName, you can retrieve it with:
|
74
|
+
|
75
|
+
stormmq-list-companies <userName>
|
76
|
+
|
77
|
+
--help, -h
|
78
|
+
|
79
|
+
Displays this help page then quits.
|
80
|
+
|
81
|
+
RESULT
|
82
|
+
|
83
|
+
Outputs nothing.
|
84
|
+
|
85
|
+
REST API
|
86
|
+
|
87
|
+
Equivalent is DELETE /companies/<companyName>/<systemName>.
|
88
|
+
|
89
|
+
NOTES
|
90
|
+
|
91
|
+
To find you companyName, use:
|
92
|
+
|
93
|
+
stormmq-list-companies
|
94
|
+
|
95
|
+
To delete your default system, use:
|
96
|
+
|
97
|
+
stormmq-delete-system <userName>
|
98
|
+
|
99
|
+
To create a new system, use:
|
100
|
+
|
101
|
+
stormmq-create-system <userName> <systemName>
|
102
|
+
|
103
|
+
COPYRIGHT
|
104
|
+
|
105
|
+
Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
106
|
+
All rights reserved.
|
107
|
+
|
108
|
+
SELF TEST
|
109
|
+
|
110
|
+
#{self_test}
|
111
|
+
|
112
|
+
EOM
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
StormMQ::Application::DeleteSystem.run
|
@@ -0,0 +1,106 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#--
|
4
|
+
# Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
5
|
+
# All rights reserved.
|
6
|
+
#
|
7
|
+
# Please refer to the LICENSE file that accompanies this source
|
8
|
+
# for terms of use and redistribution.
|
9
|
+
#++
|
10
|
+
|
11
|
+
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
|
12
|
+
|
13
|
+
require 'stormmq/application'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
class StormMQ::Application::DescribeCompany < StormMQ::Application
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
synopsis "--help | <userName>"
|
20
|
+
options :help
|
21
|
+
expected_args [1,2]
|
22
|
+
end
|
23
|
+
|
24
|
+
def main
|
25
|
+
user = argv[0]
|
26
|
+
company = argv[1] || user
|
27
|
+
puts JSON.pretty_generate(self.rest_client(user).describe_company(company))
|
28
|
+
end
|
29
|
+
|
30
|
+
def man
|
31
|
+
<<-EOM
|
32
|
+
NAME
|
33
|
+
|
34
|
+
#{File.basename(__FILE__)}
|
35
|
+
|
36
|
+
PURPOSE
|
37
|
+
|
38
|
+
Describes all the details we have for your company, including every
|
39
|
+
single connection you've made to our Messaging Cloud, how much
|
40
|
+
bandwidth you've used, your current account credits and debits and
|
41
|
+
invoice contact details. Some of the details of this API are in
|
42
|
+
flux. We'd like your feedback in the forums on how to improve it!
|
43
|
+
|
44
|
+
USAGE
|
45
|
+
|
46
|
+
#{File.basename(__FILE__)} --help
|
47
|
+
#{File.basename(__FILE__)} <userName>
|
48
|
+
#{File.basename(__FILE__)} <userName> <companyName>
|
49
|
+
|
50
|
+
The second form assumes your companyName is the same as your
|
51
|
+
userName. This is true for ordinary users.
|
52
|
+
|
53
|
+
PARAMETERS
|
54
|
+
|
55
|
+
<userName>
|
56
|
+
|
57
|
+
The user name you log into the site with.
|
58
|
+
|
59
|
+
<companyName>
|
60
|
+
|
61
|
+
For ordinary users, this is the same as your userName. If you're
|
62
|
+
not sure of your companyName, you can retrieve it with:
|
63
|
+
|
64
|
+
stormmq-list-companies <userName>
|
65
|
+
|
66
|
+
--help, -h
|
67
|
+
|
68
|
+
Displays this help page then quits.
|
69
|
+
|
70
|
+
RESULT
|
71
|
+
|
72
|
+
Outputs a simple JSON list of strings to STDOUT.
|
73
|
+
|
74
|
+
REST API
|
75
|
+
|
76
|
+
Equivalent is GET /companies/<companyName>/.
|
77
|
+
|
78
|
+
NOTES
|
79
|
+
|
80
|
+
To find you companyName, use:
|
81
|
+
|
82
|
+
stormmq-list-companies
|
83
|
+
|
84
|
+
To delete your default system, use:
|
85
|
+
|
86
|
+
stormmq-delete-system <userName>
|
87
|
+
|
88
|
+
To create a new system, use:
|
89
|
+
|
90
|
+
stormmq-create-system <userName> <systemName>
|
91
|
+
|
92
|
+
COPYRIGHT
|
93
|
+
|
94
|
+
Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
95
|
+
All rights reserved.
|
96
|
+
|
97
|
+
SELF TEST
|
98
|
+
|
99
|
+
#{self_test}
|
100
|
+
|
101
|
+
EOM
|
102
|
+
end
|
103
|
+
|
104
|
+
end
|
105
|
+
|
106
|
+
StormMQ::Application::DescribeCompany.run
|
@@ -0,0 +1,135 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#--
|
4
|
+
# Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
5
|
+
# All rights reserved.
|
6
|
+
#
|
7
|
+
# Please refer to the LICENSE file that accompanies this source
|
8
|
+
# for terms of use and redistribution.
|
9
|
+
#++
|
10
|
+
|
11
|
+
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
|
12
|
+
|
13
|
+
require 'stormmq/application'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
class StormMQ::Application::DescribeSystem < StormMQ::Application
|
17
|
+
|
18
|
+
def initialize
|
19
|
+
synopsis "--help | <userName> | <userName> <systemName> | <userName> <systemName> <companyName>"
|
20
|
+
options :help
|
21
|
+
expected_args [1,3]
|
22
|
+
end
|
23
|
+
|
24
|
+
def main
|
25
|
+
user = argv[0]
|
26
|
+
system = argv[1] || user
|
27
|
+
company = argv[2] || user
|
28
|
+
puts JSON.pretty_generate(self.rest_client(user).describe_system(company, system))
|
29
|
+
end
|
30
|
+
|
31
|
+
def man
|
32
|
+
<<-EOM
|
33
|
+
NAME
|
34
|
+
|
35
|
+
#{File.basename(__FILE__)}
|
36
|
+
|
37
|
+
PURPOSE
|
38
|
+
|
39
|
+
A system is a logical view of resources in our Messaging Cloud.
|
40
|
+
Typically you'd only need one system, eg 'AccountRocks',
|
41
|
+
'InflationSwapCalculator', 'Jibbit-X', etc. A system has
|
42
|
+
environments.
|
43
|
+
|
44
|
+
A company-system-environment triplet matches an AMQP Virtual Host.
|
45
|
+
E.g., if your company is widgetcorp, your system is accountrock and
|
46
|
+
you want to use an environment of development, your AMQP virtual
|
47
|
+
host name is widgetcorp/accountrock/development.
|
48
|
+
|
49
|
+
If you've just signed up as an ordinary user, then we've already
|
50
|
+
created a system called <userName>for you (see stormmq-list-systems),
|
51
|
+
with an AMQP virtual host called /<userName>/<userName>/development,
|
52
|
+
accessible at amqp.stormmq.com.
|
53
|
+
|
54
|
+
All AMQP virtual hosts are virtually hosted on amqp.stormmq.com.
|
55
|
+
|
56
|
+
To find the passwords to log onto them with AMQP, use:
|
57
|
+
|
58
|
+
stormmq-get-amqpuser-password
|
59
|
+
|
60
|
+
USAGE
|
61
|
+
|
62
|
+
#{File.basename(__FILE__)} --help
|
63
|
+
#{File.basename(__FILE__)} <userName>
|
64
|
+
#{File.basename(__FILE__)} <userName> <systemName>
|
65
|
+
#{File.basename(__FILE__)} <userName> <systemName> <companyName>
|
66
|
+
|
67
|
+
The second form assumes your companyName and systemName is the same
|
68
|
+
as your userName. This is true for ordinary users who've just
|
69
|
+
signed up.
|
70
|
+
|
71
|
+
The third form assumes your companyName is the same as your
|
72
|
+
userName. This is true for ordinary users.
|
73
|
+
|
74
|
+
PARAMETERS
|
75
|
+
|
76
|
+
<userName>
|
77
|
+
|
78
|
+
The user name you log into the site with.
|
79
|
+
|
80
|
+
<systemName>
|
81
|
+
|
82
|
+
If you're not sure if you've already created a system, use:
|
83
|
+
|
84
|
+
stormmq-list-systems <userName>
|
85
|
+
|
86
|
+
A systemName can not contain a '/' or ':'
|
87
|
+
|
88
|
+
<companyName>
|
89
|
+
|
90
|
+
For ordinary users, this is the same as your userName. If you're
|
91
|
+
not sure of your companyName, you can retrieve it with:
|
92
|
+
|
93
|
+
stormmq-list-companies <userName>
|
94
|
+
|
95
|
+
--help, -h
|
96
|
+
|
97
|
+
Displays this help page then quits.
|
98
|
+
|
99
|
+
RESULT
|
100
|
+
|
101
|
+
Outputs a pretty-printed complex JSON list to standard out.
|
102
|
+
|
103
|
+
REST API
|
104
|
+
|
105
|
+
Equivalent is GET /companies/<companyName>/<systemName>.
|
106
|
+
|
107
|
+
NOTES
|
108
|
+
|
109
|
+
To find you companyName, use:
|
110
|
+
|
111
|
+
stormmq-list-companies
|
112
|
+
|
113
|
+
To delete your default system, use:
|
114
|
+
|
115
|
+
stormmq-delete-system <userName>
|
116
|
+
|
117
|
+
To create a new system, use:
|
118
|
+
|
119
|
+
stormmq-create-system <userName> <systemName>
|
120
|
+
|
121
|
+
COPYRIGHT
|
122
|
+
|
123
|
+
Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
124
|
+
All rights reserved.
|
125
|
+
|
126
|
+
SELF TEST
|
127
|
+
|
128
|
+
#{self_test}
|
129
|
+
|
130
|
+
EOM
|
131
|
+
end
|
132
|
+
|
133
|
+
end
|
134
|
+
|
135
|
+
StormMQ::Application::DescribeSystem.run
|
@@ -0,0 +1,148 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#--
|
4
|
+
# Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
5
|
+
# All rights reserved.
|
6
|
+
#
|
7
|
+
# Please refer to the LICENSE file that accompanies this source
|
8
|
+
# for terms of use and redistribution.
|
9
|
+
#++
|
10
|
+
|
11
|
+
$:.unshift File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib")
|
12
|
+
|
13
|
+
require 'stormmq/application'
|
14
|
+
|
15
|
+
class StormMQ::Application::GetAMQPUserPassword < StormMQ::Application
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
synopsis "--help | <userName> <systemName> <companyName> <environmentName> <amqpUserName>"
|
19
|
+
options :help
|
20
|
+
expected_args :user, :system, :company, :environment, :amqp_user
|
21
|
+
end
|
22
|
+
|
23
|
+
def main
|
24
|
+
puts self.rest_client(@user).amqp_password(@company, @system, @environment, @amqp_user)
|
25
|
+
end
|
26
|
+
|
27
|
+
def man
|
28
|
+
<<-EOM
|
29
|
+
NAME
|
30
|
+
|
31
|
+
#{File.basename(__FILE__)}
|
32
|
+
|
33
|
+
PURPOSE
|
34
|
+
|
35
|
+
Gets the password for a given AMQP user name. For a recently signed
|
36
|
+
up user, we've created you a default system with a default AMQP
|
37
|
+
user name (amqpUserName) the same as your userName. This is the
|
38
|
+
only tool you'll need initially.
|
39
|
+
|
40
|
+
USAGE
|
41
|
+
|
42
|
+
#{File.basename(__FILE__)} --help
|
43
|
+
#{File.basename(__FILE__)} <userName> <systemName> <companyName> <environmentName> <amqpUserName>
|
44
|
+
|
45
|
+
For ordinary users, your companyName is the same as your userName.
|
46
|
+
|
47
|
+
For recently signed up users, the systemName is the same as your
|
48
|
+
userName.
|
49
|
+
|
50
|
+
For recently signed up users, the environmentName is one of:
|
51
|
+
|
52
|
+
* development
|
53
|
+
* testing
|
54
|
+
* production
|
55
|
+
|
56
|
+
For recently signed up users, the amqpUserName is the same as your
|
57
|
+
userName.
|
58
|
+
|
59
|
+
PARAMETERS
|
60
|
+
|
61
|
+
<userName>
|
62
|
+
|
63
|
+
The user name you log into the site with.
|
64
|
+
|
65
|
+
<systemName>
|
66
|
+
|
67
|
+
If you're not sure if you've already created a system, use:
|
68
|
+
|
69
|
+
stormmq-list-systems <userName>
|
70
|
+
|
71
|
+
A systemName can not contain a '/' or ':'
|
72
|
+
|
73
|
+
<companyName>
|
74
|
+
|
75
|
+
For ordinary users, this is the same as your userName.
|
76
|
+
If you're not sure of your companyName, you can retrieve it with:
|
77
|
+
|
78
|
+
stormmq-list-companies <userName>
|
79
|
+
|
80
|
+
<environmentName>
|
81
|
+
|
82
|
+
One of:
|
83
|
+
|
84
|
+
* development
|
85
|
+
* testing
|
86
|
+
* production
|
87
|
+
|
88
|
+
For the default system created when you signed up, or for any
|
89
|
+
system created by stormmq-create-system <userName>
|
90
|
+
(except advanced use).
|
91
|
+
|
92
|
+
<amqpUserName>
|
93
|
+
|
94
|
+
This is your userName for the default system we created when you
|
95
|
+
signed up, or for any system created by
|
96
|
+
stormmq-create-system <userName> (except advanced use).
|
97
|
+
|
98
|
+
--help, -h
|
99
|
+
|
100
|
+
Displays this help page then quits.
|
101
|
+
|
102
|
+
RESULT
|
103
|
+
|
104
|
+
Outputs a simple JSON object of string keys (user names to use with
|
105
|
+
AMQP) to string values (AMQP passwords, to be used as is without
|
106
|
+
decoding but excluding the quotes).
|
107
|
+
|
108
|
+
If using the default system created when you signed up, then the user
|
109
|
+
name to log on to AMQP ('amqpUserName') will be the same as your
|
110
|
+
userName.
|
111
|
+
|
112
|
+
REST API
|
113
|
+
|
114
|
+
Equivalent is GET /companies/<companyName>/<systemName>/<environmentName>/users/.
|
115
|
+
|
116
|
+
NOTES
|
117
|
+
|
118
|
+
Pretty prints JSON, so not suitable for use with XHTML, etc, response
|
119
|
+
documents.
|
120
|
+
|
121
|
+
To find you companyName, use:
|
122
|
+
|
123
|
+
stormmq-list-companies
|
124
|
+
|
125
|
+
To delete your default system, use:
|
126
|
+
|
127
|
+
stormmq-delete-system <userName>
|
128
|
+
|
129
|
+
To create a new system, use:
|
130
|
+
|
131
|
+
stormmq-create-system <userName> <systemName>
|
132
|
+
|
133
|
+
COPYRIGHT
|
134
|
+
|
135
|
+
Copyright (c) 2010, Tony Byrne & StormMQ Ltd.
|
136
|
+
All rights reserved.
|
137
|
+
|
138
|
+
SELF TEST
|
139
|
+
|
140
|
+
#{self_test}
|
141
|
+
|
142
|
+
EOM
|
143
|
+
end
|
144
|
+
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
StormMQ::Application::GetAMQPUserPassword.run
|