iris-rb 0.4.0 → 0.4.5

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: 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