amber-kit 0.0.3 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/amber.gemspec +1 -1
- data/lib/amber/http/request.rb +3 -1
- data/lib/amber/model.rb +3 -1
- data/lib/amber/storage.rb +11 -3
- data/lib/amber/storage/json.rb +29 -92
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4daafd7c33b3564f976ebc47625157d334790224
|
4
|
+
data.tar.gz: 28400cb07fc9ee630e8aa9fdb4dd99908f7c60c2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b58a7882fbffd206867f51843012075b729551537eca2e26db84b4785a525cb8a6b11e39d4113aeb0d6b56ecc5d0ccba275f293eded1984c0b1740d51918d9a
|
7
|
+
data.tar.gz: 29bef4bb4544de9092a0071ca294a655077d021dae68e43d48513c9844722fb060fba13c34786c401cc3de306c21c707accec67aa202ae02195c2c94527e6ebd
|
data/amber.gemspec
CHANGED
data/lib/amber/http/request.rb
CHANGED
@@ -185,7 +185,9 @@ class Amber::Http::Request < Amber::Http
|
|
185
185
|
form_items.each do |item|
|
186
186
|
item_info = item.split('=')
|
187
187
|
if item_info.length == 2
|
188
|
-
|
188
|
+
key = URI.decode item_info[0]
|
189
|
+
value = URI.decode item_info[1]
|
190
|
+
@body[key] = value
|
189
191
|
end
|
190
192
|
end
|
191
193
|
end
|
data/lib/amber/model.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
class Amber::Model
|
2
|
-
|
3
2
|
def initialize
|
4
3
|
@data = {}
|
5
4
|
@data["id"] = Amber::Data::IntegerData.new
|
@@ -18,6 +17,9 @@ class Amber::Model
|
|
18
17
|
def []=(key, value)
|
19
18
|
if value.is_a? Amber::Data
|
20
19
|
@data[key] = value
|
20
|
+
self.define_singleton_method key.to_sym do
|
21
|
+
@data[key]
|
22
|
+
end
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
data/lib/amber/storage.rb
CHANGED
@@ -1,8 +1,16 @@
|
|
1
1
|
class Amber::Storage
|
2
|
-
attr_reader :status, :data
|
2
|
+
attr_reader :status, :model, :data
|
3
3
|
|
4
|
-
def initialize
|
4
|
+
def initialize(model, driver)
|
5
5
|
@status = false
|
6
|
-
|
6
|
+
unless model.is_a? Amber::Model
|
7
|
+
raise "#{model} should be an instance of Amber::Model"
|
8
|
+
end
|
9
|
+
unless driver.include? Amber::Storage::Driver
|
10
|
+
raise "#{driver} should be implement Amber::Storage::Driver"
|
11
|
+
end
|
12
|
+
@model = model
|
13
|
+
@driver = driver
|
14
|
+
@data = []
|
7
15
|
end
|
8
16
|
end
|
data/lib/amber/storage/json.rb
CHANGED
@@ -1,116 +1,53 @@
|
|
1
1
|
class Amber::Storage::Json < Amber::Storage
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
if raw_data = self.read_file
|
9
|
-
data = self.deserialize(raw_data)
|
2
|
+
include Amber::StorageDelegate
|
3
|
+
|
4
|
+
def initialize(model, file_name)
|
5
|
+
super model, Amber::Storage::Driver::File.new(file_name)
|
6
|
+
if @driver.mount
|
7
|
+
@status = true
|
10
8
|
end
|
11
|
-
data
|
9
|
+
@data = {}
|
12
10
|
end
|
13
|
-
|
14
|
-
def
|
15
|
-
|
16
|
-
|
17
|
-
data = self.deserialize(raw_data)
|
18
|
-
end
|
19
|
-
data
|
11
|
+
|
12
|
+
def get(id)
|
13
|
+
self.refresh
|
14
|
+
@data[id.to_s]
|
20
15
|
end
|
21
16
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
file.puts self.serialize(data)
|
26
|
-
file.close
|
27
|
-
end
|
17
|
+
def post(model)
|
18
|
+
self.refresh
|
19
|
+
@data[model.id]
|
28
20
|
end
|
29
21
|
|
30
|
-
def
|
31
|
-
|
32
|
-
origin_data = self.deserialize(raw_data)
|
33
|
-
new_data = []
|
34
|
-
|
35
|
-
if data.is_a? Array
|
36
|
-
origin_data.each do |item|
|
37
|
-
new_item = item
|
38
|
-
data.each do |data_item|
|
39
|
-
if data_item["id"] == item["id"]
|
40
|
-
new_item = data_item
|
41
|
-
end
|
42
|
-
end
|
43
|
-
new_data.push(new_item)
|
44
|
-
end
|
45
|
-
else
|
46
|
-
origin_data.each do |item|
|
47
|
-
new_item = item
|
48
|
-
if data["id"] == item["id"]
|
49
|
-
new_item = data
|
50
|
-
end
|
51
|
-
new_data.push(new_item)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
self.save(new_data)
|
56
|
-
end
|
22
|
+
def patch(id, model)
|
23
|
+
|
57
24
|
end
|
58
25
|
|
59
|
-
def delete(
|
60
|
-
|
61
|
-
|
62
|
-
new_data = []
|
63
|
-
|
64
|
-
if data.is_a? Array
|
65
|
-
origin_data.each do |item|
|
66
|
-
retain = true
|
67
|
-
data.each do |data_item|
|
68
|
-
if data_item["id"] == item["id"]
|
69
|
-
retain = false
|
70
|
-
end
|
71
|
-
end
|
72
|
-
new_data.push(item) if retain
|
73
|
-
end
|
74
|
-
else
|
75
|
-
origin_data.each do |item|
|
76
|
-
retain = true
|
77
|
-
if data["id"] == item["id"]
|
78
|
-
retain = false
|
79
|
-
end
|
80
|
-
new_data.push(item) if retain
|
81
|
-
end
|
82
|
-
end
|
26
|
+
def delete(id)
|
27
|
+
|
28
|
+
end
|
83
29
|
|
84
|
-
|
30
|
+
def refresh
|
31
|
+
data = @driver.read
|
32
|
+
data = self.parse data
|
33
|
+
if data
|
34
|
+
@data = data
|
85
35
|
end
|
86
36
|
end
|
87
37
|
|
88
|
-
def
|
38
|
+
def parse(data)
|
89
39
|
begin
|
90
|
-
|
91
|
-
JSON.generate(data)
|
40
|
+
JSON.parse data
|
92
41
|
rescue Exception => e
|
93
42
|
p e
|
94
43
|
end
|
95
44
|
end
|
96
45
|
|
97
|
-
def
|
46
|
+
def generate(data)
|
98
47
|
begin
|
99
|
-
JSON.
|
48
|
+
JSON.generate data
|
100
49
|
rescue Exception => e
|
101
50
|
p e
|
102
51
|
end
|
103
52
|
end
|
104
|
-
|
105
|
-
def read_file
|
106
|
-
if File.exist? @file_path
|
107
|
-
file = File.open(@file_path)
|
108
|
-
raw_data = file.read
|
109
|
-
raw_data = "[]" if raw_data.empty?
|
110
|
-
file.close
|
111
|
-
return raw_data
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
|
116
|
-
require "json"
|
53
|
+
end
|