Sebastian Schulz <[EMAIL PROTECTED]> writes:
> 
> Is it possible to read a file from a webaddress? Something like:
> 
> ...  do file <- readFile_ "http://..."
>         dosomething file
> ...
> 

Attached is a from-the-hip Haskell module I wrote sometime ago
to do this. It provides the action:

   getURL :: String{-the URL-} -> IO String

As is, it only supports the http:// protocol, but hopefully a
useful starting point. The module depends on hslibs libraries,
which effectively means that it is currently GHC dependent(?)

hth
--sigbjorn


begin 600 WWWLib.lhs
M)0T*)2`H8RD@,3DY.2P@<V]F#0HE#0H-"DQI8G)A<GD@9F]R(')E861I;F<@
M<W1U9F8@9G)O;2!54DQS+B!5<V5S('-O8VME="!L:6)R87)I97,N#0H-"EQB
M96=I;GMC;V1E?0T*;6]D=6QE(%=75TQI8B`H9V5T55),+"!D96-O9&554DPI
M('=H97)E#0H-"BTM:6UP;W)T($=L845X=',-"FEM<&]R="!3;V-K970-"FEM
M<&]R="!)3PT*:6UP;W)T($-H87(@*"!I<T1I9VET("D-"FEM<&]R="!,:7-T
M#0I<96YD>V-O9&5]#0H-"F=E=%523"!D96-O9&5S(&$@55),(&%N9"!I<W-U
M97,@=&AE(')E<75E<W0@=&\@9F5T8V@-"G1H92!R97-O=7)C92]D;V-U;65N
M="!H:61I;F<@8F5H:6YD(&ET+B!!="!T:&4@;6]M96YT#0I(5%10(&ES('1H
M92!O;FQY('!R;W1O8V]L('-U<'!O<G1E9"X-"@T*7&)E9VEN>V-O9&5]#0IG
M97154DP@.CH@4W1R:6YG("T^($E/(%-T<FEN9PT*9V5T55),('5R;"`](`T*
M("`@8V%S92!D96-O9&554DP@=7)L(&]F(`T*("`@("!.;W1H:6YG(`DM/B`@
M<F5T=7)N("(B#0H@("`@($IU<W0@*'!R;W1O+"!M86-H:6YE+"!P;W)T+"!F
M:6QE*2`M/@T*("`@("`@("`@(&9E=&-H55),('!R;W1O(&UA8VAI;F4@<&]R
M="!C;VUM86YD(#X^/2!H1V5T0V]N=&5N=',-"@EW:&5R90T*("`@"2!C;VUM
M86YD(#T@#0H@("`@("`@("`@("!C87-E('!R;W1O(&]F#0H@("`@("`@("`@
M("`@(")H='1P(B`M/B`B1T54("(@*RL@9FEL92`M+2!W86YT('1O(&)E(&%B
M;&4@=&\@<W5P<&QY(&UO<F4@:&5R92X-"B`@("`@("`@("`@("`@7R`@("`@
M("T^(&9I;&4-"@T*7&5N9'MC;V1E?0T*#0I4:&4@<')I;6ET:79E(&%C=&EO
M;B!F;W(@;W!E;FEN9R!A;F0@:7-S=6EN9R!A(%523"!R97%U97-T+@T*#0I)
M;G-T96%D(&]F('1A:VEN9R!A('-T<FEN9R!W:&EC:"!I<R!T:&4@8V]M;6%N
M9"!T;R!F:7)E(&]F9@T*=&\@=&AE('-E<G9E<BP@:70@=VEL;"!P<F]B86)L
M>2!H879E('1O(&)E(&5X=&5N9&5D('1O(&%C8V5P=`T*86X@:6YI=&EA;&ES
M871I;VX@86-T:6]N("AW86YT('1O(&)E(&%B;&4@=&\@8W)E871E("=R96%L
M)PT*2%144"!R97%U97-T<RP@9F]R(&EN<W1A;F-E+BD-"@T*7&)E9VEN>V-O
M9&5]#0IF971C:%523"`Z.B!3=')I;F<-"@D@+3X@4W1R:6YG#0H)("T^($EN
M=`T*"2`M/B!3=')I;F<-"@D@+3X@24\@2&%N9&QE#0IF971C:%523"!P<F]T
M;R!M86-H('!O<G0@8V]M;6%N9"`](&1O#0H@(&AD;"`@/"T@8V]N;F5C=%1O
M(&UA8V@@*%!O<G1.=6UB97(@*&UK4&]R=$YU;6)E<B!P;W)T*2D-"B`@:%!U
M=%-T<DQN(&AD;"!C;VUM86YD#0H@(&A3971"=69F97)I;F<@:&1L($QI;F5"
M=69F97)I;F<-"B`@<F5T=7)N(&AD;`T*7&5N9'MC;V1E?0T*#0HJ0F%S:6,J
M(%523"!P87)S97(N#0H-"EQB96=I;GMC;V1E?0T*9&5C;V1E55),(#HZ(%-T
M<FEN9R`M/B!-87EB92`H4W1R:6YG+"!3=')I;F<L($EN="P@4W1R:6YG*0T*
M9&5C;V1E55),('5R;"`]('!A<G-E55),('5R;`T*("!W:&5R90T*("`@<&%R
M<V554DP@;',@/2!R=6Y-32!L<R`D(&1O#0H@("`@("`@<')O=&\@/"T@9V5T
M4')O=&]C;VP-"B`@("`@("!M86-H("`\+2!G971-86-H:6YE#0H@("`@("`@
M<&]R="`@/"T@9V5T4&]R=`T*("`@("`@(&9I;&4@(#PM(&=E=$9I;&4-"B`@
M("`@("!R971U<FX@*'!R;W1O+&UA8V@L<&]R="QF:6QE*2`-"@T*9V5T4')O
M=&]C;VP@/2!L:69T("`H8G)E86M!=%-U8E-T<FEN9R`B.B\O(BD-"F=E=$UA
M8VAI;F4@(#T@;&EF=#$@*&)R96%K("A<(&-H("T^(&-H(#T]("<Z)R!\?"!C
M:"`]/2`G+R<I*0T*#0IG9710;W)T(#T@#0H@("`@(&QI9G0Q("0@7"!L<R`M
M/@T*("`@("!C87-E(&QS(&]F#0H@("`@("`@*"<Z)SIX<RD@+3X-"B`@("`@
M("`@(&-A<V4@8G)E86L@*&YO="YI<T1I9VET*2!X<R!O9@T*("`@("`@("`@
M("AP<G0L('ES*2`M/B`-"@D@("`@("!C87-E(')E861S('!R="!O9@T*"2`@
M("`@("`@6UT@("`@+3X@*#@P+"!Y<RD-"@D@("`@("`@("@H>"Q?*3I?*2`M
M/B`H>"P@('ES*0T*("`@("`@(%\@+3X@*#@P+"!L<RD-"B`@("`-"@T*9V5T
M1FEL92`](&QI9G0Q("A<('@@+3X@*'@L6UTI*0T*7&5N9'MC;V1E?0T*#0I<
M8F5G:6Y[8V]D97T-"FYE=W1Y<&4@34T@82`]($U-("A3=')I;F<@+3X@36%Y
M8F4@*&$L(%-T<FEN9RDI#0H-"G)U;DU-(#HZ(%-T<FEN9R`M/B!-32!A("T^
M($UA>6)E(&$-"G)U;DU-('-T<B`H34T@9BD@/2`-"B`@8V%S92!F('-T<B!O
M9@T*("`@($YO=&AI;F<@("`@+3X@3F]T:&EN9PT*("`@($IU<W0@*'@L7RD@
M+3X@2G5S="!X#0H-"FQI9G0@.CH@*%-T<FEN9R`M/B!-87EB92`H82Q3=')I
M;F<I*2`M/B!-32!A#0IL:69T(&8@/2!-32!F#0H-"FQI9G0Q(#HZ("A3=')I
M;F<@+3X@*&$L4W1R:6YG*2D@+3X@34T@80T*;&EF=#$@9B`]($U-("A<('@@
M+3X@2G5S="`H9B!X*2D-"@T*:6YS=&%N8V4@36]N860@34T@=VAE<F4-"B`@
M<F5T=7)N('@@("`@(#T@34T@*%P@<R`M/B!*=7-T("AX+',I*0T*("`H34T@
M;2D@/CX](&L@/2`-"B`@("!-32`H7"!S("T^(`T*("`@("`@("`@(&-A<V4@
M;2!S(&]F#0H)("`@($YO=&AI;F<@("`@("T^($YO=&AI;F<-"@D@("`@2G5S
M="`H>"QS)RD@+3X@#0H)("`@("`@(&QE=`T*"2`@("`@("`@*$U-(&XI(#T@
M:R!X#0H)("`@("`@(&EN#0H)("`@("`@(&X@<R<I#0H-"EQE;F1[8V]D97T-
M"@T*7&)E9VEN>V-O9&5]#0HM+4-O=6QD(&)E(&=E;F5R86QI<V5D('1O($5Q
M+@T*8G)E86M!=%-U8E-T<FEN9R`Z.B!3=')I;F<@#0H)"2`M/B!3=')I;F<-
M"@D)("T^($UA>6)E#0H)"2`@("`@*"!3=')I;F<@("TM('=H870@8V%M92!B
M969O<F4-"@D)("`@("`L(%-T<FEN9R`@+2T@=VAA="!C;VUE<R!A9G1E<BP@
M*F5X8VQU9&EN9RH@=&AE('-T<FEN9R!T:&%T('=A<R!M871C:&5D(&%G86EN
M<W0N#0H)"2`@("`@*0T*8G)E86M!=%-U8E-T<FEN9R!S=6(@6UT@("`]($YO
M=&AI;F<-"F)R96%K0713=6)3=')I;F<@<W5B('-T<D`H>#IX<RD-"B`@("!\
M('-U8B!@:7-0<F5F:7A/9F`@<W1R(#T@2G5S="`H6UTL(&1R;W`@*&QE;F=T
M:"!S=6(I('-T<BD-"B`@("!\(&]T:&5R=VES90D)("`@/2!R97,-"B`@("`)
M=VAE<F4-"@D@(')E<R`](`T*"2`@("!C87-E(&)R96%K0713=6)3=')I;F<@
M<W5B('AS(&]F#0H)("`@("`@3F]T:&EN9R`@("`M/B!.;W1H:6YG#0H)("`@
M("`@2G5S="`H8BQA*2`M/B!*=7-T("AX.F(L82D-"@T*7&5N9'MC;V1E?0T*
`
end

Reply via email to