iris-rb 0.4.1 → 0.4.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: 93645010e99005844554b97cbe673c0247397c737e231253f1f09532a0ced876
4
- data.tar.gz: 49aacb834d1e5b61c934f3c2479224521d727d61f31cae135d8ab7aff20a99ee
3
+ metadata.gz: b5689e9464c048693ee0f67e51d2b1ca6ce9f628d965ebbb6aff58b240aa6672
4
+ data.tar.gz: 5f26ccf2a16d560af7c1342d8b0acba56a092b21b76df504903ff6e82a9cc389
5
5
  SHA512:
6
- metadata.gz: 937da7b000675b6e13ce45f84b0c56ded105d45067f26f2b5521ea27349634bc5a7414606f63ab2a72b91985c8c435b0344074406ab866cb95fe5837e5edb8a9
7
- data.tar.gz: 72632e602a0430844eb507577a02d79a2281a30f6203132eae97ed4f05b10ebf39359058fc7f03821f465fe78d29e408c200ab049e385b79284cf13d006dc1b3
6
+ metadata.gz: d993d39cac3fcaebc90a2858458d22964661b41d3973c2201b3c8a90edffee68abd1c629da30de09c75dd22c9dfd5ffebbe4b149a540b935b19ad376984614e1
7
+ data.tar.gz: 75ba83a6699e471ce2bd719437ed1717d118a1215cf66c043654230e71f7174b66d75ef56a8b8e06906a2378f53aa6afecaf3f6517800ae366c60b3c3676de76
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /.italian-ruby
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
@@ -1,5 +1,5 @@
1
- require "bson"
2
- require_relative "iris/core_ext/string"
1
+ richiedi "bson"
2
+ richiedi "italian/ruby/core_ext/gems/bson"
3
3
  richiedi_tutti "iris"
4
4
 
5
5
  modulo Iris
@@ -59,6 +59,7 @@ modulo Iris
59
59
  cattura :arresta esegui
60
60
  _imposta_variabili_istanza richiesta
61
61
  _converti_parametri_interrogazione
62
+ _converti_corpo_multipart
62
63
  _converti_corpo_in_json
63
64
  _inizializza_parametri
64
65
 
@@ -138,8 +139,9 @@ modulo Iris
138
139
  definisci _imposta_variabili_istanza(richiesta)
139
140
  @richiesta = richiesta
140
141
  @richiesta["iris.parametri"] ||= Mappa.nuova
142
+ @tipo_contenuto = richiesta.ottieni "CONTENT_TYPE", "application/json"
141
143
  @stato = 200
142
- @intestazioni = INTESTAZIONI_PREDEFINITE
144
+ @intestazioni = INTESTAZIONI_PREDEFINITE.clona
143
145
  @corpo = nullo
144
146
  @registratore = Iris::Registratore.nuovo @richiesta
145
147
  fine
@@ -154,27 +156,36 @@ modulo Iris
154
156
  # Converte il corpo della richiesta in JSON.
155
157
  definisci _converti_corpo_in_json
156
158
  ritorna se @richiesta["rack.input"].nullo?
159
+ ritorna se @tipo_contenuto != "application/json"
157
160
  corpo = @richiesta["rack.input"].read
158
161
  ritorna se corpo.non_specificato?
159
162
 
160
- inizia
161
- corpo_convertito = (JSON.processa corpo).simbolizza
162
- @richiesta["iris.parametri"].fondi! corpo_convertito se corpo_convertito_una? Mappa
163
- @richiesta["iris.corpo"] = corpo_convertito
164
- recupera JSON::ParserError => errore
165
- arresta 400, errore: "Il corpo fornito non è un JSON valido."
166
- fine
163
+ corpo_convertito = (JSON.processa corpo).simbolizza
164
+ @richiesta["iris.parametri"].fondi! corpo_convertito se corpo_convertito.è_una? Mappa
165
+ @richiesta["iris.parametri"].fondi! Mappa(_corpo: corpo_convertito) se corpo_convertito.non_è_una? Mappa
166
+ @richiesta["iris.corpo"] = corpo_convertito
167
167
  @richiesta["rack.input"].rewind
168
+ recupera JSON::ParserError => errore
169
+ arresta 400, errore: "Il corpo fornito non è un JSON valido."
168
170
  fine
169
171
 
170
172
  ##
171
- # Converte i parametri della richiesta.
173
+ # Converte i parametri della richiesta passati come interrogazione.
172
174
  definisci _converti_parametri_interrogazione
173
175
  ritorna a_meno_che @richiesta["REQUEST_URI"].specificato? e @richiesta["REQUEST_URI"].include?("?")
174
176
  parametri_stringa_interrogazione = @richiesta["REQUEST_URI"].partiziona("?").ultimo
175
177
  @richiesta["iris.parametri"].fondi! Rack::Utils.parse_nested_query(parametri_stringa_interrogazione).simbolizza
176
178
  fine
177
179
 
