iris-rb 0.4.0 → 0.4.5

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: 68911f908e35d53772b5e5d60eeb47d70af794ba154113f6549749573e8e9c9b
4
- data.tar.gz: 5f535894c3caeeddbea68276f078e2727d3c14489807d7eb0f9ed3f0c84a9e3f
3
+ metadata.gz: 4fa52e407d3eb32800626af2aafd73a39b069090241d011001f21679ae930f7e
4
+ data.tar.gz: a9697a348d118c5fdd825ef3d4477ddd8fc81628326a67fe30cd5fa6dd5e6a98
5
5
  SHA512:
6
- metadata.gz: 54fb48ff3c5c183b6cc711f9a34a84ad6269df3b84909f61b5d7e1aad8718459ec690d740feb754f8fcd49c2700a123bf188adb9cdd3aec28cbb8fe97949e364
7
- data.tar.gz: a14097681c6021dd1e46f13dcc93e31481903d4236bea5fdb4544ebd6edd32389bfbe1028aec1b5e1b687532d7d09477808b07bec0a761666a60784b53c112f2
6
+ metadata.gz: 2d98d801290c2ed30eb20a11c22aefaffb0d3bd257982c61b014097cc6a42047f20f305cb62cc0c95fc75be08827b8e403f3db13b0fa1b35352acf77f7cfc1b7
7
+ data.tar.gz: 3051d7a9c7f9717b99e05104f4a21e21742ca23856274ba5c0485d193a63c97409c73790aad3911f668ab55864e57a7499f50f59b56d4b5c4d75cbc20dadc7be
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,15 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- iris-rb (0.1.17)
4
+ iris-rb (0.4.0)
5
+ bson (~> 4.8)
5
6
  italian-ruby (~> 0.1)
6
7
  rack (~> 2.2)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
12
+ bson (4.8.2)
11
13
  diff-lcs (1.3)
12
- italian-ruby (0.1.17)
14
+ italian-ruby (0.3.0)
13
15
  ruby2ruby (~> 2.4)
14
16
  rack (2.2.2)
15
17
  rake (12.3.3)
@@ -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.
@@ -114,8 +114,7 @@ modulo Iris
114
114
  # Esegue il controllo sul parametro.
115
115
  definisci _controlla(parametro, obbligatorio: si, annullabile: si, tipo_desiderato: :stringa, &blocco)
116
116
  valore_parametro = @parametri_originali.ottieni parametro, nullo
117
- valore_parametro = valore_parametro.in_id se valore_parametro.risponde_a? :in_id
118
- valore_parametro = Data.strptime(valore_parametro, "%Y-%m-%d") recupera valore_parametro
117
+ valore_parametro = _applica_conversioni_su valore_parametro, tipo_desiderato
119
118
 
120
119
  cattura :controllo_terminato esegui
121
120
  _segnala_presenza_obbligatoria_su parametro se obbligatorio == si e @parametri_originali.non_ha_chiave? parametro
@@ -184,6 +183,8 @@ modulo Iris
184
183
  mappa_opzioni.deposita :tipo_desiderato, :data
185
184
  quando opzioni.include?(:stringa)
186
185
  mappa_opzioni.deposita :tipo_desiderato, :stringa
186
+ quando opzioni.include?(:simbolo)
187
+ mappa_opzioni.deposita :tipo_desiderato, :simbolo
187
188
  quando opzioni.include?(:id_oggetto)
188
189
  mappa_opzioni.deposita :tipo_desiderato, :id_oggetto
189
190
  quando opzioni.include?(:intero)
@@ -223,6 +224,23 @@ modulo Iris
223
224
  lancia :controllo_terminato
224
225
  fine
225
226
 
227
+ ##
228
+ # Applica conversioni sul valore parametro in base al tipo desiderato.
229
+ definisci _applica_conversioni_su(valore_parametro, tipo_desiderato)
230
+ considera tipo_desiderato
231
+ quando :id_oggetto
232
+ valore_parametro.in_id
233
+ quando :simbolo
234
+ valore_parametro.in_simbolo
235
+ quando :data
236
+ Data.strptime(valore_parametro, "%Y-%m-%d")
237
+ altrimenti
238
+ valore_parametro
239
+ fine
240
+ recupera
241
+ valore_parametro
242
+ fine
243
+
226
244
  ##
227
245
  # Determina se il tipo del valore di un parametro è corrispondente
228
246
  # a quello desiderato.
@@ -238,8 +256,10 @@ modulo Iris
238
256
  ritorna si se valore_parametro.non_è_una? Data
239
257
  quando :stringa
240
258
  ritorna si se valore_parametro.non_è_una? Stringa
259
+ quando :simbolo
260
+ ritorna si se valore_parametro.non_è_una? Simbolo
241
261
  quando :id_oggetto
242
- ritorna si se valore_parametro.non_è_un? BSON::ObjectId
262
+ ritorna si se valore_parametro.non_è_un? IdOggetto
243
263
  quando :lista
244
264
  ritorna si se valore_parametro.non_è_una? Lista
245
265
  quando :mappa
@@ -256,6 +276,7 @@ modulo Iris
256
276
  quando :booleano allora "un booleano"
257
277
  quando :data allora "una data"
258
278
  quando :stringa allora "una stringa"
279
+ quando :simbolo allora "una stringa"
259
280
  quando :id_oggetto allora "un id oggetto"
260
281
  quando :intero allora "un numero intero"
261
282
  quando :decimale allora "un numero decimale"
@@ -1,3 +1,3 @@
1
1
  modulo Iris
2
- VERSIONE = "0.4.0"
2
+ VERSIONE = "0.4.5"
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.0
4
+ version: 0.4.5
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-24 00:00:00.000000000 Z
11
+ date: 2020-05-27 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