trophonius 1.1.5 → 1.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b396a3a21ea6764173b3b4fed6300f00f332280132bd73986d02f77871f9f00
4
- data.tar.gz: 6d7bf9d341969a63a2321283ac7cc26c40d842137bb2a29a677bf3de81b4c9cd
3
+ metadata.gz: 5d1c4de653b4f48f81cf9ea3b8ced6ffce09cd7583d2b23b0fe17de97cfa2e9d
4
+ data.tar.gz: 0c41d739871de40caabf04ed8fd2575a39320b839fe0064b6bdc616722ef0eef
5
5
  SHA512:
6
- metadata.gz: ce349193edf1388c9404b0ef65a379b1b6187050b90dea35d81e7301a3d081de5be0cd731c068da73cf9e3bbdc399744974aa698b8d70e6e3d742c109507025a
7
- data.tar.gz: 5a1d947924e1ba3fcf0ab8ceb2db5ade50ff5eabe6a2a33ba51942eb3f5edb38d434874c0eedd7196cfc24b47568dbc1266ec3c983ad4d43f0f1028bc70d103a
6
+ metadata.gz: f232aaf25f6a72e0e8e2779eae555f4e467ff013e436d0cc18e2cd9510e523ecace64e0e93b9a93d14b121d3ef071954410e9649ee88434274a3e8a39eba7dc1
7
+ data.tar.gz: 2c90e1062b92195726377d4a7a07efb1a365a5916d8a35c90dbfddd12f8aaf49c2c84bf8c3954a34708d93a3abf920d9c3138be8acd32b3a749726fd2fcf7589
@@ -17,11 +17,13 @@ module Trophonius
17
17
  class FileError < StandardError; end # :nodoc:
18
18
  class CommandError < StandardError; end # :nodoc:
19
19
  class ConnectionError < StandardError; end # :nodoc:
20
+ class EmptyFindError < StandardError; end # :nodoc:
21
+ class ValidationError < StandardError; end # :nodoc:
20
22
 
21
23
  ##
22
24
  # Throws an error corresponding to the error number
23
25
  # :args: error_id, more_info
24
- def self.throw_error(error_id, more_info = 0)
26
+ def self.throw_error(error_id, more_info = 0, layout_info = nil)
25
27
  case error_id
26
28
  when '-1'
27
29
  raise UnknownFileMakerError.new, 'Unknown Error Ocurred'
@@ -45,252 +47,258 @@ module Trophonius
45
47
  raise RecordNotFoundError.new, 'Empty result'
46
48
  when '9'
47
49
  raise UnauthenticatedError.new, 'User has insufficient privileges'
48
- # when "10"
49
- # when "11"
50
- # when "12"
51
- # when "13"
52
- # when "14"
53
- # when "15"
54
- # when "16"
55
- # when "17"
56
- # when "16"
57
- # when "18"
58
- # when "19"
59
- # when "09"
60
- # when "20"
61
- # when "21"
62
- # when "100"
50
+ # when '10'
51
+ # when '11'
52
+ # when '12'
53
+ # when '13'
54
+ # when '14'
55
+ # when '15'
56
+ # when '16'
57
+ # when '17'
58
+ # when '16'
59
+ # when '18'
60
+ # when '19'
61
+ # when '09'
62
+ # when '20'
63
+ # when '21'
64
+ # when '100'
63
65
  when '101'
64
- raise RecordNotFoundError.new, "Record #{more_info} was not found"
66
+ raise RecordNotFoundError.new, 'Record #{more_info} was not found'
65
67
  when '102'
66
- raise FieldUnexistingError.new, 'Field does not exist'
67
- # when "103"
68
+ if more_info != 0
69
+ raise FieldUnexistingError.new, "Following field(s) #{more_info} do not exist on layout #{layout_info}"
70
+ else
71
+ raise FieldUnexistingError.new, 'Field does not exist'
72
+ end
73
+ # when '103'
68
74
  when '104'
69
75
  raise ScriptUnexistingError.new, 'Script does not exist'
70
76
  when '105'
71
77
  raise LayoutUnexistingError.new, 'Layout does not exist'
72
- # when "106"
73
- # when "107"
74
- # when "108"
75
- # when "109"
76
- # when "110"
77
- # when "111"
78
- # when "112"
79
- # when "113"
80
- # when "114"
81
- # when "115"
82
- # when "116"
83
- # when "117"
84
- # when "118"
85
- # when "130"
86
- # when "131"
87
- # when "200"
78
+ # when '106'
79
+ # when '107'
80
+ # when '108'
81
+ # when '109'
82
+ # when '110'
83
+ # when '111'
84
+ # when '112'
85
+ # when '113'
86
+ # when '114'
87
+ # when '115'
88
+ # when '116'
89
+ # when '117'
90
+ # when '118'
91
+ # when '130'
92
+ # when '131'
93
+ # when '200'
88
94
  when '201'
