nodester 0.0.2 → 0.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/.gitignore CHANGED
@@ -2,3 +2,5 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ doc/*
6
+ .yardoc
data/README.md CHANGED
@@ -3,7 +3,7 @@ WARNING: First version and my first published gem - need to work on docs and spe
3
3
 
4
4
  ## Nodester
5
5
 
6
- An API wrapper for the nodester API (http://nodester.com). The initial version uses a straight approach, an ActiveResource like interface might be added if there is enough interest.
6
+ An API wrapper for the nodester API (<http://nodester.com>). The initial version uses a straight approach, an ActiveResource like interface might be added if there is enough interest.
7
7
 
8
8
  [![Build Status](http://travis-ci.org/scottyapp/nodester.png)](http://travis-ci.org/scottyapp/nodester)
9
9
 
@@ -14,13 +14,17 @@ Include this in your gemfile
14
14
  gem 'nodester'
15
15
 
16
16
  ## Use
17
+ A more detailed description can be found at <http://rubydoc.info/gems/nodester>.
17
18
 
18
- client = Nodester::Client.new("username","password")
19
- client.create_app 'myappname','server.js'
20
- ...
19
+ ###Some Sample Code
21
20
 
22
- Note: There are a couple of methods, notably the platform_create_request and platform_status methods that
23
- operate against www.nodester.com and not api.nodester.com, those do not require a userid/password. Just choose dummy/dummy or something similar.
21
+ client = Nodester::Client.new("username","password")
22
+ client.create_app 'myappname','server.js'
23
+ ...
24
+
25
+ ### Note
26
+ There are a couple of methods, notably the platform_create_request and platform_status methods that
27
+ operate against <http://nodester.com> and not <http://api.nodester.com>, those do not require a userid/password. Just choose dummy/dummy or something similar.
24
28
 
25
29
  All results are hashes, with strings (not symbols) as keys.
26
30
 
@@ -34,14 +38,25 @@ In case of an error either a ResponseError or a StandardError is raised.
34
38
 
35
39
  Thanks to
36
40
 
37
- * Aaron Russel (https://github.com/aaronrussell) whose cloudapp api helped a lot (some spec code is taken verbatim)
38
- * John Nunemaker (https://github.com/jnunemaker) for httparty and all his other contributions.
41
+ * Aaron Russel (<https://github.com/aaronrussell>) whose cloudapp api helped a lot (some spec code is taken verbatim)
42
+ * John Nunemaker (<https://github.com/jnunemaker>) for httparty and all his other contributions.
39
43
 
40
44
  ## Trivia
41
45
 
42
46
  This gem was created to the tunes of Natalia Kills and Nicki Minaj.
43
47
 
44
- ## Contributing to nodester
48
+ ## Release Notes
49
+
50
+ ### 0.0.3
51
+ * Updated docs
52
+
53
+ ### 0.0.2
54
+ * Bug fix for NPM
55
+
56
+ ### 0.0.1
57
+ * First version
58
+
59
+ ## Contributing to Nodester
45
60
 
46
61
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
47
62
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
@@ -53,6 +68,6 @@ This gem was created to the tunes of Natalia Kills and Nicki Minaj.
53
68
 
54
69
  == Copyright
55
70
 
56
- Copyright (c) 2011 Martin Wawrusch, inc. See LICENSE for
71
+ Copyright (c) 2011 Martin Wawrusch. See LICENSE for
57
72
  further details.
58
73
 
@@ -1,7 +1,11 @@
1
1
  require 'httparty'
2
2
 
3
+ # @author Martin Wawrusch
4
+ #
5
+ # An API wrapper for the http://nodester.com API
6
+ # @see Client Client documentation for examples how to use the API.
3
7
  module Nodester
4
- # An API wrapper for the nodester.com API
8
+ # The client to access the API.
5
9
  # @example Request a nodester.com coupon
6
10
  # client = Nodester::Client.new("","")
7
11
  # client.platform_coupon_request('arthur@dent.com')
@@ -24,16 +28,25 @@ module Nodester
24
28
  include HTTParty
25
29
  base_uri 'http://api.nodester.com'
26
30
 
31
+ # The uri used to access the nodester.com platform for account management
32
+ # and status purposes.
27
33
  PLATFORM_URI = 'http://nodester.com'
28
34
 
35
+ # Inititalizer for the client class.
36
+ # @param [String] u the user name of your nodester.com account.
37
+ # @param [String] p the password of your nodester.com account.
38
+ # @return [Client] a new instance of the client.
29
39
  def initialize(u, p )
30
40
  @auth = {:username => u, :password => p}
31
41
  end
32
42
 
33
-
34
- # Examines a bad response and raises an approriate exception
43
+ private
44
+ # Examines a bad response and raises an appropriate exception
35
45
  #
36
- # @param [HTTParty::Response] response
46
+ # @param [HTTParty::Response] the response as returned by the web request.
47
+ # @raise [ResponseError] raised in case of a web service related error.
48
+ # @raise [StandardError] raised in case of an error that is not web service related.
49
+ # @return [HTTParty::Response] the response as returned by the web request.
37
50
  def self.bad_response(response)
38
51
  if response.class == HTTParty::Response
39
52
  raise ResponseError, response
@@ -41,33 +54,48 @@ module Nodester
41
54
  raise StandardError, "Unkown error"
42
55
  end
43
56
 
44
- def handle_result(res)
45
- res.ok? ? res : bad_response(res)
57
+ # Examines a response and either returns the response or
58
+ # raise an exception.
59
+ # @param [HTTParty::Response] the response as returned by the web request.
60
+ # @raise [ResponseError] raised in case of a web service related error.
61
+ # @raise [StandardError] raised in case of an error that is not web service related.
62
+ # @return [HTTParty::Response] the response as returned by the web request.
63
+ def handle_result(response)
64
+ response.ok? ? response : bad_response(response)
46
65
  end
47
66
 
48
- # ------------------------------------
49
- # Nodester.com platform specific functions
50
- # ------------------------------------
51
-
52
- # Creates a coupon request against nodester.com for early access
53
- # Flow is as follows: You post this and receive a coupon per email.
54
- # Parameters:
55
- # email (required) : "x@y.com"
56
- # Returns:
57
- # status : "success - you are now in queue to receive an invite on our next batch!"
67
+ public
68
+ # Creates a coupon request against http://nodester.com for early access.
69
+ # @param (String) email the email where the coupon should be sent to.
70
+ # @return [HTTParty::Response] A response.
71
+ # @note Flow is as follows: You post this and receive a coupon per email.
72
+ # The result contains the following entries (check http://nodester.com for up to date information):
73
+ # * 'status' : "success - you are now in queue to receive an invite on our next batch!" | "failure"
58
74
  def platform_coupon_request(email)
59
75
  options={ :body => {:email => email}, :base_uri => PLATFORM_URI}
60
76
  handle_result self.class.post('/coupon', options)
61
77
  end
62
78
 
63
- # Returns the nodester.com platform status
64
- # {:status=>"up", :appshosted=>1599, :appsrunning=>988}
79
+ # Retrieves the http://nodester.com platform status
80
+ # @return [HTTParty::Response] A response
81
+ # @note The result contains the following entries (check http://nodester.com for up to date information):
82
+ # * 'status' : "up"
83
+ # * 'appshosted' : 599
84
+ # * 'appsrunning' : 988
65
85
  def platform_status()
66
86
  options = {:base_uri => PLATFORM_URI}
67
87
  handle_result self.class.get('/status', options)
68
88
  end
69
89
 
70
- # Creates a new user from the coupon given.
90
+ # Creates a new user by redeeming a coupon.
91
+ # @see Client#platform_coupon_request platform_coupon_request for details on how to obtain a coupon.
92
+ #
93
+ # @param (String) coupon the coupon received from nodester.
94
+ # @param (String) user the user name of the new user.
95
+ # @param (String) password the password of the new user.
96
+ # @param (String) email the email of the new user.
97
+ # @param (String) rsakey the rsa key of the new user.
98
+ # @return [HTTParty::Response] A response.
71
99
  def platform_create_user(coupon,user,password,email,rsakey)
72
100
  options={ :body => {:coupon => coupon,:user =>user,:password=>password,:email=>email,:rsakey=>rsakey}, :base_uri => PLATFORM_URI}
73
101
  handle_result self.class.post('/user', options)
@@ -77,13 +105,17 @@ module Nodester
77
105
  # API specific functions
78
106
  # ------------------------------------
79
107
 
80
- # Updates the current user.
108
+ # Updates the settings for the current user.
109
+ # @option opts [String] :password the password to update.
110
+ # @option opts [String] :rsakey the rsa key to update.
111
+ # @return [HTTParty::Response] A response.
81
112
  def update_user(opts={})
82
113
  options={:body => opts,:basic_auth => @auth}
83
114
  handle_result self.class.put('/user', options)
84
115
  end
85
116
 
86
117
  # Deletes the current user.
118
+ # @return [HTTParty::Response] A response.
87
119
  def platform_delete_user()
88
120
  options={:basic_auth => @auth}
89
121
  handle_result self.class.delete('/user', options)
@@ -91,76 +123,99 @@ module Nodester
91
123
 
92
124
 
93
125
 
94
- # Creates a new app
95
- # Parameters are:
96
- # appname (required). The name of the app.
97
- # start (required). The file to start, for example server.js.
98
- # Returns:
99
- # status : "success" | "failure"
100
- # message : "some text" ==> Only if failure
101
- # port : 12345
102
- # gitrepo : 'git@nodester.com:/node/git/mwawrusch/blah.git'
103
- # start : "the value of start, for example servre.js"
104
- # running : true | false
105
- # pid : "unknown" | some pid
126
+ # Creates a new app.
127
+ # @param (String) appname the name of the app.
128
+ # @param (String) start the file that contains the node.js startup code. (server.js)
129
+ # @return [HTTParty::Response] A response.
130
+ # @note The result contains the following entries (check http://nodester.com for up to date information):
131
+ # * 'status' : "success" | "failure"
132
+ # * 'message' : "some text" ==> Only if failure
133
+ # * 'port' : 12345
134
+ # * 'gitrepo' : 'git@nodester.com:/node/git/mwawrusch/blah.git'
135
+ # * 'start' : "the value of start, for example servre.js"
136
+ # * 'running' : true | false
137
+ # * 'pid' : "unknown" | some pid
106
138
  def create_app(appname,start)
107
139
  options={:body => {:appname=>appname,:start=>start}, :basic_auth => @auth}
108
140
  handle_result self.class.post('/app', options)
109
141
  end
110
142
 
111
-
143
+ # Updates properties of an app.
144
+ # @param (String) appname the name of the app.
145
+ # @option opts [String] :start the startup file that contains the node.js startup code.
146
+ # @return [HTTParty::Response] A response.
112
147
  def update_app(appname,opts = {})
113
148
  opts.merge!({:appname => appname})
114
149
 
115
150
  options={:body=> opts, :basic_auth => @auth}
116
151
  handle_result self.class.put('/app', options)
117
152
  end
118
-
153
+
154
+ # Starts or stops an app.
155
+ # @param (String) appname the name of the app.
156
+ # @param (Boolean) running true to start the app; false to stop the app.
157
+ # @return [HTTParty::Response] A response.
119
158
  def start_stop_app(appname,running = true)
120
159
 
121
160
  options={:body=> {:appname => appname, :running=>start}, :basic_auth => @auth}
122
161
  handle_result self.class.put('/app', options)
123
162
  end
124
163
 
125
-
164
+ # Deletes an app.
165
+ # @param (String) appname the name of the app.
166
+ # @return [HTTParty::Response] A response.
126
167
  def delete_app(appname)
127
168
  options={:body => {:appname => appname}, :basic_auth => @auth}
128
169
  handle_result self.class.delete('/app', options)
129
170
  end
130
171
 
172
+ # Returns the properties of an app.
173
+ # @param (String) appname the name of the app.
174
+ # @return [HTTParty::Response] A response.
131
175
  def app(appname)
132
176
  options={:body => {},:basic_auth => @auth}
133
177
  handle_result self.class.get("/app/#{appname}", options)
134
178
  end
135
179
 
136
- # Get a list of all apps.
137
- # Returns:
180
+ # Returns a list of all apps.
181
+ # @return [HTTParty::Response] A response.
138
182
  # An array containing a list of apps, if any.
139
- #
140
- # App object format:
141
- # name : testxyz1
142
- # port : 12344
143
- # gitrepo : 'git@nodester.com:/node/git/mwawrusch/blah.git'
144
- # running : false
145
- # pid : "unknown" | some pid
146
- # gitrepo : 'git@nodester.com:/node/git/mwawrusch/2914-2295037e88fed947a9b3b994171c5a9e.git", "running"=>false, "pid"=>"unknown"}
183
+ # @note The result contains the following entries (check http://nodester.com for up to date information):
184
+ # * 'name' : 'testxyz1'
185
+ # * 'port' : 12344
186
+ # * 'gitrepo' : 'git@nodester.com:/node/git/mwawrusch/blah.git'
187
+ # * 'running' : false
188
+ # * 'pid' : "unknown" | some pid
189
+ # * 'gitrepo' : 'git@nodester.com:/node/git/mwawrusch/2914-2295037e88fed947a9b3b994171c5a9e.git", "running"=>false, "pid"=>"unknown"}
147
190
  def apps()
148
191
  options={:basic_auth => @auth}
149
192
  handle_result self.class.get('/apps', options)
150
193
  end
151
194
 
152
195
 
153
-
196
+ # Creates or updates a value for a key in the app's environment.
197
+ # @param (String) appname the name of the app.
198
+ # @param (String) key the key (name) of the evironment variable.
199
+ # @param (String) value the value of the environment variable.
200
+ # @return [HTTParty::Response] A response.
154
201
  def update_env(appname,key,value)
155
202
  options={:body => {:appname => appname,:key=>key,:value=>value},:basic_auth => @auth}
156
203
  handle_result self.class.put('/env', options)
157
204
  end
158
205
 
206
+ # Deletes a key from the app's environment.
207
+ # @param (String) appname the name of the app.
208
+ # @param (String) key the key (name) of the evironment variable.
209
+ # @return [HTTParty::Response] A response.
159
210
  def delete_env(appname,key)
160
211
  options={:body => {:appname => appname,:key=>key},:basic_auth => @auth}
161
212
  handle_result self.class.delete('/env', options)
162
213
  end
163
214
 
215
+ # Returns the value of a key in the app's environment.
216
+ # @param (String) appname the name of the app.
217
+ # @param (String) key the key (name) of the evironment variable.
218
+ # @return [HTTParty::Response] A response.
164
219
  def env(appname,key)
165
220
  options={:body => {:appname => appname,:key=>key},:basic_auth => @auth}
166
221
  handle_result self.class.get('/env', options)
@@ -168,29 +223,44 @@ module Nodester
168
223
 
169
224
  # curl -X POST -u "mwawrusch:mw09543089" -d "appname=myappname&action=install&package=express" http://api.nodester.com/npm
170
225
 
226
+ # Manages the NPM package manager associated with an app.
227
+ # @param (String) appname the name of the app.
228
+ # @param (String) action the action to perform. Can be install|upgrade|uninstall. Check official documentation
229
+ # for more info.
230
+ # @param (String) package the name of the package that should be worked with.
231
+ # @return [HTTParty::Response] A response.
171
232
  def update_npm(appname,action,package)
172
233
  options={:body => {:appname => appname,:action => action,:package=>package},:basic_auth => @auth}
173
234
  handle_result self.class.post('/npm', options)
174
235
  end
175
236
 
176
-
237
+ # Creates a new domain entry for an app.
238
+ # @note Check out the http://notester.com site for up to date information how to set your
239
+ # a record to route the domain to the actual servers.
240
+ # @param (String) appname the name of the app.
241
+ # @param (String) domain the domain to be associated with the app.
242
+ # @return [HTTParty::Response] A response.
177
243
  def create_appdomain(appname,domain)
178
244
  options={:body => {:appname => appname,:domain=>domain},:basic_auth => @auth}
179
245
  handle_result self.class.post('/appdomains', options)
180
246
  end
181
247
 
248
+ # Deletes a domain entry from an app.
249
+ # @param (String) appname the name of the app.
250
+ # @param (String) domain the domain to be disassociated from the app.
251
+ # @return [HTTParty::Response] A response.
182
252
  def delete_appdomain(appname,domain)
183
253
  options={:body => {:appname => appname,:domain=>domain},:basic_auth => @auth}
184
254
  handle_result self.class.delete('/appdomains', options)
185
255
  end
186
256
 
257
+ # Returns a list of all app domains for all apps of the current user.
258
+ # @return [HTTParty::Response] A response.
187
259
  def appdomains()
188
260
  options={:basic_auth => @auth}
189
261
  handle_result self.class.get('/appdomains', options)
190
262
  end
191
-
192
-
193
- end
194
263
 
264
+ end
195
265
  end
196
266
 
@@ -1,3 +1,4 @@
1
1
  module Nodester
2
- VERSION = "0.0.2"
2
+ # The version of this gem.
3
+ VERSION = "0.0.3"
3
4
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: nodester
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Martin Wawrusch
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-28 00:00:00 -07:00
13
+ date: 2011-07-30 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency