Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- _"encoding/json"
- "fmt"
- "github.com/gorilla/mux"
- "log"
- "math/rand"
- "time"
- "net/http"
- "github.com/PuerkitoBio/goquery"
- )
- type DadosProcesso struct {
- NumeroProcesso string `json:"numero-processo,omitempty"`
- }
- func configurarRotas() *mux.Router {
- router := mux.NewRouter().StrictSlash(true)
- router.HandleFunc("/pegar-processo/{numeroProcesso}/{secao}/{nome}", PegarDadosProcesso).Methods("GET")
- return router
- }
- func subirServidor() {
- r := configurarRotas()
- porta := ":1337"
- fmt.Println("O servidor está rodando na porta:" + porta)
- log.Fatal(http.ListenAndServe(porta, r))
- }
- func PegarDadosProcesso(w http.ResponseWriter, r *http.Request) []DadosProcesso{
- parametros := mux.Vars(r)
- numeroProcesso := parametros["numeroProcesso"]
- secao := parametros["secao"]
- nome := parametros["nome"]
- ResultadoDadosProcesso := []DadosProcesso{}
- UrlBase := "https://processual.trf1.jus.br/consultaProcessual/processo.php?proc="+numeroProcesso+"&secao="+secao+"&nome="+nome+"&mostrarBaixados=N"
- res := tratarUrl(UrlBase)
- html, err := goquery.NewDocumentFromReader(res.Body)
- if err != nil {
- log.Fatal(err)
- }
- //fmt.Println(html.Html()) //para retornar no terminal
- abaProcesso := html.Find(".noticia-letra").Find("table")
- //w.Write([]byte(abaProcesso.Find("tr").Find("th").Text()))
- abaProcesso.Find("tr").Each(func(i int, selection *goquery.Selection) {
- DadosProcesso := DadosProcesso{}
- switch selection.Find("th").Text() {
- case "Proceso::":
- DadosProcesso.NumeroProcesso = selection.Find("td").Text()
- }
- ResultadoDadosProcesso = append(ResultadoDadosProcesso, DadosProcesso)
- })
- return ResultadoDadosProcesso
- }
- func tratarUrl(UrlBase string) *http.Response {
- time.Sleep(time.Duration(rand.Intn(5)) * time.Second)
- //verificações básicas de erro a seguir
- res, err := http.Get(UrlBase)
- if err != nil {
- panic(err)
- }
- if res.StatusCode != 200 {
- panic(fmt.Sprintf("status code error: %d %s", res.StatusCode, res.Status))
- }
- return res
- }
- func main() {
- subirServidor()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement