package main

import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
	"time"
)

const URL = "https://api.github.com/search/issues"

type IssuerSearchReport struct {
    Total int `json:"total_count"`
    Incomplete_results bool `json:"incomplete_results"`
    Created_at time.Time `json:"created_at"`
    Items []Issue
}

type Issue struct {
    Title string `json:"title"`
    User User
}

type User struct {
    Login string `json:"login"`
}

func IssuerSearch(s []string) (IssuerSearchReport,error) {
    new_s := s[0]
    resp,err := http.Get(URL + "?q=" + new_s)
    if err != nil {
        return IssuerSearchReport{},err
    }
    if resp.StatusCode != http.StatusOK {
        resp.Body.Close()
        return IssuerSearchReport{},fmt.Errorf("Error in request",resp.Status)
    }

    var result IssuerSearchReport

    body,_ := io.ReadAll(resp.Body)
    if err := json.Unmarshal(body,&result); err != nil {
        resp.Body.Close()
        return IssuerSearchReport{},nil
    }
    resp.Body.Close()
    return result,nil
}

func main() {
    result,err := IssuerSearch(os.Args[1:])
    if err != nil {
        fmt.Println("Error in IssuerSearch")
    }
    fmt.Printf("%#v\n",result)
    fmt.Println(result)
}