dm-parse 0.3.1 → 0.3.2
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/dm-parse.gemspec +2 -2
- data/lib/property/parse_file.rb +11 -9
- data/spec/integration_spec.rb +14 -0
- data/spec/parse_file_spec.rb +2 -6
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
data/dm-parse.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "dm-parse"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Zhi-Qiang Lei"]
|
12
|
-
s.date = "2012-07-
|
12
|
+
s.date = "2012-07-03"
|
13
13
|
s.description = "An extension to make DataMapper working on Parse.com"
|
14
14
|
s.email = "zhiqiang.lei@gmail.com"
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/property/parse_file.rb
CHANGED
@@ -4,23 +4,25 @@ module DataMapper
|
|
4
4
|
class ParseFile < Object
|
5
5
|
|
6
6
|
def dump(value)
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
value
|
8
|
+
end
|
9
|
+
|
10
|
+
def load(value)
|
11
|
+
value
|
12
|
+
end
|
13
|
+
|
14
|
+
def typecast(value)
|
15
|
+
if value.respond_to?(:original_filename) && value.respond_to?(:read) && value.respond_to?(:content_type)
|
10
16
|
adapter = model.repository.adapter
|
11
17
|
filename = value.original_filename
|
12
18
|
content = value.read
|
13
19
|
content_type = value.content_type
|
14
|
-
|
20
|
+
adapter.upload_file(filename, content, content_type).merge("__type" => "File")
|
15
21
|
else
|
16
|
-
|
22
|
+
value
|
17
23
|
end
|
18
24
|
end
|
19
25
|
|
20
|
-
def load(value)
|
21
|
-
value
|
22
|
-
end
|
23
|
-
|
24
26
|
end
|
25
27
|
|
26
28
|
end
|
data/spec/integration_spec.rb
CHANGED
@@ -25,6 +25,20 @@ describe "resource" do
|
|
25
25
|
its(:id) { should_not be_nil }
|
26
26
|
its(:created_at) { should_not be_nil }
|
27
27
|
its(:updated_at) { should_not be_nil }
|
28
|
+
|
29
|
+
context "when resource has attachment" do
|
30
|
+
let(:resource) { Article.new attachment: attachment }
|
31
|
+
let(:attachment) { Struct.new(:original_filename, :read, :content_type).new("x.txt", content, "plain/txt") }
|
32
|
+
let(:content) { "xx" }
|
33
|
+
|
34
|
+
describe "its file content" do
|
35
|
+
subject { Net::HTTP.get URI(url) }
|
36
|
+
|
37
|
+
let(:url) { resource.attachment["url"] }
|
38
|
+
|
39
|
+
it { should eq(content) }
|
40
|
+
end
|
41
|
+
end
|
28
42
|
end
|
29
43
|
|
30
44
|
context "when resource is a child" do
|
data/spec/parse_file_spec.rb
CHANGED
@@ -5,12 +5,8 @@ describe DataMapper::Property::ParseFile do
|
|
5
5
|
|
6
6
|
let(:property) { Article.properties[:attachment] }
|
7
7
|
|
8
|
-
describe "#
|
9
|
-
subject { property.
|
10
|
-
|
11
|
-
let(:value) { { "name" => "xx.txt", "url" => "http://a.cn/xx.txt" } }
|
12
|
-
|
13
|
-
it { should eq(value.merge("__type" => "File")) }
|
8
|
+
describe "#typecast" do
|
9
|
+
subject { property.typecast value }
|
14
10
|
|
15
11
|
context "when value is nil" do
|
16
12
|
let(:value) { nil }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-parse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
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: 2012-07-
|
12
|
+
date: 2012-07-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: dm-core
|
@@ -241,7 +241,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
241
241
|
version: '0'
|
242
242
|
segments:
|
243
243
|
- 0
|
244
|
-
hash:
|
244
|
+
hash: 41573292717956535
|
245
245
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
246
246
|
none: false
|
247
247
|
requirements:
|