180
+ ##
181
+ # Converte il corpo multipart.
182
+ definisci _converti_corpo_multipart
183
+ ritorna se @tipo_contenuto.non_inizia_con? "multipart/form-data"
184
+ @richiesta["iris.parametri"].fondi! Rack::Multipart.parse_multipart(@richiesta).simbolizza
185
+ recupera Errore => errore
186
+ arresta 400, errore: "Errore nella conversione del contenuto multipart fornito."
187
+ fine
188
+
178
189
  ##
179
190
  # Questo modulo serve per eseguire il codice del metodo `_avvia`
180
191
  # anche quando viene ridefinito nella classe includente.
@@ -68,14 +68,16 @@ modulo Iris
68
68
 
69
69
  ##
70
70
  # Esegue un controllo su un parametro obbligatoriol
71
- definisci obbligatorio(parametro, *opzioni, &blocco)
72
- _controlla parametro, _opzioni_parametro(*opzioni, &blocco).fondi(obbligatorio: si), &blocco
71
+ definisci obbligatorio(parametro, *opzioni, **tipo_elementi_lista, &blocco)
72
+ _controlla parametro, _opzioni_parametro(*opzioni, **tipo_elementi_lista, &blocco)
73
+ .fondi(obbligatorio: si), &blocco
73
74
  fine
74
75
 
75
76
  ##
76
77
  # Esegue un controllo su un parametro opzionale.
77
- definisci opzionale(parametro, *opzioni, &blocco)
78
- _controlla parametro, _opzioni_parametro(*opzioni, &blocco).fondi(obbligatorio: no), &blocco
78
+ definisci opzionale(parametro, *opzioni, **tipo_elementi_lista, &blocco)
79
+ _controlla parametro, _opzioni_parametro(*opzioni, **tipo_elementi_lista, &blocco)
80
+ .fondi(obbligatorio: no), &blocco
79
81
  fine
80
82
 
81
83
  ##
@@ -112,9 +114,16 @@ modulo Iris
112
114
 
113
115
  ##
114
116
  # Esegue il controllo sul parametro.
115
- definisci _controlla(parametro, obbligatorio: si, annullabile: si, tipo_desiderato: :stringa, &blocco)
117
+ definisci _controlla(parametro,
118
+ obbligatorio: si, annullabile: si,
119
+ tipo_desiderato: :stringa, tipo_desiderato_elementi_lista: nullo, &blocco)
116
120
  valore_parametro = @parametri_originali.ottieni parametro, nullo
117
121
  valore_parametro = _applica_conversioni_su valore_parametro, tipo_desiderato
122
+ se valore_parametro.è_una? Lista e tipo_desiderato_elementi_lista.specificato?
123
+ valore_parametro = valore_parametro.mappa esegui |valore|
124
+ _applica_conversioni_su valore, tipo_desiderato_elementi_lista
125
+ fine
126
+ fine
118
127
 
119
128
  cattura :controllo_terminato esegui
120
129
  _segnala_presenza_obbligatoria_su parametro se obbligatorio == si e @parametri_originali.non_ha_chiave? parametro
@@ -123,6 +132,10 @@ modulo Iris
123
132
  _segnala_non_annullabile_su parametro se annullabile == no e valore_parametro.non_specificato?
124
133
  _segnala_tipo_non_valido_su parametro, tipo_desiderato se tipo_non_corrispondente?(valore_parametro, tipo_desiderato)
125
134
  valore_parametro = nullo se valore_parametro.non_specificato?
135
+
136
+ _controlla_elementi_lista parametro, valore_parametro, tipo_desiderato_elementi_lista se
137
+ tipo_desiderato == :lista e tipo_desiderato_elementi_lista.specificato?
138
+
126
139
  @parametri_processati.deposita parametro, valore_parametro
127
140
  fine
128
141
 
@@ -171,9 +184,19 @@ modulo Iris
171
184
  @errori.deposita parametro, errori_trovati se errori_trovati.almeno_uno?
172
185
  fine
173
186
 
187
+ ##
188
+ # Controllo che gli elementi della lista siano tutti del tipo desiderato.
189
+ definisci _controlla_elementi_lista(parametro, valore_parametro, tipo_desiderato_elementi_lista)
190
+ ritorna se valore_parametro.non_è_una? Lista
191
+
192
+ se valore_parametro.almeno_uno? { |valore| tipo_non_corrispondente? valore, tipo_desiderato_elementi_lista }
193
+ _segnala_tipo_non_valido_su parametro, tipo_desiderato_elementi_lista
194
+ fine
195
+ fine
196
+
174
197
  ##
175
198
  # Recupera le opzioni del parametro, ovvero tipo e annullabilità.
176
- definisci _opzioni_parametro(*opzioni, &blocco)
199
+ definisci _opzioni_parametro(*opzioni, **tipo_elementi_lista, &blocco)
177
200
  mappa_opzioni = Mappa[annullabile: no, tipo_desiderato: :stringa]
178
201
  mappa_opzioni.deposita :annullabile, si se opzioni.include? :annullabile
