/*
 * Java Network Programming, Second Edition
 * Merlin Hughes, Michael Shoffner, Derek Hamner
 * Manning Publications Company; ISBN 188477749X
 *
 * http://nitric.com/jnp/
 *
 * Copyright (c) 1997-1999 Merlin Hughes, Michael Shoffner, Derek Hamner;
 * all rights reserved; see license.txt for details.
 */

import java.io.*;
import java.net.*;
import java.util.*;

public class FingerURLConnection extends URLConnection {
  public FingerURLConnection (URL url) {
    super (url);
  }

  protected InputStream in;
  
  public synchronized void connect () throws IOException {
    if (!connected) {
      StringBuffer query = new StringBuffer ();
      String file = url.getFile ().substring (1);
      StringTokenizer files = new StringTokenizer (file, "/", true);
      while (files.hasMoreTokens ())
        query.insert (0, files.nextToken ().replace ('/', '@'));
      Finger finger = new Finger
        (query.toString (), url.getHost (),
         url.getPort (), "verbose".equalsIgnoreCase (url.getRef ()));
      Reader reader = finger.finger ();
      in = new ReaderInputStream (reader, "latin1");
      connected = true;
    }
  }

  public InputStream getInputStream () throws IOException {
    connect ();
    return in;
  }

  public String getContentType () {
    return "text/plain";
  }
}
