trophonius 1.1.5 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
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.