179
202
  considera
@@ -193,6 +216,9 @@ modulo Iris
193
216
  mappa_opzioni.deposita :tipo_desiderato, :decimale
194
217
  quando opzioni.include?(:lista)
195
218
  mappa_opzioni.deposita :tipo_desiderato, :lista
219
+ se tipo_elementi_lista.ha_chiave? :di
220
+ mappa_opzioni.deposita :tipo_desiderato_elementi_lista, tipo_elementi_lista.ottieni(:di)
221
+ fine
196
222
  quando opzioni.include?(:mappa)
197
223
  mappa_opzioni.deposita :tipo_desiderato, :mappa
198
224
  fine
@@ -228,11 +254,11 @@ modulo Iris
228
254
  # Applica conversioni sul valore parametro in base al tipo desiderato.
229
255
  definisci _applica_conversioni_su(valore_parametro, tipo_desiderato)
230
256
  considera tipo_desiderato
231
- quando :id_oggetto
257
+ quando :id_oggetto, :id_oggetti
232
258
  valore_parametro.in_id
233
- quando :simbolo
259
+ quando :simbolo, :simboli
234
260
  valore_parametro.in_simbolo
235
- quando :data
261
+ quando :data, :date
236
262
  Data.strptime(valore_parametro, "%Y-%m-%d")
237
263
  altrimenti
238
264
  valore_parametro
@@ -248,21 +274,21 @@ modulo Iris
248
274
  ritorna no se valore_parametro.non_specificato?
249
275
 
250
276
  considera tipo_desiderato
251
- quando :intero, :decimale
277
+ quando :intero, :interi, :decimale, :decimali
252
278
  ritorna si se valore_parametro.non_è_un? Numerico
253
- quando :booleano
279
+ quando :booleano, :booleani
254
280
  ritorna si se valore_parametro.non_è_un? TrueClass e valore_parametro.non_è_un? FalseClass
255
- quando :data
281
+ quando :data, :date
256
282
  ritorna si se valore_parametro.non_è_una? Data
257
- quando :stringa
283
+ quando :stringa, :stringhe
258
284
  ritorna si se valore_parametro.non_è_una? Stringa
259
- quando :simbolo
285
+ quando :simbolo, :simboli
260
286
  ritorna si se valore_parametro.non_è_una? Simbolo
261
- quando :id_oggetto
262
- ritorna si se valore_parametro.non_è_un? BSON::ObjectId
263
- quando :lista
287
+ quando :id_oggetto, :id_oggetti
288
+ ritorna si se valore_parametro.non_è_un? IdOggetto
289
+ quando :lista, :liste
264
290
  ritorna si se valore_parametro.non_è_una? Lista
265
- quando :mappa
291
+ quando :mappa, :mappe
266
292
  ritorna si se valore_parametro.non_è_una? Mappa
267
293
  fine
268
294
 
@@ -274,14 +300,23 @@ modulo Iris
274
300
  definisci _messaggio_per(tipo_parametro)
275
301
  considera tipo_parametro
276
302
  quando :booleano allora "un booleano"
303
+ quando :booleani allora "una lista di booleani"
277
304
  quando :data allora "una data"
305
+ quando :date allora "una lista di date"
278
306
  quando :stringa allora "una stringa"
307
+ quando :stringhe allora "una lista di stringhe"
279
308
  quando :simbolo allora "una stringa"
309
+ quando :simboli allora "una lista di simboli"
280
310
  quando :id_oggetto allora "un id oggetto"
311
+ quando :id_oggetti allora "una lista di id oggetti"
281
312
  quando :intero allora "un numero intero"
313
+ quando :interi allora "una lista di numeri interi"
282
314
  quando :decimale allora "un numero decimale"
315
+ quando :decimali allora "una lista di numeri decimali"
283
316
  quando :lista allora "una lista"
317
+ quando :liste allora "una lista di liste"
284
318
  quando :mappa allora "un oggetto"
319
+ quando :mappe allora "una lista di oggetti"
285
320
  altrimenti nullo fine
286
321
  fine
287
322
 
@@ -1,3 +1,3 @@
1
1
  modulo Iris
2
- VERSIONE = "0.4.1"
2
+ VERSIONE = "0.4.6"
3
3
  fine
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iris-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francesco Ballardin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-25 00:00:00.000000000 Z
11
+ date: 2020-05-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: italian-ruby
@@ -74,7 +74,6 @@ files:
74
74
  - lib/iris/azione.ir
75
75
  - lib/iris/azione/intestazioni.ir
76
76
  - lib/iris/azione/parametri.ir
77
- - lib/iris/core_ext/string.rb
78
77
  - lib/iris/load.rb
79
78
  - lib/iris/navigatore.ir
80
79
  - lib/iris/navigatore/percorso.ir
@@ -1,7 +0,0 @@
1
- class String
2
- def in_id
3
- BSON::ObjectId self
4
- rescue BSON::ObjectId::Invalid
5
- self
6
- end
7
- end