`URI::FTP#normalize` returns incorrect (?) value if original path is empty
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Inizia da URI::Generic#normalize! in lib/uri/generic.rb e URI::FTP#set_path in lib/uri/ftp.rb, usando le righe collegate come punti di ingresso. Controlla RFC 1738 e aggiungi test di normalizzazione mirati per un URI FTP con un percorso vuoto. Il lavoro è completato quando il comportamento è stato deciso e la directory predefinita non viene più codificata erroneamente come %2F.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I don't know how common this case is, but I did run into it accidentally while testing some code.
u = URI("ftp://ftp.example.com") # Note that there's no slash at the end
u.normalize.to_s # => "ftp://ftp.example.com/%2F"
I would expect the result to be "ftp://ftp.example.com/" or possibly the same as the original string, "ftp://ftp.example.com". As best as I can tell from RFC 1738, Section 3.2, "ftp://ftp.example.com" and "ftp://ftp.example.com/" are equivalent and refer to whatever the "default" directory is for FTP access, while "ftp://ftp.example.com/%2F" refers to the root directory.
This seems to be caused by a combination of two things. First, this code in URI::Generic#normalize!calls set_path('/') if the path is empty:
https://github.com/ruby/uri/blob/52077e9b07c555de6ad7ee74663b988fa38ca545/lib/uri/generic.rb#L1341-L1343
Second, URI::FTP overrides #set_path so that a leading slash in the argument is percent-encoded and appended to an unencoded slash: https://github.com/ruby/uri/blob/52077e9b07c555de6ad7ee74663b988fa38ca545/lib/uri/ftp.rb#L245-L247
I didn't see any tests for normalizing FTP URIs, so I'm not sure if this behavior is intended.
- Lingua principale
- Ruby
- Stelle
- 125
- Fork
- 65
- Merge medio
- 6h 4m
- PR unite (30g)
- 2
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ruby/uri
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
-
upstream contact for Debian Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 25/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
riscv/riscv-unified-db#2626 ·
-
Component: GLib
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
ds-drift
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
we-promise/sure#3693 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
simp/pupmod-simp-simp#395 ·