------------------------------------------------------------------------------
--                             sepheaders.adb                               --
--                    Copyright (C) 2003 Andreas Almroth                    --
--                                                                          --
-- AdacURL is free  software; you  can  redistribute it  and/or modify it   --
-- under terms of the  GNU General Public License as published by the Free  --
-- Software Foundation; either version 2,  or (at your option) any later    --
-- version.  AdacURL is distributed in the  hope that it will be useful,    --
-- but  WITH  OUT  ANY  WARRANTY;  without  even the  implied  warranty  of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General --
-- Public License for more details.  You should have received a copy of the --
-- GNU General Public License distributed with AdacURL;  see file COPYING. --
-- If not,  write  to  the Free  Software  Foundation, 59 Temple Place -    --
-- Suite 330, Boston, MA 02111-1307, USA.                                   --
--                                                                          --
-- As a special exception,  if other files  instantiate  generics from this --
-- unit, or you link  this unit with other files  to produce an executable, --
-- this  unit  does not  by itself cause  the resulting  executable  to  be --
-- covered  by the  GNU  General  Public  License.  This exception does not --
-- however invalidate  any other reasons why  the executable file  might be --
-- covered by the  GNU Public License.                                      --
--                                                                          --
------------------------------------------------------------------------------
-- $Author: Andreas Almroth $
-- $Date: 03-07-29 17:15 $
-- $Workfile: sepheaders.adb $
-- $Revision: 1 $
-- $State: Unstable $
--
-- HISTORY:
--
-- Revision 1: Initial release
--
-- sepheaders.adb is based on the sepheaders.c sample file

with System;               use System;
with Adacurl;              use Adacurl;
with Adacurl.easy;         use Adacurl.Easy;
with Interfaces.C;         use Interfaces.C;
with Interfaces.C.Strings; use Interfaces.C.Strings;
with Curl_Callbacks;       use Curl_Callbacks;

procedure Sepheaders is
   function fopen(Name : chars_ptr;
                  Mode : Chars_Ptr) return File_P;
   pragma Import(C,fopen,"fopen");

   function fclose(Stream : File_P) return Int;
   pragma Import(C,fclose,"fclose");

   Curl           : CURL_P;
   Res            : CURLcode;
   Str            : Chars_Ptr := New_String("www.almroth.com");
   Headerfilename : Chars_Ptr := New_String("head.out");
   Headerfile     : FILE_P;
   Bodyfilename   : Chars_Ptr := New_String("body.out");
   Bodyfile       : FILE_P;
   Rc             : Int;
begin
   Curl := Curl_Easy_Init;

   Res := Curl_Easy_Setopt(Curl,CURLOPT_URL,New_String("www.almroth.com"));

   Res := Curl_Easy_Setopt(Curl,CURLOPT_NOPROGRESS,1);

   Res := Curl_Easy_Setopt(Curl,CURLOPT_MUTE,1);

   Res := Curl_Easy_Setopt(Curl,CURLOPT_WRITEFUNCTION,Write_Data'Access);

   Headerfile := Fopen(Headerfilename,New_String("w"));
   if Headerfile = System.Null_Address then
      Curl_Easy_Cleanup(Curl);
      return;
   end if;

   Bodyfile := Fopen(Bodyfilename,New_String("w"));
   if Bodyfile = System.Null_Address then
      Curl_Easy_Cleanup(Curl);
      return;
   end if;

   Res := Curl_Easy_Setopt(Curl,CURLOPT_WRITEHEADER,headerfile);

   Res := Curl_Easy_Setopt(Curl,CURLOPT_WRITEDATA,bodyfile);

   Res := Curl_Easy_Perform(Curl);

   Rc := Fclose(Headerfile);
   Rc := Fclose(Bodyfile);

   Curl_Easy_Cleanup(Curl);

end Sepheaders;