filemaker 0.0.19 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +14 -0
  3. data/.travis.yml +1 -2
  4. data/README.md +24 -10
  5. data/filemaker.gemspec +1 -4
  6. data/lib/filemaker.rb +14 -16
  7. data/lib/filemaker/configuration.rb +6 -1
  8. data/lib/filemaker/errors.rb +1 -0
  9. data/lib/filemaker/layout.rb +1 -2
  10. data/lib/filemaker/metadata/field.rb +6 -4
  11. data/lib/filemaker/model.rb +28 -17
  12. data/lib/filemaker/model/batches.rb +12 -1
  13. data/lib/filemaker/model/builder.rb +9 -4
  14. data/lib/filemaker/model/components.rb +8 -0
  15. data/lib/filemaker/model/field.rb +35 -40
  16. data/lib/filemaker/model/fields.rb +25 -22
  17. data/lib/filemaker/model/pagination.rb +1 -0
  18. data/lib/filemaker/model/persistable.rb +8 -8
  19. data/lib/filemaker/model/selectable.rb +1 -1
  20. data/lib/filemaker/model/type.rb +31 -0
  21. data/lib/filemaker/model/types/big_decimal.rb +22 -0
  22. data/lib/filemaker/model/types/date.rb +24 -0
  23. data/lib/filemaker/model/types/email.rb +5 -23
  24. data/lib/filemaker/model/types/integer.rb +22 -0
  25. data/lib/filemaker/model/types/text.rb +19 -0
  26. data/lib/filemaker/model/types/time.rb +22 -0
  27. data/lib/filemaker/record.rb +1 -1
  28. data/lib/filemaker/server.rb +38 -36
  29. data/lib/filemaker/store/database_store.rb +1 -1
  30. data/lib/filemaker/store/layout_store.rb +1 -1
  31. data/lib/filemaker/store/script_store.rb +1 -1
  32. data/lib/filemaker/version.rb +1 -1
  33. data/spec/filemaker/layout_spec.rb +1 -1
  34. data/spec/filemaker/metadata/field_spec.rb +16 -16
  35. data/spec/filemaker/model/builder_spec.rb +5 -0
  36. data/spec/filemaker/model/criteria_spec.rb +8 -7
  37. data/spec/filemaker/model/types_spec.rb +103 -0
  38. data/spec/filemaker/model_spec.rb +4 -13
  39. data/spec/filemaker/record_spec.rb +1 -1
  40. data/spec/filemaker/server_spec.rb +7 -9
  41. data/spec/filemaker/store/database_store_spec.rb +1 -1
  42. data/spec/filemaker/store/layout_store_spec.rb +1 -1
  43. data/spec/filemaker/store/script_store_spec.rb +1 -1
  44. data/spec/spec_helper.rb +5 -0
  45. data/spec/support/models.rb +0 -1
  46. data/spec/support/xml_loader.rb +8 -20
  47. metadata +14 -48
  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.19
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-01-05 00:00:00.000000000 Z
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.5'
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.5'
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/types/attachment.rb
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.6.13
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