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.
@@ -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
@@ -0,0 +1,3 @@
1
+ require 'ruby_base/reactor.rb'
2
+ require 'ruby_base/router.rb'
3
+ require 'ruby_base/cache.rb'
@@ -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: []