Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 2.11 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4.     _"encoding/json"
  5.     "fmt"
  6.     "github.com/gorilla/mux"
  7.     "log"
  8.     "math/rand"
  9.     "time"
  10.     "net/http"
  11.     "github.com/PuerkitoBio/goquery"
  12. )
  13.  
  14.  
  15. type DadosProcesso struct {
  16.      NumeroProcesso        string    `json:"numero-processo,omitempty"`
  17. }
  18.  
  19. func configurarRotas() *mux.Router {
  20.     router := mux.NewRouter().StrictSlash(true)
  21.  
  22.     router.HandleFunc("/pegar-processo/{numeroProcesso}/{secao}/{nome}", PegarDadosProcesso).Methods("GET")
  23.  
  24.     return router
  25. }
  26.  
  27. func subirServidor() {
  28.     r := configurarRotas()
  29.  
  30.     porta := ":1337"
  31.     fmt.Println("O servidor está rodando na porta:" + porta)
  32.     log.Fatal(http.ListenAndServe(porta, r))
  33. }
  34.  
  35.  
  36. func PegarDadosProcesso(w http.ResponseWriter, r *http.Request) []DadosProcesso{   
  37.     parametros := mux.Vars(r)
  38.  
  39.      numeroProcesso := parametros["numeroProcesso"]
  40.      secao  := parametros["secao"]
  41.      nome  := parametros["nome"]
  42.  
  43.      ResultadoDadosProcesso := []DadosProcesso{}
  44.  
  45.     UrlBase := "https://processual.trf1.jus.br/consultaProcessual/processo.php?proc="+numeroProcesso+"&secao="+secao+"&nome="+nome+"&mostrarBaixados=N"
  46.    
  47.     res := tratarUrl(UrlBase)
  48.  
  49.     html, err := goquery.NewDocumentFromReader(res.Body)
  50.     if err != nil {
  51.         log.Fatal(err)
  52.     }
  53.     //fmt.Println(html.Html()) //para retornar no terminal
  54.     abaProcesso := html.Find(".noticia-letra").Find("table")
  55.     //w.Write([]byte(abaProcesso.Find("tr").Find("th").Text()))
  56.  
  57.     abaProcesso.Find("tr").Each(func(i int, selection *goquery.Selection) {
  58.        
  59.         DadosProcesso := DadosProcesso{}
  60.  
  61.         switch selection.Find("th").Text() {
  62.             case "Proceso::":
  63.                DadosProcesso.NumeroProcesso = selection.Find("td").Text()
  64.         }
  65.  
  66.         ResultadoDadosProcesso = append(ResultadoDadosProcesso, DadosProcesso)
  67.     })
  68.  
  69.     return ResultadoDadosProcesso
  70. }
  71.  
  72. func tratarUrl(UrlBase  string) *http.Response {
  73.     time.Sleep(time.Duration(rand.Intn(5)) * time.Second)
  74.  
  75.     //verificações básicas de erro a seguir
  76.     res, err := http.Get(UrlBase)
  77.     if err != nil {
  78.         panic(err)
  79.     }
  80.  
  81.     if res.StatusCode != 200 {
  82.         panic(fmt.Sprintf("status code error: %d %s", res.StatusCode, res.Status))
  83.     }
  84.  
  85.     return res
  86. }
  87.  
  88.  
  89. func main() {
  90.     subirServidor()
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement