std-http-reader.h.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:4k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. /* -*-c++-*- */
  2. /*  Asynchronous HTTP client
  3.  *  Copyright (C) 2006   Written by VCL
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  This program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  *  GNU General Public License for more details.
  14.  *
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with this program; if not, write to the Free Software
  17.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  */
  19. #ifndef _STD_HTTP_READER_H_
  20. #define _STD_HTTP_READER_H_
  21. #include "http-reader.h"
  22. namespace OpenKore {
  23. /**
  24.  * A default implementation of ::HttpReader. It can download
  25.  * a file from exactly one server.
  26.  *
  27.  * On Windows, StdHttpReader will automatically use the system's
  28.  * proxy settings.
  29.  *
  30.  * @see ::MirrorHttpReader
  31.  */
  32. class StdHttpReader: public HttpReader {
  33. public:
  34. /**
  35.  * Initialize any subsystems that StdHttpReader will need.
  36.  * This function must be called before you may call
  37.  * StdHttpReader::create()
  38.  *
  39.  * You may only call this function once.
  40.  */
  41. static void init();
  42. /**
  43.  * Create a new StdHttpReader object. It will immediately start
  44.  * connecting and downloading.
  45.  *
  46.  * Before calling this function, you must have called init()
  47.  * exactly once.
  48.  *
  49.  * @param url        The URL to download.
  50.  * @param userAgent  The useragent string to use.
  51.  * @require
  52.  *     url != NULL
  53.  *     userAgent != NULL
  54.  *     init() must have been called.
  55.  */
  56. static StdHttpReader *create(const char *url,
  57.       const char *userAgent = DEFAULT_USER_AGENT);
  58. /**
  59.  * Create a new StdHttpReader object in HTTP POST mode. It will start
  60.  * posting the given data, after which it will start downloading.
  61.  *
  62.  * Before calling this function, you must have called init()
  63.  * exactly once.
  64.  *
  65.  * @param url          The HTTP request URL.
  66.  * @param postData     The data to post to the server. This MUST be a
  67.  *                     valid urlencoded string.
  68.  * @param postDataSize The size of _postData_, or -1 to automatically
  69.  *                     calculate the length with strlen().
  70.  * @param userAgent    The useragent string to use.
  71.  * @require
  72.  *     url != NULL
  73.  *     postData != NULL
  74.  *     postDataSize >= -1
  75.  *     userAgent != NULL
  76.  *     init() must have been called.
  77.  */
  78. static StdHttpReader *createAndPost(const char *url,
  79.       const char *postData,
  80.       int postDataSize = -1,
  81.       const char *userAgent = DEFAULT_USER_AGENT);
  82. /**
  83.  * Convenience function for synchronously downloading
  84.  * a file.
  85.  *
  86.  * @param url        [in]  The URL to download.
  87.  * @param size       [out] The size of the downloaded file.
  88.  * @param userAgent  [in]  The useragent string to use.
  89.  * @return A newly allocated buffer containing the downloaded file
  90.  *         (which must be freed when no longer necessary), or NULL
  91.  *         if an error occured.
  92.  * @require url != NULL && userAgent != NULL
  93.  */
  94. static char *download(const char *url, unsigned int &size,
  95.       const char *userAgent = DEFAULT_USER_AGENT);
  96. /**
  97.  * Same as the other download() method, except this one doesn't
  98.  * require a size parameter.
  99.  */
  100. static char *download(const char *url, const char *userAgent = DEFAULT_USER_AGENT);
  101. };
  102. }
  103. #endif /* _STD_HTTP_READER_H_ */