nut 0.1.0 → 0.1.1
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.
- checksums.yaml +4 -4
- data/README.md +8 -8
- data/lib/nut/handler.rb +1 -1
- data/lib/nut/request.rb +6 -6
- data/lib/nut/response.rb +1 -1
- data/lib/nut/version.rb +1 -1
- data/lib/nut.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e12581bc9d5611c674258b52a45e5e8f72572e4f
|
4
|
+
data.tar.gz: 37567b5bf337ec199be85eb1286e62335142f5aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51bad58a0bdc8bbf5b64e7ff45419b4918b94ae2bb380a05ce2a053200111874001bd01382fc90c9b20c307e0605e42f230416ba2cd61fd5f1a52dc662eec864
|
7
|
+
data.tar.gz: ec78691eb60655637964969ccce8968ae08f25193297292c23212146e8ea20c32bb940c5b64d8d17b07ebbdce1b3749cd8179d794abf445efa73a8a8b99df4ae
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ Miniature Reactive HTTP Server
|
|
5
5
|
## Presentation
|
6
6
|
|
7
7
|
This library is an implementation of an HTTP Server using the Reactor Pattern as provided by [RxIO](https://rubygems.org/gems/rxio).
|
8
|
-
This allows easy development of fast, non-blocking
|
8
|
+
This allows easy development of fast, non-blocking web services.
|
9
9
|
|
10
10
|
## Installation
|
11
11
|
|
@@ -23,11 +23,11 @@ gem install -V nut
|
|
23
23
|
|
24
24
|
### Introduction
|
25
25
|
|
26
|
-
|
27
|
-
Relying on [RxIO](https://rubygems.org/gems/rxio), Nut is simple to use
|
26
|
+
Nut is a miniature pure-Ruby implementation of a reactive HTTP Server.
|
27
|
+
Relying on [RxIO](https://rubygems.org/gems/rxio), Nut is simple to use, fast and lightweight.
|
28
28
|
|
29
29
|
### Request Handler
|
30
|
-
Nut uses a
|
30
|
+
Nut uses a request_handler module to service client requests. This module is to be implemented by the user.
|
31
31
|
The request_handler module requires only one method: _handle_, which takes two Hashes as arguments: _request_ and _response_.
|
32
32
|
|
33
33
|
```ruby
|
@@ -44,7 +44,7 @@ n = Nut::Service.new ExampleRequestHandler
|
|
44
44
|
|
45
45
|
### The Request Hash
|
46
46
|
|
47
|
-
The _request_ argument to the *handle* method is a
|
47
|
+
The _request_ argument to the *handle* method is a Hash containing information representing a client request.
|
48
48
|
|
49
49
|
The following fields are available:
|
50
50
|
* *:peer* - RxIO Peer Information Hash such as { name: 'foobar.eresse.net', addr: '51.254.97.136', port: 42432 }
|
@@ -57,8 +57,8 @@ The following fields are available:
|
|
57
57
|
|
58
58
|
### The Response Hash
|
59
59
|
|
60
|
-
The _response_ argument to the *handle* method is a
|
61
|
-
The following
|
60
|
+
The _response_ argument to the *handle* method is a Hash that should be filled by the user to represent a response.
|
61
|
+
The following Hash keys are valid:
|
62
62
|
|
63
63
|
* *:code* - HTTP Response Code (Numeric format) (200, 404, etc...) - If unspecified, defaults to *200* (unless a redirect is requested)
|
64
64
|
* *:body* - Response Body
|
@@ -179,7 +179,7 @@ end
|
|
179
179
|
|
180
180
|
### Service Interface
|
181
181
|
|
182
|
-
The usual _run_ / _stop_ RxIO synchronous service interface is available, as well as the [Runify](https://rubygems.org/gems/runify)-ed version (_startup_ / _shutdown_).
|
182
|
+
The usual _run_ / _stop_ RxIO synchronous service interface is available, as well as the [Runify](https://rubygems.org/gems/runify)-ed version ( _startup_ / _shutdown_).
|
183
183
|
|
184
184
|
#### Running the server
|
185
185
|
```ruby
|
data/lib/nut/handler.rb
CHANGED
@@ -78,7 +78,7 @@ module Nut
|
|
78
78
|
end
|
79
79
|
|
80
80
|
# Ensure Client Request Hash
|
81
|
-
# Ensures existence of Client Request Hash inside Client Context
|
81
|
+
# Ensures existence of Client Request Hash inside Client Context.
|
82
82
|
# @param [Hash] client An RxIO Client Hash
|
83
83
|
def self.ensure_creq client
|
84
84
|
|
data/lib/nut/request.rb
CHANGED
@@ -17,7 +17,7 @@ module Nut
|
|
17
17
|
MULTIPART_FIELD_REX = /^([^=]+)=(.+)$/
|
18
18
|
|
19
19
|
# Pull Request Details
|
20
|
-
# Extracts any possible Form Data and extended Request details from a Request Hash
|
20
|
+
# Extracts any possible Form Data and extended Request details from a Request Hash.
|
21
21
|
# @param [Hash] req Request Hash
|
22
22
|
def self.extract_req_data req
|
23
23
|
|
@@ -35,7 +35,7 @@ module Nut
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Extract Multipart Form Data
|
38
|
-
# Extracts Multipart Form Data from the Request Body and merges it into _req[:params]_
|
38
|
+
# Extracts Multipart Form Data from the Request Body and merges it into _req[:params]_.
|
39
39
|
# @param [Hash] req Request Hash
|
40
40
|
def self.extract_multipart_form_data req
|
41
41
|
|
@@ -76,7 +76,7 @@ module Nut
|
|
76
76
|
end
|
77
77
|
|
78
78
|
# Extract URL-Encoded Form Data
|
79
|
-
# Extracts URL-Encoded Form Data from the Request Body and merges it into _req[:params]_
|
79
|
+
# Extracts URL-Encoded Form Data from the Request Body and merges it into _req[:params]_.
|
80
80
|
# @param [Hash] req Request Hash
|
81
81
|
def self.extract_urlencoded_form_data req
|
82
82
|
|
@@ -145,7 +145,7 @@ module Nut
|
|
145
145
|
end
|
146
146
|
|
147
147
|
# Build Request Body
|
148
|
-
# Builds Request Body according to Request Headers (Content-Length / Transfer-Encoding)
|
148
|
+
# Builds Request Body according to Request Headers (Content-Length / Transfer-Encoding).
|
149
149
|
# @param [Hash] creq Client Request Context
|
150
150
|
# @param [String] msg A line of text to be processed
|
151
151
|
def self.build_req_body creq, msg
|
@@ -224,7 +224,7 @@ module Nut
|
|
224
224
|
end
|
225
225
|
|
226
226
|
# Build without Body
|
227
|
-
# Marks Request Body as Complete if no Body should be present (no content-length & no chunked encoding)
|
227
|
+
# Marks Request Body as Complete if no Body should be present (no content-length & no chunked encoding).
|
228
228
|
# @param [Hash] creq Client Request Context
|
229
229
|
def self.build_no_body creq
|
230
230
|
|
@@ -252,7 +252,7 @@ module Nut
|
|
252
252
|
end
|
253
253
|
|
254
254
|
# Expects Body?
|
255
|
-
# Determines whether request expects a body (according to headers)
|
255
|
+
# Determines whether request expects a body (according to headers).
|
256
256
|
# @param [Hash] creq Client Request Context
|
257
257
|
# @return [Boolean]
|
258
258
|
def self.expects_body? creq
|
data/lib/nut/response.rb
CHANGED
@@ -19,7 +19,7 @@ module Nut
|
|
19
19
|
module Response
|
20
20
|
|
21
21
|
# Build Response
|
22
|
-
# Constructs a complete Response from a preliminary Response Hash (code, body)
|
22
|
+
# Constructs a complete Response from a preliminary Response Hash (code, body).
|
23
23
|
# @param [Hash] response Preliminary Response Information
|
24
24
|
def self.build_response response
|
25
25
|
|
data/lib/nut/version.rb
CHANGED
data/lib/nut.rb
CHANGED