/*
 * $Header: /home/gene/library/website/docsrc/httpxtran/src/RCS/test0011.c,v 395.1 2008/04/20 17:25:51 gene Exp $
 *
 * Copyright (c) 2005 Gene Michael Stover.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 * USA
 */
/*
 * Test that we can use InternetConnect without error.
 */

#include "this.h"

/*
 */
static HINTERNET
S_InternetOpen ()
{
  static TCHAR agent[] = TEXT ("httpxtran/src/test0010.c");
  static DWORD access_type = INTERNET_OPEN_TYPE_PRECONFIG;
  static TCHAR *proxy_name = NULL;
  static TCHAR *proxy_bypass = NULL;
  static DWORD flags = 0;
  HINTERNET hnd = NULL;

  hnd = InternetOpen (agent, access_type, proxy_name, proxy_bypass, flags);
  if (hnd != NULL) {
      /* good */
  } else {
    DEBUG_PrintLastError (__FILE__, __LINE__, "InternetOpen");
    assert (hnd == NULL);
  }
  return hnd;
}

/*
 */
static HINTERNET
S_InternetConnect (HINTERNET inet)
{
  HINTERNET hnd = NULL;
  static TCHAR server_name[] = TEXT ("google.com");
  static INTERNET_PORT server_port = INTERNET_DEFAULT_HTTP_PORT;
  static TCHAR *username = NULL;
  static TCHAR *password = NULL;
  static DWORD service = INTERNET_SERVICE_HTTP;
  static DWORD flags = 0;
  DWORD_PTR context = 0;

  hnd = InternetConnect (inet, server_name, server_port, username, password,
			 service, flags, context);
  if (hnd != NULL) {
      /* good */
  } else {
    DEBUG_PrintLastError (__FILE__, __LINE__, "InternetConnect");
    assert (hnd == NULL);
  }
  return hnd;
}

/*
 */
static void
S_InternetCloseHandle (HINTERNET hnd)
{
  if (InternetCloseHandle (hnd)) {
    /* good */
  } else {
    DEBUG_PrintLastError (__FILE__, __LINE__, "InternetOpen");
  }
}

int
main ()
{
  int rc = 0;
  HINTERNET inet, conn;

  inet = S_InternetOpen ();
  if (inet != NULL) {
    conn = S_InternetConnect (inet);
    if (conn != NULL) {
      S_InternetCloseHandle (conn);
    } else {
    DEBUG_Print (__FILE__, __LINE__, "S_InternetConnect failed");
    rc = 3;
    }
    S_InternetCloseHandle (inet);
  } else {
    DEBUG_Print (__FILE__, __LINE__, "S_InternetOpen failed");
    rc = 3;
  }
  return rc == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}

/* --- end of file --- */
