filemaker 0.0.19 → 1.0.0
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 +5 -5
- data/.editorconfig +14 -0
- data/.travis.yml +1 -2
- data/README.md +24 -10
- data/filemaker.gemspec +1 -4
- data/lib/filemaker.rb +14 -16
- data/lib/filemaker/configuration.rb +6 -1
- data/lib/filemaker/errors.rb +1 -0
- data/lib/filemaker/layout.rb +1 -2
- data/lib/filemaker/metadata/field.rb +6 -4
- data/lib/filemaker/model.rb +28 -17
- data/lib/filemaker/model/batches.rb +12 -1
- data/lib/filemaker/model/builder.rb +9 -4
- data/lib/filemaker/model/components.rb +8 -0
- data/lib/filemaker/model/field.rb +35 -40
- data/lib/filemaker/model/fields.rb +25 -22
- data/lib/filemaker/model/pagination.rb +1 -0
- data/lib/filemaker/model/persistable.rb +8 -8
- data/lib/filemaker/model/selectable.rb +1 -1
- data/lib/filemaker/model/type.rb +31 -0
- data/lib/filemaker/model/types/big_decimal.rb +22 -0
- data/lib/filemaker/model/types/date.rb +24 -0
- data/lib/filemaker/model/types/email.rb +5 -23
- data/lib/filemaker/model/types/integer.rb +22 -0
- data/lib/filemaker/model/types/text.rb +19 -0
- data/lib/filemaker/model/types/time.rb +22 -0
- data/lib/filemaker/record.rb +1 -1
- data/lib/filemaker/server.rb +38 -36
- data/lib/filemaker/store/database_store.rb +1 -1
- data/lib/filemaker/store/layout_store.rb +1 -1
- data/lib/filemaker/store/script_store.rb +1 -1
- data/lib/filemaker/version.rb +1 -1
- data/spec/filemaker/layout_spec.rb +1 -1
- data/spec/filemaker/metadata/field_spec.rb +16 -16
- data/spec/filemaker/model/builder_spec.rb +5 -0
- data/spec/filemaker/model/criteria_spec.rb +8 -7
- data/spec/filemaker/model/types_spec.rb +103 -0
- data/spec/filemaker/model_spec.rb +4 -13
- data/spec/filemaker/record_spec.rb +1 -1
- data/spec/filemaker/server_spec.rb +7 -9
- data/spec/filemaker/store/database_store_spec.rb +1 -1
- data/spec/filemaker/store/layout_store_spec.rb +1 -1
- data/spec/filemaker/store/script_store_spec.rb +1 -1
- data/spec/spec_helper.rb +5 -0
- data/spec/support/models.rb +0 -1
- data/spec/support/xml_loader.rb +8 -20
- metadata +14 -48
- data/lib/filemaker/model/types/attachment.rb +0 -102
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filemaker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mech
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: faraday
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: typhoeus
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,34 +66,6 @@ dependencies:
|
|
80
66
|
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: mimemagic
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: mime-types
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
69
|
- !ruby/object:Gem::Dependency
|
112
70
|
name: bundler
|
113
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +100,14 @@ dependencies:
|
|
142
100
|
requirements:
|
143
101
|
- - "~>"
|
144
102
|
- !ruby/object:Gem::Version
|
145
|
-
version: '3.
|
103
|
+
version: '3.7'
|
146
104
|
type: :development
|
147
105
|
prerelease: false
|
148
106
|
version_requirements: !ruby/object:Gem::Requirement
|
149
107
|
requirements:
|
150
108
|
- - "~>"
|
151
109
|
- !ruby/object:Gem::Version
|
152
|
-
version: '3.
|
110
|
+
version: '3.7'
|
153
111
|
- !ruby/object:Gem::Dependency
|
154
112
|
name: rubocop
|
155
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,6 +143,7 @@ executables: []
|
|
185
143
|
extensions: []
|
186
144
|
extra_rdoc_files: []
|
187
145
|
files:
|
146
|
+
- ".editorconfig"
|
188
147
|
- ".gitignore"
|
189
148
|
- ".rspec"
|
190
149
|
- ".rubocop.yml"
|
@@ -231,8 +190,13 @@ files:
|
|
231
190
|
- lib/filemaker/model/relations/has_portal.rb
|
232
191
|
- lib/filemaker/model/relations/proxy.rb
|
233
192
|
- lib/filemaker/model/selectable.rb
|
234
|
-
- lib/filemaker/model/
|
193
|
+
- lib/filemaker/model/type.rb
|
194
|
+
- lib/filemaker/model/types/big_decimal.rb
|
195
|
+
- lib/filemaker/model/types/date.rb
|
235
196
|
- lib/filemaker/model/types/email.rb
|
197
|
+
- lib/filemaker/model/types/integer.rb
|
198
|
+
- lib/filemaker/model/types/text.rb
|
199
|
+
- lib/filemaker/model/types/time.rb
|
236
200
|
- lib/filemaker/railtie.rb
|
237
201
|
- lib/filemaker/record.rb
|
238
202
|
- lib/filemaker/resultset.rb
|
@@ -252,6 +216,7 @@ files:
|
|
252
216
|
- spec/filemaker/model/builder_spec.rb
|
253
217
|
- spec/filemaker/model/criteria_spec.rb
|
254
218
|
- spec/filemaker/model/relations_spec.rb
|
219
|
+
- spec/filemaker/model/types_spec.rb
|
255
220
|
- spec/filemaker/model_spec.rb
|
256
221
|
- spec/filemaker/record_spec.rb
|
257
222
|
- spec/filemaker/resultset_spec.rb
|
@@ -289,7 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
254
|
version: '0'
|
290
255
|
requirements: []
|
291
256
|
rubyforge_project:
|
292
|
-
rubygems_version: 2.
|
257
|
+
rubygems_version: 2.7.7
|
293
258
|
signing_key:
|
294
259
|
specification_version: 4
|
295
260
|
summary: A Ruby wrapper to FileMaker XML API.
|
@@ -302,6 +267,7 @@ test_files:
|
|
302
267
|
- spec/filemaker/model/builder_spec.rb
|
303
268
|
- spec/filemaker/model/criteria_spec.rb
|
304
269
|
- spec/filemaker/model/relations_spec.rb
|
270
|
+
- spec/filemaker/model/types_spec.rb
|
305
271
|
- spec/filemaker/model_spec.rb
|
306
272
|
- spec/filemaker/record_spec.rb
|
307
273
|
- spec/filemaker/resultset_spec.rb
|
@@ -1,102 +0,0 @@
|
|
1
|
-
require 'net/http'
|
2
|
-
require 'mimemagic'
|
3
|
-
|
4
|
-
module Filemaker
|
5
|
-
module Model
|
6
|
-
module Types
|
7
|
-
class Attachment
|
8
|
-
attr_reader :_body, :content_type, :extension, :klass
|
9
|
-
|
10
|
-
def initialize(value, klass)
|
11
|
-
@value = value
|
12
|
-
@klass = klass
|
13
|
-
end
|
14
|
-
|
15
|
-
def url
|
16
|
-
@value.to_s
|
17
|
-
end
|
18
|
-
|
19
|
-
def file_extension
|
20
|
-
# We need to use .path to eliminate query string
|
21
|
-
File.extname(URI.parse(url).path)
|
22
|
-
end
|
23
|
-
|
24
|
-
def filename
|
25
|
-
return if url.blank?
|
26
|
-
File.basename(URI.parse(url).path)
|
27
|
-
end
|
28
|
-
|
29
|
-
def body
|
30
|
-
return @_body if defined?(@_body)
|
31
|
-
|
32
|
-
valid_files = %w[
|
33
|
-
.pdf
|
34
|
-
.jpeg .jpg .png .gif .tif .tiff
|
35
|
-
.doc .docx .xls .xlsx .ppt .pptx .pptm
|
36
|
-
.txt
|
37
|
-
.rar .zip .webarchive
|
38
|
-
.htm .html
|
39
|
-
.java
|
40
|
-
]
|
41
|
-
|
42
|
-
@_body = download_protected_file
|
43
|
-
|
44
|
-
if !file_extension.blank? &&
|
45
|
-
valid_files.include?(file_extension.try(:downcase))
|
46
|
-
|
47
|
-
@content_type = MimeMagic.by_extension(file_extension).try(:type)
|
48
|
-
@extension = file_extension
|
49
|
-
else
|
50
|
-
mime_type = MimeMagic.by_magic(@_body)
|
51
|
-
|
52
|
-
unless mime_type.blank?
|
53
|
-
case mime_type.type.downcase
|
54
|
-
when 'application/msword'
|
55
|
-
@content_type = 'application/msword'
|
56
|
-
@extension = '.doc'
|
57
|
-
when 'application/pdf'
|
58
|
-
@content_type = 'application/pdf'
|
59
|
-
@extension = '.pdf'
|
60
|
-
when 'application/x-ole-storage'
|
61
|
-
@content_type = 'application/vnd.ms-excel'
|
62
|
-
@extension = '.xls'
|
63
|
-
when 'application/vnd.ms-excel'
|
64
|
-
@content_type = 'application/vnd.ms-excel'
|
65
|
-
@extension = '.xls'
|
66
|
-
when 'image/jpeg'
|
67
|
-
@content_type = 'image/jpeg'
|
68
|
-
@extension = '.jpg'
|
69
|
-
when 'image/png'
|
70
|
-
@content_type = 'image/png'
|
71
|
-
@extension = '.png'
|
72
|
-
when 'application/vnd.oasis.opendocument.text'
|
73
|
-
@content_type = 'application/vnd.oasis.opendocument.text'
|
74
|
-
@extension = '.odt'
|
75
|
-
else
|
76
|
-
# No choice, we have to assign it somehow
|
77
|
-
@content_type = mime_type.type
|
78
|
-
@extension = MIME::Types[@content_type].first
|
79
|
-
.try(:extensions)
|
80
|
-
.try(:first)
|
81
|
-
@extension = ".#{@extension}" if @extension
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
@_body
|
87
|
-
end
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
def download_protected_file
|
92
|
-
req = Net::HTTP::Get.new(url)
|
93
|
-
req.basic_auth(klass.server.account_name, klass.server.password)
|
94
|
-
res = Net::HTTP.new(klass.server.host, 80)
|
95
|
-
res = res.start { |http| http.request(req) }
|
96
|
-
|
97
|
-
res.body
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|