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.
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