89
95
  raise FieldNotModifiableError.new, 'Trying to write to a read-only field'
90
- # when "202"
91
- # when "203"
92
- # when "204"
93
- # when "205"
94
- # when "206"
95
- # when "207"
96
- # when "208"
97
- # when "209"
98
- # when "210"
99
- # when "211"
100
- # when "212"
101
- # when "213"
102
- # when "214"
103
- # when "215"
104
- # when "216"
105
- # when "217"
106
- # when "218"
107
- # when "300"
108
- # when "301"
109
- # when "302"
110
- # when "303"
111
- # when "304"
112
- # when "306"
113
- # when "307"
114
- # when "308"
115
- # when "400"
96
+ # when '202'
97
+ # when '203'
98
+ # when '204'
99
+ # when '205'
100
+ # when '206'
101
+ # when '207'
102
+ # when '208'
103
+ # when '209'
104
+ # when '210'
105
+ # when '211'
106
+ # when '212'
107
+ # when '213'
108
+ # when '214'
109
+ # when '215'
110
+ # when '216'
111
+ # when '217'
112
+ # when '218'
113
+ # when '300'
114
+ # when '301'
115
+ # when '302'
116
+ # when '303'
117
+ # when '304'
118
+ # when '306'
119
+ # when '307'
120
+ # when '308'
121
+ when '400'
122
+ raise EmptyFindError.new, ' Find criteria are empty'
116
123
  when '401'
117
- raise RecordNotFoundError.new, "Record #{more_info} was not found"
118
- # when "402"
124
+ raise RecordNotFoundError.new, 'Record #{more_info} was not found'
125
+ # when '402'
119
126
  when '403'
120
127
  raise UnauthenticatedError.new, 'You are unauthenticated to perform this request'
121
- # when "404"
122
- # when "405"
123
- # when "406"
124
- # when "407"
125
- # when "408"
126
- # when "409"
127
- # when "410"
128
- # when "412"
129
- # when "413"
130
- # when "414"
131
- # when "415"
132
- # when "416"
133
- # when "417"
134
- # when "418"
135
- # when "500"
136
- # when "501"
137
- # when "502"
138
- # when "503"
139
- # when "504"
140
- # when "505"
141
- # when "506"
142
- # when "507"
143
- # when "508"
144
- # when "509"
145
- # when "510"
146
- # when "511"
147
- # when "512"
148
- # when "513"
149
- # when "600"
150
- # when "601"
151
- # when "602"
152
- # when "603"
153
- # when "700"
154
- # when "706"
155
- # when "707"
156
- # when "708"
157
- # when "711"
158
- # when "714"
159
- # when "715"
160
- # when "716"
161
- # when "717"
162
- # when "718"
163
- # when "719"
164
- # when "720"
165
- # when "721"
166
- # when "722"
167
- # when "723"
168
- # when "724"
169
- # when "725"
170
- # when "726"
171
- # when "727"
172
- # when "729"
173
- # when "730"
174
- # when "731"
175
- # when "732"
176
- # when "733"
177
- # when "734"
178
- # when "735"
179
- # when "736"
180
- # when "738"
181
- # when "800"
182
- # when "801"
183
- # when "802"
184
- # when "803"
185
- # when "804"
186
- # when "805"
187
- # when "806"
188
- # when "807"
189
- # when "808"
190
- # when "809"
191
- # when "810"
192
- # when "811"
193
- # when "812"
194
- # when "813"
195
- # when "814"
196
- # when "815"
197
- # when "816"
198
- # when "817"
199
- # when "819"
200
- # when "820"
201
- # when "821"
202
- # when "822"
203
- # when "823"
204
- # when "824"
205
- # when "825"
206
- # when "826"
207
- # when "827"
208
- # when "850"
209
- # when "851"
210
- # when "852"
211
- # when "853"
212
- # when "900"
213
- # when "901"
214
- # when "902"
215
- # when "903"
216
- # when "905"
217
- # when "906"
218
- # when "920"
219
- # when "921"
220
- # when "922"
221
- # when "923"
222
- # when "951"
128
+ # when '404'
129
+ # when '405'
130
+ # when '406'
131
+ # when '407'
132
+ # when '408'
133
+ # when '409'
134
+ # when '410'
135
+ # when '412'
136
+ # when '413'
137
+ # when '414'
138
+ # when '415'
139
+ # when '416'
140
+ # when '417'
141
+ # when '418'
142
+ when '500'
143
+ raise ValidationError.new, 'Data value does not meet validation entry options (hint make sure your date values are formatted as MM/DD/YYYY)'
144
+ # when '501'
145
+ # when '502'
146
+ # when '503'
147
+ # when '504'
148
+ # when '505'
149
+ # when '506'
150
+ # when '507'
151
+ # when '508'
152
+ # when '509'
153
+ # when '510'
154
+ # when '511'
155
+ # when '512'
156
+ # when '513'
157
+ # when '600'
158
+ # when '601'
159
+ # when '602'
160
+ # when '603'
161
+ # when '700'
162
+ # when '706'
163
+ # when '707'
164
+ # when '708'
165
+ # when '711'
166
+ # when '714'
167
+ # when '715'
168
+ # when '716'
169
+ # when '717'
170
+ # when '718'
171
+ # when '719'
172
+ # when '720'
173
+ # when '721'
174
+ # when '722'
175
+ # when '723'
176
+ # when '724'
177
+ # when '725'
178
+ # when '726'
179
+ # when '727'
180
+ # when '729'
181
+ # when '730'
182
+ # when '731'
183
+ # when '732'
184
+ # when '733'
185
+ # when '734'
186
+ # when '735'
187
+ # when '736'
188
+ # when '738'
189
+ # when '800'
190
+ # when '801'
191
+ # when '802'
192
+ # when '803'
193
+ # when '804'
194
+ # when '805'
195
+ # when '806'
196
+ # when '807'
197
+ # when '808'
198
+ # when '809'
199
+ # when '810'
200
+ # when '811'
201
+ # when '812'
202
+ # when '813'
203
+ # when '814'
204
+ # when '815'
205
+ # when '816'
206
+ # when '817'
207
+ # when '819'
208
+ # when '820'
209
+ # when '821'
210
+ # when '822'
211
+ # when '823'
212
+ # when '824'
213
+ # when '825'
214
+ # when '826'
215
+ # when '827'
216
+ # when '850'
217
+ # when '851'
218
+ # when '852'
219
+ # when '853'
220
+ # when '900'
221
+ # when '901'
222
+ # when '902'
223
+ # when '903'
224
+ # when '905'
225
+ # when '906'
226
+ # when '920'
227
+ # when '921'
228
+ # when '922'
229
+ # when '923'
230
+ # when '951'
223
231
  when '952'
