nodester 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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