patchbay 0.0.1.pre3 → 0.0.1.pre4

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 (2) hide show
  1. data/lib/patchbay.rb +26 -14
  2. metadata +27 -59
@@ -1,9 +1,22 @@
1
1
  require 'rack/mime'
2
2
  require 'rack/handler'
3
3
 
4
- class Patchbay
5
- class Route < Struct.new(:handler, :url_parts, :verb)
4
+ module PatchbayHelpers
5
+ def incoming_json
6
+ unless params[:incoming_json]
7
+ inp = environment['rack.input']
8
+ inp.rewind
9
+ params[:incoming_json] = JSON.parse inp.read
10
+ end
11
+
12
+ params[:incoming_json]
6
13
  end
14
+ end
15
+
16
+ # The main Patchbay class, from which application classes derive.
17
+ class Patchbay
18
+
19
+ include PatchbayHelpers
7
20
 
8
21
  NoRoute_Message = <<EOT
9
22
  <html><body>
@@ -29,23 +42,20 @@ private
29
42
  # Checks if the `path_to_test` falls within the `root_path`.
30
43
  # This can be used to test for directory-traversal attacks.
31
44
  #
32
- # == Parameters:
33
- # path_to_test::
34
- # A path which is to be checked against the root path.
35
- #
36
- # root_path::
37
- # A path that `path_to_test` will be checked against.
38
- #
39
- # == Returns:
40
- # `true` if `path_to_test` resides within `root_path`.
41
- # `false` otherwise.
42
- #
45
+ # @param [String] path_to_test A path which is to be checked against the root path.
46
+ # @param [String] root_path A path that `path_to_test` will be checked against.
47
+ # @return [Boolean] True if the `path_to_test` is within the `root_path`, false otherwise.
43
48
  def path_is_subdir_of(path_to_test, root_path)
44
49
  File.fnmatch(File.join(root_path, '**'), File.realpath(path_to_test))
45
50
  end
46
51
 
47
52
  # Parses URLs and matches them to handlers.
53
+ #
48
54
  class Router
55
+ # Wrap up data associated with a route.
56
+ class Route < Struct.new(:handler, :url_parts, :verb)
57
+ end
58
+
49
59
  def initialize
50
60
  @routes = []
51
61
  end
@@ -219,7 +229,7 @@ public
219
229
  self.class.files_dir
220
230
  end
221
231
 
222
- private
232
+ public
223
233
  # Get the Rack environment corresponding to the current request.
224
234
  #
225
235
  # == Returns:
@@ -238,6 +248,7 @@ private
238
248
  @params
239
249
  end
240
250
 
251
+ private
241
252
  # Handle requests that match no route, when we have a public files directory.
242
253
  # Sets up the response appropriately for that case.
243
254
  #
@@ -378,3 +389,4 @@ private
378
389
  end
379
390
  end
380
391
  end
392
+
metadata CHANGED
@@ -1,89 +1,57 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: patchbay
3
- version: !ruby/object:Gem::Version
4
- hash: 3457254002499246909
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre4
5
5
  prerelease: 6
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- - pre
11
- - 3
12
- version: 0.0.1.pre3
13
6
  platform: ruby
14
- authors:
7
+ authors:
15
8
  - Andrew Armenia
16
9
  autorequire:
17
10
  bindir: bin
18
11
  cert_chain: []
19
-
20
- date: 2011-09-13 00:00:00 -04:00
21
- default_executable:
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
12
+ date: 2011-09-13 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
24
15
  name: rack
25
- prerelease: false
26
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &79937490 !ruby/object:Gem::Requirement
27
17
  none: false
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- hash: 27
32
- segments:
33
- - 1
34
- - 3
35
- - 0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
36
21
  version: 1.3.0
37
22
  type: :runtime
38
- version_requirements: *id001
39
- description: |
40
- Patchbay is the web framework for non-web apps.
41
- It's designed for simplicity, minimalism, and easy integration.
42
-
23
+ prerelease: false
24
+ version_requirements: *79937490
25
+ description: ! "Patchbay is the web framework for non-web apps. \nIt's designed for
26
+ simplicity, minimalism, and easy integration.\n"
43
27
  email: andrew@asquaredlabs.com
44
28
  executables: []
45
-
46
29
  extensions: []
47
-
48
30
  extra_rdoc_files: []
49
-
50
- files:
31
+ files:
51
32
  - lib/patchbay.rb
52
- has_rdoc: true
53
33
  homepage: http://rubygems.org/gems/patchbay
54
34
  licenses: []
55
-
56
35
  post_install_message:
57
36
  rdoc_options: []
58
-
59
- require_paths:
37
+ require_paths:
60
38
  - lib
61
- required_ruby_version: !ruby/object:Gem::Requirement
39
+ required_ruby_version: !ruby/object:Gem::Requirement
62
40
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- hash: 3
67
- segments:
68
- - 0
69
- version: "0"
70
- required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
46
  none: false
72
- requirements:
73
- - - ">"
74
- - !ruby/object:Gem::Version
75
- hash: 25
76
- segments:
77
- - 1
78
- - 3
79
- - 1
47
+ requirements:
48
+ - - ! '>'
49
+ - !ruby/object:Gem::Version
80
50
  version: 1.3.1
81
51
  requirements: []
82
-
83
52
  rubyforge_project:
84
- rubygems_version: 1.5.2
53
+ rubygems_version: 1.8.6
85
54
  signing_key:
86
55
  specification_version: 3
87
56
  summary: Embed HTTP APIs in non-web apps easily
88
57
  test_files: []
89
-