ruby_base 1.0.5
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 +7 -0
- data/lib/ruby_base.rb +3 -0
- data/lib/ruby_base/cache.rb +23 -0
- data/lib/ruby_base/reactor.rb +24 -0
- data/lib/ruby_base/router.rb +48 -0
- metadata +92 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ed602270c9efe89f7b30fe5512b54eb27ccdbf97
|
4
|
+
data.tar.gz: f567e57714ef1c3b605a3aa193d494a16eace950
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 664f5491f888020e7f1d70ec68aba2406b9f29b7ebb0ee1a2abe244874662b83753f23c842771a334ed1b8a1910d28a716ce62ba4e79a2eaf34fb0fdc256a598
|
7
|
+
data.tar.gz: 05f653c290c7ef77f9ca613c6101ae628e4e357997b82c84f81d30f459cfcd0fe30d94f581ed06b46f680bfc01de832866f91aae6b0678e4e41a5e26df80049d
|
data/lib/ruby_base.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# to save pre-processed json on memory.
|
2
|
+
module RubyBase
|
3
|
+
module Cache
|
4
|
+
@data = {}
|
5
|
+
|
6
|
+
def self.proxy(method, route, block, params)
|
7
|
+
if [:POST,:PUT,:DELETE].include?(method)
|
8
|
+
@data = {}
|
9
|
+
return Yajl::Encoder.encode(block.call(params))
|
10
|
+
else
|
11
|
+
temp = "#{route}-#{method}"
|
12
|
+
ret = @data[temp]
|
13
|
+
if ret
|
14
|
+
return ret
|
15
|
+
else
|
16
|
+
response = Yajl::Encoder.encode(block.call(params))
|
17
|
+
@data[temp] = response
|
18
|
+
return response
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'eventmachine'
|
2
|
+
require 'evma_httpserver'
|
3
|
+
|
4
|
+
module RubyBase
|
5
|
+
|
6
|
+
class Reactor < EM::Connection
|
7
|
+
include EM::HttpServer
|
8
|
+
|
9
|
+
def process_http_request
|
10
|
+
@router ||= RubyBase::Router.new
|
11
|
+
response = EM::DelegatedHttpResponse.new(self)
|
12
|
+
response.status = 200
|
13
|
+
response.content_type 'text/javascript'
|
14
|
+
response.content = @router.route(@http_request_method.to_sym, @http_request_uri, @http_post_content)
|
15
|
+
response.send_response
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.run
|
20
|
+
EventMachine.run {
|
21
|
+
EventMachine.start_server "127.0.0.1", 8081, RubyBase::Reactor
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'yajl'
|
2
|
+
|
3
|
+
module RubyBase
|
4
|
+
class Router
|
5
|
+
@@cache = true
|
6
|
+
|
7
|
+
@@data = {
|
8
|
+
GET: {},
|
9
|
+
POST: {},
|
10
|
+
PUT: {},
|
11
|
+
DELETE: {}
|
12
|
+
}
|
13
|
+
|
14
|
+
def self.get(arg,&block)
|
15
|
+
@@data[:GET][Regexp.new arg] = block
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.post(arg,&block)
|
19
|
+
@@data[:POST][Regexp.new arg] = block
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.put(arg,&block)
|
23
|
+
@@data[:PUT][Regexp.new arg] = block
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.delete(arg,&block)
|
27
|
+
@@data[:DELETE][Regexp.new arg] = block
|
28
|
+
end
|
29
|
+
|
30
|
+
def route(method,route,post_data)
|
31
|
+
params = {}
|
32
|
+
params[:post] = Yajl::Parser.parse(post_data.to_s)
|
33
|
+
@@data[method].each_key do |key|
|
34
|
+
t = key.match(route)
|
35
|
+
if t
|
36
|
+
params[:match] = t
|
37
|
+
if @@cache
|
38
|
+
p method
|
39
|
+
return RubyBase::Cache::proxy(method, route, @@data[method][key], params)
|
40
|
+
end
|
41
|
+
# non cached version
|
42
|
+
return Yajl::Encoder.encode(@@data[method][key].call(params))
|
43
|
+
end
|
44
|
+
end
|
45
|
+
return Yajl::Encoder.encode("Error, no route")
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_base
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Felipe Vieira
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: eventmachine
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.2.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.2.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: yajl-ruby
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: eventmachine_httpserver
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: |-
|
56
|
+
A fast and hackable JSON API engine based on EventMachine to be used as a backend for Angular,
|
57
|
+
ember and all sorts of things. It is REALLY fast and have a DSL like sinatra, also have an embebed cache system
|
58
|
+
email:
|
59
|
+
- felipetavres@gmail.com
|
60
|
+
executables: []
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- lib/ruby_base.rb
|
65
|
+
- lib/ruby_base/cache.rb
|
66
|
+
- lib/ruby_base/reactor.rb
|
67
|
+
- lib/ruby_base/router.rb
|
68
|
+
homepage: https://github.com/nemoNoboru/RubyBase
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata: {}
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.5.1
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: JSON API engine to be used as a backend for Angular, Ember , Etc...
|
92
|
+
test_files: []
|