iris-rb 0.4.1 → 0.4.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: 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