amber-kit 0.0.3 → 0.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 +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
|