Skip to content

Commit

Permalink
fix: adjust return for purchase PTAX USD
Browse files Browse the repository at this point in the history
  • Loading branch information
arferreira committed Jul 25, 2023
1 parent 97a900a commit c043b54
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 10 deletions.
35 changes: 25 additions & 10 deletions bancocentral/cambio.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package bancocentral

import (
"errors"
"fmt"
"log"
"regexp"
"strconv"
"strings"
Expand All @@ -25,18 +27,21 @@ func NewCambio() *Cambio {
err: nil,
}

// Realize a solicitação HTTP e capture a resposta e o erro
c.req, c.err = c.acesso.GetURL()
if c.err != nil {
// Se houver um erro, retorne a instância de `Cambio` com o erro
return c
}

// Se a solicitação for bem-sucedida, atualize o campo `cambio` com o conteúdo limpo
c.cambio = cleanContent(string(c.req))

return c
}

func (c *Cambio) GetDolarCompraPtax() (float64, error) {
data := regexp.MustCompile(`INDICADOR_CAMBIO_DOLAR_PTAX(.*?)</entry>`).FindStringSubmatch(c.cambio)
data := regexp.MustCompile(`<entry>.*?<id>painel_indicadores_INDICADOR_CAMBIO_DOLAR_PTAX</id>(.*?)</entry>`).FindStringSubmatch(c.cambio)
if data == nil {
return 0, errors.New("atributo não encontrado")
}
Expand All @@ -55,14 +60,14 @@ func (c *Cambio) GetDolarCompraPtax() (float64, error) {
}

func (c *Cambio) GetDolarVendaPtax() (float64, error) {
data := regexp.MustCompile(`INDICADOR_CAMBIO_DOLAR_PTAX(.*?)</entry>`).FindStringSubmatch(c.cambio)
data := regexp.MustCompile(`<entry>.*?<id>painel_indicadores_INDICADOR_CAMBIO_DOLAR_PTAX</id>(.*?)</entry>`).FindStringSubmatch(c.cambio)
if data == nil {
return 0, errors.New("atributo não encontrado")
return 0, errors.New("atributo INDICADOR_CAMBIO_DOLAR_PTAX não encontrado")
}

venda := regexp.MustCompile(`<div id=rate><div id=label>Venda</div><div id=value>(\d*[\.,]?\d+)</div>`).FindStringSubmatch(data[1])
if venda == nil {
return 0, errors.New("atributo não encontrado")
return 0, errors.New("atributo Venda não encontrado")
}

dolarVendaPtax, err := strconv.ParseFloat(strings.ReplaceAll(venda[1], ",", "."), 64)
Expand All @@ -74,17 +79,27 @@ func (c *Cambio) GetDolarVendaPtax() (float64, error) {
}

func (c *Cambio) GetDataDolarPtax() (string, error) {
data := regexp.MustCompile(`INDICADOR_CAMBIO_DOLAR_PTAX(.*?)</entry>`).FindStringSubmatch(c.cambio)
data := regexp.MustCompile(`<entry>.*?<id>painel_indicadores_INDICADOR_CAMBIO_DOLAR_PTAX</id>(.*?)</entry>`).FindStringSubmatch(c.cambio)
if data == nil {
return "", errors.New("atributo não encontrado")
return "", errors.New("atributo INDICADOR_CAMBIO_DOLAR_PTAX não encontrado")
}

search := regexp.MustCompile(`<div id=data>[a-zA-Z\s]*([\d/]+\s[\d:]+)</div>`).FindStringSubmatch(data[1])
if search == nil {
return "", errors.New("atributo não encontrado")
log.Println("data: ", data)

rate := regexp.MustCompile(`<div id=rate>.*?<div id=value>(\d*[\.,]?\d+)</div>`).FindStringSubmatch(data[1])
if rate == nil {
return "", errors.New("valor de PTAX não encontrado")
}

return search[1], nil
log.Println("rate", rate)

dataDolar := regexp.MustCompile(`<div id=data>([\d/]+\s[\d:]+)`).FindStringSubmatch(data[1])
if dataDolar == nil {
return "", errors.New("data de PTAX não encontrada")
}

ptaxValue := strings.ReplaceAll(rate[1], ",", ".")
return fmt.Sprintf("%s %s", ptaxValue, dataDolar[1]), nil
}

func (c *Cambio) GetDolarCompra() (float64, error) {
Expand Down
19 changes: 19 additions & 0 deletions main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package main

import (
"fmt"
"log"

bc "github.com/arferreira/banco-central-brasil/bancocentral"
)

func main() {
cambio := bc.NewCambio()
dataDolarPtax, err := cambio.GetDolarCompraPtax()
if err != nil {
log.Println("Error getting Dólar PTAX date:", err)
return
}
fmt.Printf("Dólar PTAX em %.2f\n", dataDolarPtax)

}

0 comments on commit c043b54

Please sign in to comment.