package com.softgraf.vendas.model.rede;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
import java.util.Date;

public class InfoUrl {

	private URL url;
	
	public InfoUrl(String url) {
		try {
			this.url = new URL(url);
			
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
	
	public String getHost() {
		return url.getHost();
	}
	
	// HTTP, FTP
	public String getProtocol() {
		return url.getProtocol();
	}
	
	// retorna o IP do servidor web
	public String getIp() {
		try {
			return InetAddress.getByName(url.getHost()).getHostAddress();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	// nome do arquivo
	public String getFile() {
		return url.getFile();
	}
	
	public long getLastModified() {
		long data;
		
		try {
			data = url.openConnection().getLastModified();
		} catch (IOException e) {
			e.printStackTrace();
			return 0;
		}

		return data;
	}
	
	public long getContentLength() {
		long tamanho;
		
		try {
			tamanho = url.openConnection().getContentLength();
		} catch (IOException e) {
			e.printStackTrace();
			return 0;
		}
		
		return tamanho;
	}
	
	public Date getDataHoraAtual() {
		try {
			return new Date(url.openConnection().getDate());
			
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public String getTexto() {
		
		try {
			InputStreamReader leitor = new InputStreamReader(url.openStream());
			BufferedReader buffer = new BufferedReader(leitor);
			StringBuilder string = new StringBuilder();
			
			while (buffer.ready()) {
				string.append(buffer.readLine());
				string.append("\n");
			}
			buffer.close();
			return string.toString();
					
		} catch (IOException e) {
			e.printStackTrace();
			return null;
		}
	}
}
