ki 0.2.3 → 0.2.4
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.
- data/VERSION +1 -1
- data/ki.gemspec +2 -2
- data/lib/db.rb +6 -2
- data/lib/req.rb +20 -1
- data/lib/resp.rb +18 -8
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.4
|
data/ki.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "ki"
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Cristian Mircea Messel"]
|
12
|
-
s.date = "2013-02-
|
12
|
+
s.date = "2013-02-19"
|
13
13
|
s.description = "Fuck setting up a database for your prototypes. Some call it an ORM with a RESTful interface. Some say its for prototyping."
|
14
14
|
s.email = "mess110@gmail.com"
|
15
15
|
s.executables = ["ki"]
|
data/lib/db.rb
CHANGED
@@ -48,8 +48,12 @@ module Ki
|
|
48
48
|
|
49
49
|
def config_db
|
50
50
|
config_path = File.join(Dir.pwd, 'config.yml')
|
51
|
-
|
52
|
-
|
51
|
+
if File.exists? config_path
|
52
|
+
yaml = YAML.load_file(config_path)
|
53
|
+
config yaml['database_host'], yaml['database_port'], yaml['database_name']
|
54
|
+
else
|
55
|
+
config '127.0.0.1', 27017, 'ki_default_db'
|
56
|
+
end
|
53
57
|
end
|
54
58
|
|
55
59
|
def config host, port, db_name
|
data/lib/req.rb
CHANGED
@@ -17,10 +17,29 @@ module Ki
|
|
17
17
|
|
18
18
|
def route
|
19
19
|
@klass = Util.base(path).to_class
|
20
|
-
@format = Util.format(path)
|
20
|
+
@format = content_type == 'application/json' ? :json : Util.format(path)
|
21
21
|
@code = klass || path == '/' ? 200 : 404
|
22
22
|
end
|
23
23
|
|
24
|
+
def json?
|
25
|
+
@format == :json
|
26
|
+
end
|
27
|
+
|
28
|
+
def html?
|
29
|
+
@format == :html
|
30
|
+
end
|
31
|
+
|
32
|
+
def index?
|
33
|
+
path == '/'
|
34
|
+
end
|
35
|
+
|
36
|
+
def content_type_for_result
|
37
|
+
{
|
38
|
+
:json => 'application/json',
|
39
|
+
:html => 'text/html'
|
40
|
+
}[@format]
|
41
|
+
end
|
42
|
+
|
24
43
|
private
|
25
44
|
|
26
45
|
def static_path_requested?
|
data/lib/resp.rb
CHANGED
@@ -9,22 +9,24 @@ module Ki
|
|
9
9
|
def initialize req
|
10
10
|
@req = req
|
11
11
|
headers = {
|
12
|
-
'Content-Type' =>
|
12
|
+
'Content-Type' => @req.content_type_for_result
|
13
13
|
}
|
14
14
|
|
15
|
+
# TODO think of a way to clean this up
|
15
16
|
klass = @req.klass
|
16
17
|
if klass.responds_to_formats.include? @req.format
|
17
18
|
if @req.code == 404
|
18
|
-
body = @req.
|
19
|
+
body = @req.html? ? partial('404') : { :error => 404 }
|
19
20
|
else
|
20
|
-
if @req.
|
21
|
-
body = @req.
|
21
|
+
if @req.index?
|
22
|
+
body = @req.html? ? partial('index') : { :index => 200 }
|
22
23
|
else
|
23
24
|
klass_view = Util.root_view_path(klass.to_s.downcase)
|
24
|
-
if @req.
|
25
|
+
if @req.html?
|
25
26
|
body = File.exists?(klass_view) ? partial(klass.to_s.downcase) : partial('index')
|
26
27
|
else
|
27
28
|
begin
|
29
|
+
interpret_json_params
|
28
30
|
body = klass.new(@req).to_json
|
29
31
|
rescue Exception => e
|
30
32
|
@req.code = 400
|
@@ -35,7 +37,7 @@ module Ki
|
|
35
37
|
end
|
36
38
|
else
|
37
39
|
@req.code = 406
|
38
|
-
body = @req.
|
40
|
+
body = @req.html? ? partial('406') : { :error => 'format not allowed' }.to_json
|
39
41
|
end
|
40
42
|
|
41
43
|
super [body], @req.code, headers
|
@@ -47,8 +49,16 @@ module Ki
|
|
47
49
|
Util.render_partial s, { 'env' => @req.env }
|
48
50
|
end
|
49
51
|
|
50
|
-
def
|
51
|
-
|
52
|
+
def interpret_json_params
|
53
|
+
if @req.json? && @req.body.length > 0
|
54
|
+
begin
|
55
|
+
@req.body.rewind
|
56
|
+
@req.env.update('rack.request.form_hash' => JSON.parse(@req.body.string),
|
57
|
+
'rack.request.form_input' => @req.env['rack.input'])
|
58
|
+
rescue JSON::ParserError
|
59
|
+
raise "json body invalid: #{@req.body.string}"
|
60
|
+
end
|
61
|
+
end
|
52
62
|
end
|
53
63
|
end
|
54
64
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ki
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-02-
|
12
|
+
date: 2013-02-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -343,7 +343,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
343
343
|
version: '0'
|
344
344
|
segments:
|
345
345
|
- 0
|
346
|
-
hash:
|
346
|
+
hash: 3465853450355248841
|
347
347
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
348
348
|
none: false
|
349
349
|
requirements:
|