224
232
  raise InvalidTokenError.new, 'Could not retrieve a valid token from FileMaker, check your FileMaker server'
225
- # when "954"
226
- # when "955"
227
- # when "956"
228
- # when "957"
229
- # when "958"
230
- # when "959"
231
- # when "960"
232
- # when "1200"
233
- # when "1201"
234
- # when "1202"
235
- # when "1203"
236
- # when "1204"
237
- # when "1205"
238
- # when "1206"
239
- # when "1207"
240
- # when "1208"
241
- # when "1209"
242
- # when "1210"
243
- # when "1211"
244
- # when "1212"
245
- # when "1213"
246
- # when "1214"
247
- # when "1215"
248
- # when "1216"
249
- # when "1217"
250
- # when "1218"
251
- # when "1219"
252
- # when "1220"
253
- # when "1221"
254
- # when "1222"
255
- # when "1223"
256
- # when "1224"
257
- # when "1225"
258
- # when "1300"
259
- # when "1301"
260
- # when "1400"
261
- # when "1401"
262
- # when "1402"
263
- # when "1403"
264
- # when "1404"
265
- # when "1405"
266
- # when "1406"
267
- # when "1407"
268
- # when "1408"
269
- # when "1409"
270
- # when "1413"
271
- # when "1414"
272
- # when "1450"
273
- # when "1451"
274
- # when "1501"
275
- # when "1502"
276
- # when "1503"
277
- # when "1504"
278
- # when "1505"
279
- # when "1506"
280
- # when "1507"
281
- # when "1550"
282
- # when "1551"
283
- # when "1626"
284
- # when "1627"
285
- # when "1628"
286
- # when "1629"
287
- # when "1630"
233
+ # when '954'
234
+ # when '955'
235
+ # when '956'
236
+ # when '957'
237
+ # when '958'
238
+ # when '959'
239
+ # when '960'
240
+ # when '1200'
241
+ # when '1201'
242
+ # when '1202'
243
+ # when '1203'
244
+ # when '1204'
245
+ # when '1205'
246
+ # when '1206'
247
+ # when '1207'
248
+ # when '1208'
249
+ # when '1209'
250
+ # when '1210'
251
+ # when '1211'
252
+ # when '1212'
253
+ # when '1213'
254
+ # when '1214'
255
+ # when '1215'
256
+ # when '1216'
257
+ # when '1217'
258
+ # when '1218'
259
+ # when '1219'
260
+ # when '1220'
261
+ # when '1221'
262
+ # when '1222'
263
+ # when '1223'
264
+ # when '1224'
265
+ # when '1225'
266
+ # when '1300'
267
+ # when '1301'
268
+ # when '1400'
269
+ # when '1401'
270
+ # when '1402'
271
+ # when '1403'
272
+ # when '1404'
273
+ # when '1405'
274
+ # when '1406'
275
+ # when '1407'
276
+ # when '1408'
277
+ # when '1409'
278
+ # when '1413'
279
+ # when '1414'
280
+ # when '1450'
281
+ # when '1451'
282
+ # when '1501'
283
+ # when '1502'
284
+ # when '1503'
285
+ # when '1504'
286
+ # when '1505'
287
+ # when '1506'
288
+ # when '1507'
289
+ # when '1550'
290
+ # when '1551'
291
+ # when '1626'
292
+ # when '1627'
293
+ # when '1628'
294
+ # when '1629'
295
+ # when '1630'
288
296
  when '1631'
