tsurezure 0.0.31 → 0.0.32

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/readme.md +152 -150
  3. metadata +3 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a3f470685236ef86ac858933ef4c913a99f21a4e0d42572971518781056c68f1
4
- data.tar.gz: b6aede8db5d91dc1be40ddca3fc5011e1494084eb5e38f7df30edd8a426a316d
3
+ metadata.gz: 6cd3e3004d9cab6a40d5eb0c2e0e522ef3423f04e4ea7a8d476e2599352bf3fd
4
+ data.tar.gz: 7a7142acec9a8fb170e15eaca64e18a3a6ddcd319b63978cefb787105a2d38b4
5
5
  SHA512:
6
- metadata.gz: 73dc499f770f090d7c5ad90ebfd3cf59922c105e84bb4a65713694b0d802c79ecc1e1a36191de3dd6e90984df689319bc4d3cdfb9e89de3e87891448bf543c91
7
- data.tar.gz: 4e9f7c5e21fa6b3f9d422c21026a9bf07a1c02269fad26c1a16f36f155bb8a17f48c045a22b637fdd3ed31e6f0dde8b4b70d11449c0ff6b0fc7a0eadd8cd091f
6
+ metadata.gz: a3b55a314479b66ca54718a3f739ee574edf8cea0b02b59645c2f5f84063a59da7a15549130913f71bc8ae0ec5503fda63ee8b24d12727dd5229212b022501e8
7
+ data.tar.gz: ea4dae6aef7898ab8e6decab4720a4c825f1a124295ea8751225a85c70d513605b3a824d5403354ee504ba40b1d33157a6757c7808d479b4496d5e2062c6b5e4
data/readme.md CHANGED
@@ -1,150 +1,152 @@
1
- # tsurezure
2
-
3
- this is a simple web server framework written in ruby. mainly made as a way for me to quickly put together rest apis in my favorite language.
4
-
5
- it can be used in a very similar manner to the javascript framework express.
6
-
7
- * * *
8
-
9
- ## usage
10
-
11
- ### installing (from rubygems)
12
-
13
- just run `gem install tsurezure` and you'll have whatever the latest version is that I've put up.
14
-
15
- ### installing (from source):
16
-
17
- requires:
18
-
19
- - ruby
20
- - nodejs + nodemon (**only** for hot reloading server in development mode, not necessarily required)
21
-
22
- after cloning this repo, from the root project directory, just run `rake start` to start in production mode, or `rake dev` to run in development mode, which adds hot reloading with nodemon. gem dependencies will install automatically.
23
-
24
- to build the gem: run `gem build tsurezure.gemspec`. then, install using `gem install tsurezure-version-number`. `version-number` is whatever version is installed based on the `.gemspec` file.
25
-
26
- ### commands
27
-
28
- - `rake install` will install dependencies
29
- - `rake check_deps` will install dependencies if not installed
30
- - `rake start` will run the server in production mode
31
- - `rake dev` will run the server in development mode
32
- - `rake dev_silent` will run the server in development mode with no logs
33
- - `rake build` will build a `.gem` file based on `tsurezure.gemspec`
34
-
35
- ### actually using tsurezure:
36
-
37
- as for how to use tsurezure, here's a simple script to get started:
38
-
39
- ```ruby
40
- require 'tsurezure'
41
-
42
- # create an instance of tsurezure
43
- server = Tsurezure.new(8888)
44
-
45
- # url: http://localhost:8888/user/1
46
-
47
- # create an endpoint
48
- server.register 'get', '/user/:id', lambda { |req|
49
- url_vars = req[:vars] # { "id" => "1" }
50
- params = req[:params] # {}
51
-
52
- # create a respsonse for the endpoint
53
- {
54
- status: 200,
55
- message: {
56
- message: "hello user ##{url_vars['id']}!"
57
- }.to_json
58
- }
59
- }, content_type: 'application/json' # options hash
60
-
61
- # throw in some middleware
62
- server.add_middleware '/user/:id', lambda { |req|
63
- url_vars = req[:vars]
64
-
65
- # show a different response based on the request itself.
66
- # if you return from middleware, the return value will
67
- # be sent as the final response.
68
- if req[:vars]['id'] == '1'
69
- return {
70
- status: 200, message: {
71
- message: "hey user #1! you're the first one here!"
72
- }.to_json
73
- }
74
-
75
- end
76
- }, content_type: 'application/json'
77
-
78
- #listen for connections
79
- server.listen
80
- ```
81
-
82
- after you run this file, open up your browser or whatever and go to `http://localhost:8888/user/1`. you should see a json response that looks like this:
83
-
84
- ```json
85
- {
86
- "message": "hey user #1! you're the first one here!"
87
- }
88
- ```
89
-
90
- the `listen` method can be called with no arguments to just start the server. you can also pass in a lambda or proc that will run when the server has started. the only argument that will be passed to that proc is a hash called `server_opts`. it contains some information about the current configuration:
91
-
92
- ```ruby
93
- {
94
- port, # port that tsurezure is running on
95
- endpoints, # endpoints object containing the endpoints you've added
96
- middleware # middleware object containing the middleware you've added
97
- }
98
- ```
99
-
100
- simple example of usage:
101
-
102
- ```ruby
103
- server.listen lambda { |opts|
104
- puts "listening on port #{opts[:port]}!"
105
- }
106
- ```
107
-
108
- the registration function for creating endpoints is very simple:
109
-
110
- ```ruby
111
- register http_method, path, callback, options
112
- ```
113
-
114
- `http_method` is the method to access the endpoint with. `path` is just the url.
115
-
116
- `path` can be a path that contains variables (such as `/user/:id`). see the example above to see how it works.
117
-
118
- `callback` is a lambda that contains the logic used to send a response. it will recieve one argument: the request that was sent to that endpoint. whatever is returned from the proc will be sent as the response from that endpoint.
119
-
120
- `options` is a hash containing various options to somehow modify the response. valid options:
121
-
122
- - `content_type (default: text/plain)` - determines the mime type of the response
123
- - `location` - if a location header is required (301, etc), this is used to provide it.
124
- - `method` - if an allow header is required (405), this is used to provide it.
125
-
126
- for middleware, it's much the same:
127
-
128
- ```ruby
129
- add_middleware path, callback, options
130
- ```
131
-
132
- `path` can be a path that contains variables. used in the same way as the `path` for endpoints.
133
-
134
- `callback` is a lambda that you can use to intercept and pre-process responses. if you return from a callback in middleware, then that return value will be sent as the final response.
135
-
136
- `options` for middleware are the same as the `options` for endpoints.
137
-
138
- * * *
139
-
140
- ## todo
141
-
142
- - [ ] make it so registered uris can only be accessed with the specified method, and everything else returns a 405 (maybe make this an option??)
143
-
144
- - [ ] give the user an option to add middleware specifically for catching errors
145
-
146
- ## misc
147
-
148
- disclaimer: I don't know ruby, and this is my first time using it to make something.
149
-
150
- the name comes from yukueshirezutsurezure, one of my favorite bands. it's pronounced 'tsɯ-ɾe-dzɯ-ɾe.'
1
+ # tsurezure
2
+
3
+ this is a simple web server framework written in ruby. mainly made as a way for me to quickly put together rest apis in my favorite language.
4
+
5
+ it can be used in a very similar manner to the javascript framework express.
6
+
7
+ * * *
8
+
9
+ ## usage
10
+
11
+ ### installing (from rubygems)
12
+
13
+ just run `gem install tsurezure` and you'll have whatever the latest version is that I've put up.
14
+
15
+ ### installing (from source):
16
+
17
+ requires:
18
+
19
+ - ruby
20
+ - nodejs + nodemon (**only** for hot reloading server in development mode, not necessarily required)
21
+
22
+ after cloning this repo, from the root project directory, just run `rake start` to start in production mode, or `rake dev` to run in development mode, which adds hot reloading with nodemon. gem dependencies will install automatically.
23
+
24
+ to build the gem: run `gem build tsurezure.gemspec`. then, install using `gem install tsurezure-version-number`. `version-number` is whatever version is installed based on the `.gemspec` file.
25
+
26
+ ### commands
27
+
28
+ - `rake install` will install dependencies
29
+ - `rake check_deps` will install dependencies if not installed
30
+ - `rake start` will run the server in production mode
31
+ - `rake dev` will run the server in development mode
32
+ - `rake dev_silent` will run the server in development mode with no logs
33
+ - `rake build` will build a `.gem` file based on `tsurezure.gemspec`
34
+
35
+ ### actually using tsurezure:
36
+
37
+ as for how to use tsurezure, here's a simple script to get started:
38
+
39
+ ```ruby
40
+ require 'tsurezure'
41
+
42
+ # create an instance of tsurezure
43
+ server = Tsurezure.new 8888
44
+
45
+ # url: http://localhost:8888
46
+
47
+ # create an endpoint
48
+ server.register 'get', '/user/:id', lambda { |req|
49
+ url_vars = req[:vars] # { "id" => "1" }
50
+ params = req[:params] # {}
51
+
52
+ # create a respsonse for the endpoint
53
+ {
54
+ status: 200,
55
+ message: {
56
+ message: "hello user ##{url_vars['id']}!"
57
+ }.to_json
58
+ }
59
+ }, content_type: 'application/json' # options hash
60
+
61
+ # throw in some middleware
62
+ server.add_middleware '/user/:id', lambda { |req|
63
+ url_vars = req[:vars]
64
+
65
+ # show a different response based on the request itself.
66
+ # if you return from middleware, the return value will
67
+ # be sent as the final response.
68
+ if req[:vars]['id'] == '1'
69
+ return {
70
+ status: 200, message: {
71
+ message: "hey user #1! you're the first one here!"
72
+ }.to_json
73
+ }
74
+
75
+ end
76
+ }, content_type: 'application/json'
77
+
78
+ #listen for connections
79
+ server.listen
80
+ ```
81
+
82
+ after you run this file, open up your browser or whatever and go to `http://localhost:8888/user/1`. you should see a json response that looks like this:
83
+
84
+ ```json
85
+ {
86
+ "message": "hey user #1! you're the first one here!"
87
+ }
88
+ ```
89
+
90
+ the `listen` method can be called with no arguments to just start the server. you can also pass in a lambda or proc that will run when the server has started. the only argument that will be passed to that proc is a hash called `server_opts`. it contains some information about the current configuration:
91
+
92
+ ```ruby
93
+ {
94
+ port, # port that tsurezure is running on
95
+ endpoints, # endpoints object containing the endpoints you've added
96
+ middleware # middleware object containing the middleware you've added
97
+ }
98
+ ```
99
+
100
+ simple example of usage:
101
+
102
+ ```ruby
103
+ server.listen lambda { |opts|
104
+ puts "listening on port #{opts[:port]}!"
105
+ }
106
+ ```
107
+
108
+ the registration function for creating endpoints is very simple:
109
+
110
+ ```ruby
111
+ register http_method, path, callback, options
112
+ ```
113
+
114
+ `http_method` is the method to access the endpoint with. `path` is just the url.
115
+
116
+ `path` can be a path that contains variables (such as `/user/:id`). see the example above to see how it works.
117
+
118
+ `callback` is a lambda that contains the logic used to send a response. it will recieve one argument: the request that was sent to that endpoint. whatever is returned from the proc will be sent as the response from that endpoint.
119
+
120
+ `options` is a hash containing various options to somehow modify the response. valid options:
121
+
122
+ - `content_type (default: text/plain)` - determines the mime type of the response
123
+ - `location` - if a location header is required (301, etc), this is used to provide it.
124
+ - `method` - if an allow header is required (405), this is used to provide it.
125
+
126
+ for middleware, it's much the same:
127
+
128
+ ```ruby
129
+ add_middleware path, callback, options
130
+ ```
131
+
132
+ `path` can be a path that contains variables. used in the same way as the `path` for endpoints.
133
+
134
+ `callback` is a lambda that you can use to intercept and pre-process responses. if you return from a callback in middleware, then that return value will be sent as the final response.
135
+
136
+ `options` for middleware are the same as the `options` for endpoints.
137
+
138
+ **anything** returned from a middleware will be interpreted as you trying to send a modified response. and of course, ruby will interpret the last reached statement in a method as an implicit return. to avoid this, if you want to have a middleware that doesn't necessarily send a response, just use a `return` at the end of your method to return `nil`.
139
+
140
+ * * *
141
+
142
+ ## todo
143
+
144
+ - [ ] make it so registered uris can only be accessed with the specified method, and everything else returns a 405 (maybe make this an option??)
145
+
146
+ - [ ] give the user an option to add middleware specifically for catching errors
147
+
148
+ ## misc
149
+
150
+ disclaimer: I don't know ruby, and this is my first time using it to make something.
151
+
152
+ the name comes from yukueshirezutsurezure, one of my favorite bands. it's pronounced 'tsɯ-ɾe-dzɯ-ɾe.'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tsurezure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.31
4
+ version: 0.0.32
5
5
  platform: ruby
6
6
  authors:
7
7
  - jpegzilla
@@ -14,22 +14,16 @@ dependencies:
14
14
  name: json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.8'
20
17
  - - ">="
21
18
  - !ruby/object:Gem::Version
22
- version: 1.8.3
19
+ version: 2.3.0
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '1.8'
30
24
  - - ">="
31
25
  - !ruby/object:Gem::Version
32
- version: 1.8.3
26
+ version: 2.3.0
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: pry
35
29
  requirement: !ruby/object:Gem::Requirement