package com.example.http_esp8266;

import android.os.Bundle;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);

        String ESP_URL="http://192.168.1.122";
        new Thread(() -> {
            String response = makeHttpRequestGET(ESP_URL+"/get");
           // String response = makeHttpRequestGETwithParams(ESP_URL+"/getpar", "state=on");
           // String response = makeHttpRequestPOST(ESP_URL+"/post", "state=on");
             System.out.println("Odpowiedz: "+response);
        }).start();
    }

    // 1. POST z danymi w body
    private String makeHttpRequestPOST(String urlString, String data) {
        StringBuilder response = new StringBuilder();
        try {
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);
            conn.setDoOutput(true);
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

            try (OutputStream out = new BufferedOutputStream(conn.getOutputStream())) {
                out.write(data.getBytes());
                out.flush();
            }

            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    conn.getResponseCode() == 200 ? conn.getInputStream() : conn.getErrorStream()
            ));
            String line;
            while ((line = reader.readLine()) != null) {
                response.append(line).append("\n");
            }
            reader.close();
            conn.disconnect();

        } catch (Exception e) {
            return "Błąd: " + e.getMessage();
        }
        return response.toString();
    }

    // 2. GET bez parametrów
    private String makeHttpRequestGET(String urlString) {
        StringBuilder response = new StringBuilder();
        try {
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setConnectTimeout(5000);
            conn.setReadTimeout(5000);

            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    conn.getResponseCode() == 200 ? conn.getInputStream() : conn.getErrorStream()
            ));
            String line;
            while ((line = reader.readLine()) != null) {
                response.append(line).append("\n");
            }
            reader.close();
            conn.disconnect();

        } catch (Exception e) {
            return "Błąd: " + e.getMessage();
        }
        return response.toString();
    }

    // 3. GET z parametrami (dodanymi do URL)
    private String makeHttpRequestGETwithParams(String urlString, String params) {
        return makeHttpRequestGET(urlString + "?" + params);
    }
}