289
297
  raise ConnectionError.new, 'An error occurred while attempting to connect to the FileMaker server'
290
- # when "1632"
291
- # when "1633"
298
+ # when '1632'
299
+ # when '1633'
292
300
  else
293
- raise ResponseNotYetImplementedError.new, "An unknown error has been encountered: err_no was #{error_id}"
301
+ raise ResponseNotYetImplementedError.new, 'An unknown error has been encountered: err_no was #{error_id}'
294
302
  end
295
303
  end
296
304
  end
@@ -146,6 +146,16 @@ module Trophonius
146
146
  body = "{\"fieldData\": #{new_field_data.to_json}}"
147
147
  response = Request.make_request(url, "Bearer #{Request.get_token}", "post", body)
148
148
  if response["messages"][0]["code"] != "0"
149
+ if response["messages"][0]["code"] == "102"
150
+ results = Request.retrieve_first(layout_name)
151
+ if results["messages"][0]["code"] != "0"
152
+ Error.throw_error("102")
153
+ else
154
+ r_results = results["response"]["data"]
155
+ ret_val = r_results.empty? ? Error.throw_error("102") : r_results[0]['fieldData']
156
+ Error.throw_error("102", (new_field_data.keys.map(&:downcase) - ret_val.keys.map(&:downcase)).flatten.join(', '), layout_name)
157
+ end
158
+ end
149
159
  Error.throw_error(response["messages"][0]["code"])
150
160
  else
151
161
  url = URI("http#{Trophonius.config.ssl == true ? "s" : ""}://#{Trophonius.config.host}/fmi/data/v1/databases/#{Trophonius.config.database}/layouts/#{layout_name}/records/#{response["response"]["recordId"]}")
@@ -88,6 +88,17 @@ module Trophonius
88
88
  RecordSet.new(@trophonius_model.layout_name, @trophonius_model.non_modifiable_fields).send(method, *args, &block)
89
89
  return
90
90
  else
91
+ if response["messages"][0]["code"] == "102"
92
+ results = Request.retrieve_first(@trophonius_model.layout_name)
93
+ if results["messages"][0]["code"] != "0"
94
+ Error.throw_error("102")
95
+ else
96
+ r_results = results["response"]["data"]
97
+ ret_val = r_results.empty? ? Error.throw_error("102") : r_results[0]['fieldData']
98
+ query_keys = new_field_data.map { |q| q.keys.map(&:downcase) }.uniq
99
+ Error.throw_error("102", (query_keys - ret_val.keys.map(&:downcase)).flatten.join(', '), @trophonius_model.layout_name)
100
+ end
101
+ end
91
102
  Error.throw_error(response['messages'][0]['code'])
92
103
  end
93
104
  else
@@ -68,7 +68,17 @@ module Trophonius
68
68
  body = "{\"fieldData\": #{fieldData.to_json}}"
69
69
  response = Request.make_request(url, "Bearer #{Request.get_token}", 'patch', body)
70
70
  if response['messages'][0]['code'] != '0'
71
- Error.throw_error(response['messages'][0]['code'])
71
+ if response["messages"][0]["code"] == "102"
72
+ results = Request.retrieve_first(layout_name)
73
+ if results["messages"][0]["code"] != "0"
74
+ Error.throw_error("102")
75
+ else
76
+ r_results = results["response"]["data"]
77
+ ret_val = r_results.empty? ? Error.throw_error("102") : r_results[0]['fieldData']
78
+ Error.throw_error("102", (fieldData.keys.map(&:downcase) - ret_val.keys.map(&:downcase)).flatten.join(', '), layout_name)
79
+ end
80
+ end
81
+ Error.throw_error(response["messages"][0]["code"])
72
82
  else
73
83
  true
74
84
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trophonius
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kempen Automatisering
@@ -87,7 +87,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  requirements: []
90
- rubygems_version: 3.0.3
90
+ rubyforge_project:
91
+ rubygems_version: 2.7.9
91
92
  signing_key:
92
93
  specification_version: 4
93
94
  summary: Link between Ruby (on Rails) and FileMaker.