L O U R I 1 0 1 S t e p h a n B e r g m a n n F O S D E M , F e b r u a r y 2 0 1 8
A n a t o m y o f a U R I U R I r e f e r e n c e U R I s c h e m e : / / u s e r i n f o @ h o s t : p o r t / p a t h ? q u e r y # f r a g m e n t a u t h o r i t y p e r c e n t e n c o d i n g : x x % R F C 3 9 8 6 “ U n i f o r m R e s o u r c e I d e n t i fi e r ( U R I ) : G e n e r i c S y n t a x ” 2 I N S E R T D E S I G N A T O R , I F N E E D E D
A n a t o m y o f a n I N e t U R L O b j e c t ● B a c k t o t h e m i d ‘ 9 0 s . . . ● I n v e n t e d i t s o w n j a r g o n ● G e t P r o t o c o l ( ) , G e t P a r a m ( ) , G e t M a r k ( ) ● p a r t l y fi x e d ; e v e n m o r e c o n f u s i n g ( s e t Q u e r y ( ) , s e t F r a g m e n t ( ) ) ● O r i g i n a l l y o n l y a c c e p t e d U R L s o f a fi x e d s e t o f s c h e m e s ● A l w a y s n o r m a l i z e s c o n t e n t ● i f b r o k e n w e b s e r v e r n e e d s < h t t p : / / k a p u t t / f o o %2 1 b a r > , I N e t U R L O b j e c t s t i l l g i v e s i t < h t t p : / / k a p u t t / f o o ! b a r > ● S t i l l i n s i s t s t h a t fi l e U R L s r e q u i r e a n a u t h o r i t y c o m p o n e n t ● < fi l e : / / / f o o / b a r > , n o t < fi l e : / f o o / b a r > 3 I N S E R T D E S I G N A T O R , I F N E E D E D
A n a t o m y o f a U R I ’ s p a y l o a d ● < d a t a : , A %4 2 C %2 0 > ● A - > o c t e t 0 x 4 1 ● %4 2 - > o c t e t 0 x 4 2 ● C - > o c t e t 0 x 4 3 ● %2 0 - > o c t e t 0 x 2 0 ● < fi l e : / / / f o o / b a r / b a z . t x t > ● c o r r e s p o n d s t o p a t h n a m e / f o o / b a r / b a z . t x t ● W h a t U R L c o r r e s p o n d s t o p a t h n a m e / f o o / b a r / h ä h . t x t ● < fi l e : / / / f o o / b a r / h %C 3 %A 4 h . t x t > ? 4 I N S E R T D E S I G N A T O R , I F N E E D E D
S t a r O f fi c e l e a r n s U n i c o d e ● B e f o r e : ● O n e 8 - b i t S t r i n g c l a s s ● U R L s w r i t t e n a s S t r i n g s , p a y l o a d m a n i p u l a t e d a s S t r i n g ● A f t e r : ● T w o s t r i n g c l a s s e s , 8 - b i t S t r i n g a n d 1 6 - b i t U n i S t r i n g ● U R L s w r i t t e n a s e i t h e r , p a y l o a d m a n i p u l a t e d a s e i t h e r ● B u t w h a t i s U n i S t r i n g G e t U R L P a t h ( " fi l e : / / / f o o / b a r / h %C 3 %A 4 h . t x t " ) ● " / f o o / b a r / h ä h . t x t " ● " / f o o / b a r / h à ¤ h . t x t " 5 I N S E R T D E S I G N A T O R , I F N E E D E D
T o c o v e r m y a s s . . . ● E v e r y I N e t U R L O b j e c t f u n c t i o n j u s t g o t m o r e p a r a m e t e r s ● ( D e f a u l t e d o n e s , e v e n w h e r e t h a t m a d e l i t t l e s e n s e ) ● E n c o d e M e c h a n i s m : ● A l l , W a s E n c o d e d , N o t C a n o n i c a l ● D e c o d e M e c h a n i s m : ● N O N E , T o I U r i , W i t h C h a r s e t , U n a m b i g u o u s ● r t l _ T e x t E n c o d i n g e C h a r s e t = R T L _ T E X T E N C O D I N G _ U T F 8 ● I N e t U R L O b j e c t ( " fi l e : / / / 1 0 %2 5 2 0 $ " ) . G e t M a i n U R L ( W i t h C h a r s e t ) ● " fi l e : / / / 1 0 %2 0 $ " ( i . e . , “ 1 0 $ ” , n o t “ 1 0 %2 0 $ ” ) 6 I N S E R T D E S I G N A T O R , I F N E E D E D
S o m e c r e a t i v e i n v e n t i o n s ● < v n d . s u n . s t a r . e x p a n d : $ F O O / b a r / b a z > ● d e p e n d i n g o n F O O , e x p a n d s t o < fi l e : / / / s o m e / p a t h / b a r / b a z > ● < v n d . s u n . s t a r . p k g : / / fi l e : %2 F %2 F %2 F f o o %2 F b a r . o d t / p a t h / w i t h i n / o d t > ● a u t h o r i t y e n c o d e s < fi l e : / / / f o o / b a r . o d t > ● a s s e m b l i n g a n d d i s a s s e m b l i n g s u c h U R L s p r o v e d e r r o r - p r o n e : ● / f o o / b a r b a z . o d t < fi l e : / / / f o o / b a r %2 0 b a z . o d t > < v n d . s u n . s t a r . p k g : / / fi l e %2 F %2 F %2 F f o o %2 F b a r %2 5 2 0 b a z . o d t / . . . > 7 I N S E R T D E S I G N A T O R , I F N E E D E D
U N O t o t h e r e s c u e ! ● U N O s e r v i c e s t o h a n d l e s u c h U R L s ● c s s : : u r i : : U r i R e f e r e n c e F a c t o r y ● X U r i R e f e r e n c e p a r s e ( [ i n ] s t r i n g u r i R e f e r e n c e ) ; ● c s s : : u r i : : V n d S u n S t a r P k g U r l R e f e r e n c e F a c t o r y ● X U r i R e f e r e n c e c r e a t e V n d S u n S t a r P k g U r l R e f e r e n c e ( [ i n ] X U r i R e f e r e n c e a u t h o r i t y ) ; ● P l u s s o m e C / C + + s t u f f i n r t l / u r i . h x x 8 I N S E R T D E S I G N A T O R , I F N E E D E D
U N O t o t h e r e s c u e ! ● U N O s e r v i c e s t o h a n d l e s u c h U R L s ● c s s : : u r i : : U r i R e f e r e n c e F a c t o r y ● X U r i R e f e r e n c e p a r s e ( [ i n ] s t r i n g u r i R e f e r e n c e ) ; ● c s s : : u r i : : V n d S u n S t a r P k g U r l R e f e r e n c e F a c t o r y ● X U r i R e f e r e n c e c r e a t e V n d S u n S t a r P k g U r l R e f e r e n c e ( [ i n ] X U r i R e f e r e n c e a u t h o r i t y ) ; ● P l u s s o m e C / C + + s t u f f i n r t l / u r i . h x x ● U N O t o t h e r e s c u e ? ! ? 9 I N S E R T D E S I G N A T O R , I F N E E D E D
s e d i l H e s a i d , “ H o w m a n y s o n g s d i d y o u w r i t e ? ” s I ’ d w r i t t e n z e r o , I l i e d a n d s a i d , “ T e n . ” “ Y o u w o n ’ t b e y o u n g f o r e v e r Y o u s h o u l d h a v e w r i t t e n fi f t e e n . ” ― R e e d / C a l e , W o r k
Recommend
More recommend