gufu

package module
v0.0.0-...-7e3b5ba Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 18, 2025 License: Apache-2.0 Imports: 18 Imported by: 0

README

gufu

Uma biblioteca em Go para interagir com a API da UFU.

Go API Reference

Funcionalidades

LoginViaSSO(usuário, senha string)

Realiza o login no sistema da UFU usando a API do SSO. Retorna um ponteiro para DadosSSO e um erro.

ObterIdUfu(id string)

Obtém as informações de uma identidade digital da UFU. Retorna um ponteiro para IdUfu e um erro.

ObterTodosOsCardapios()

Obtém todos os cardápios de refeições da UFU. Retorna um slice de Cardapio e um erro.

ObterCardapiosFuturosPorCampus(campus string)

Obtém os cardápios futuros de refeições da UFU para um campus específico. Retorna um slice de Cardapio e um erro.

ObterCardapioPorCampus(campus string)

Obtém o cardápio de refeições da UFU para um campus específico. Retorna um ponteiro para Cardapio e um erro.

Descriptografar(texto)

Descriptografa as respostas da API do aplicativo móvel da UFU. Retorna um JSON descriptografado e um erro.

Criptografar(texto)

Prepara um JSON para ser enviado para a API do aplicativo móvel da UFU. Retorna um JSON criptografado e um erro.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrDadosLoginVazio          = errors.New("login ou senha estão vazios")
	ErrCpfInvalido              = errors.New("cpf inválido")
	ErrIdUfuTamanhoInvalido     = errors.New("tamanho do id ufu inválido")
	ErrDadosLoginIncorretos     = errors.New("usuário ou senha estão incorretos")
	ErrAlgoDeuErradoGenerico    = errors.New("o servidor retornou uma resposta vazia")
	ErrRespostaInvalidaServidor = errors.New("o servidor remoto nos enviou uma resposta invalida")
	ErrNãoHáRefeições           = errors.New("não há refeições agendadas para hoje") //Erro retornado quando não há refeições agendadas para hoje.
	ErrCampusInvalido           = errors.New("campus inválido")
)
View Source
var Campi = map[string]Campus{
	"sm": {ID: 277, Nome: "Santa Mônica"},
	"um": {ID: 279, Nome: "Umuarama"},
	"gl": {ID: 1747, Nome: "Glória"},
	"po": {ID: 278, Nome: "Pontal"},
	"mc": {ID: 6097, Nome: "Monte Carmelo"},
}
View Source
var (
	ClienteHTTP = http.Client{
		Timeout: 15 * time.Second,
	} //Cliente HTTP usado em todas as requsições, com timeout de 15 segundos. Pode ser alterado para atender necessidades específicas.

)

Functions

func Criptografar

func Criptografar(json string) (string, error)

A função Criptografar prepara um JSON (requestParams) para ser enviado para a API do aplicativo móvel da UFU. Retorna um JSON criptografado e um erro.

func Descriptografar

func Descriptografar(corpo string) (string, error)

A função Descriptografar descriptografa a respostas da API do aplicativo móvel da UFU. Retorna um JSON descriptografado e um erro.

Types

type Campus

type Campus struct {
	ID   int
	Nome string
}

type Cardapio

type Cardapio struct {
	Titulo            string `json:"titulo"`             //Título do restaurante (Ex: 2024/12/16 - Cardápio Restaurante Universitário - Santa Mônica)
	Local             string `json:"local"`              //Local do restaurante (Ex: Restaurante Universitário - Santa Mônica)
	Mensagem          string `json:"mensagem"`           //Alguma mensagem do restaurante, não parece ser usado
	PrincipalAlmoco   string `json:"principal_almoco"`   //Proteina principal do almoço
	VegetarianoAlmoco string `json:"vegetariano_almoco"` //Proteina vegetariana do almoço
	ArrozAlmoco       string `json:"arroz_almoco"`       //Tipo de arroz do almoço
	FeijaoAlmoco      string `json:"feijao_almoco"`      //Tipo de feijão do almoço
	GuarnicaoAlmoco   string `json:"guarnicao_almoco"`   //Guarnição do almoço
	SaladaAlmoco      string `json:"salada_almoco"`      //Salada do almoço
	SobremesaAlmoco   string `json:"sobremesa_almoco"`   //Sobremesa do almoço
	SucoAlmoco        string `json:"suco_almoco"`        //Suco do almoço
	Data              string `json:"data"`               //Data do cardápio (Ex: 16/12/2024)
	PrincipalJantar   string `json:"principal_jantar"`   //Proteina principal do jantar
	VegetarianoJantar string `json:"vegetariano_jantar"` //Proteina vegetariana do jantar
	ArrozJantar       string `json:"arroz_jantar"`       //Tipo de arroz do jantar
	FeijaoJantar      string `json:"feijao_jantar"`      //Tipo de feijão do jantar
	GuarnicaoJantar   string `json:"guarnicao_jantar"`   //Guarnição do jantar
	SaladaJantar      string `json:"salada_jantar"`      //Salada do jantar
	SobremesaJantar   string `json:"sobremesa_jantar"`   //Sobremesa do jantar
	SucoJantar        string `json:"suco_jantar"`        //Suco do jantar
	Nid               string `json:"nid"`                //ID interno do cardápio
}

A estrutura Cardapio contém as informações de um cardápio de refeições da UFU. É retornado na função ObterTodosOsCardapios.

func ObterCardapioPorCampus

func ObterCardapioPorCampus(campus string) (*Cardapio, error)

func ObterCardapiosFuturosPorCampus

func ObterCardapiosFuturosPorCampus(campus string) ([]Cardapio, error)

func ObterTodosOsCardapios

func ObterTodosOsCardapios() ([]Cardapio, error)

ObterTodosOsCardapios é a função que obtém todos os cardápios de refeições da UFU. Retorna um slice de Cardapio e um erro.

type DadosLoginMobile

type DadosLoginMobile struct {
	ResultType    string      `json:"resultType"`    //Descrição do tipo do resultado. Sempre "SUCCESS" se o login for bem sucedido.
	ResultCode    string      `json:"resultCode"`    //Código do resultado. Sempre "s.0002" se o login for bem sucedido.
	Nome          string      `json:"nome"`          //Nome do usuário.
	Token         string      `json:"token"`         //Token de autenticação.
	Perfis        []Perfis    `json:"perfis"`        //Perfis do usuário.
	PerfilAtivo   PerfilAtivo `json:"perfilAtivo"`   //Perfil ativo do usuário.
	Email         *string     `json:"email"`         //Email do usuário, pode ser nulo.
	Avatar        string      `json:"avatar"`        //Avatar do usuário, em base64.
	DataExpMillis int64       `json:"dataExpMillis"` //Data de expiração do token, Unix timestamp em milisegundos.
}

func LoginViaMobile

func LoginViaMobile(email, senha string) (*DadosLoginMobile, error)

func (*DadosLoginMobile) BuscarIdentidadeDigital

func (d *DadosLoginMobile) BuscarIdentidadeDigital() (*IdentidadeDigital, error)

type DadosSSO

type DadosSSO struct {
	Cpf           string         `json:"cpf"`             //CPF do usuário
	Nome          string         `json:"nome"`            //Nome do usuário
	Chave         string         `json:"chave"`           //Token de autenticação
	Email         string         `json:"email"`           //Email do usuário
	ExpiraEm      int            `json:"expira_em"`       //Data de expiração do token de autenticação, Unix timestamp em milisegundos
	IDPessoa      int            `json:"id_pessoa"`       //ID interno da pessoa
	EmitidoEm     int            `json:"emitido_em"`      //Data de emissão do token de autenticação , Unix timestamp em milisegundos
	AccessTokenID string         `json:"access_token_id"` //ID do token de autenticação
	Roles         []string       `json:"roles"`           //Perfis do usuário
	Perfis        string         `json:"perfis"`          //Quantidade de perfis do usuário
	Cookies       []*http.Cookie //Cookies da sessão
}

DadosSSO é a estrutura que contém as informações do usuário autenticado no SSO. É retornado na função LoginViaSSO.

func LoginViaSSO

func LoginViaSSO(email, senha string) (*DadosSSO, error)

LoginViaSSO é a função que realiza o login no sistema da UFU usando a api do SSO. Retorna um ponteiro para DadosSSO e um erro.

type ErrorMobile

type ErrorMobile struct {
	Timestamp int64  `json:"timestamp"` //Timestamp do erro
	Status    int    `json:"status"`    //Status http do erro
	Error     string `json:"error"`     //Tipo do erro
	Exception string `json:"exception"` //Exceção do erro
	Message   string `json:"message"`   //Mensagem do erro
	Path      string `json:"path"`      //Caminho do erro
}

type IdUfu

type IdUfu struct {
	ID                int    `json:"id"`                //ID da identidade digital
	Matricula         string `json:"matricula"`         //Matrícula do aluno
	Nome              string `json:"nome"`              //Nome do aluno
	NomePai           string `json:"nomePai"`           //Nome do pai do aluno. Pode ser vazio
	NomeMae           string `json:"nomeMae"`           //Nome da mãe do aluno.
	RG                string `json:"rg"`                //RG do aluno
	OrgaoEmissor      string `json:"orgaoEmissor"`      //Órgão emissor do RG
	CPF               string `json:"cpf"`               //CPF do aluno
	Naturalidade      string `json:"naturalidade"`      //Naturalidade do aluno
	Vinculo           string `json:"vinculo"`           //Vínculo (aluno, servidor, etc)
	DataNascimento    int64  `json:"dataNascimento"`    //Data de nascimento do aluno, Unix timestamp em milisegundos
	CodigoBarra       string `json:"codigoBarra"`       //Dado do QR Code da identidade digital
	Informacao        string `json:"informacao"`        //Curso, tipo de curso e turno (Ex: "Graduação em Sistemas de Informação: Bacharelado - Noturno")
	SituacaoDescricao string `json:"situacaoDescricao"` //Situação da identidade digital
	Situacao          int    `json:"situacao"`          //Situação da identidade digital, 3 = Ativa
	Foto              string `json:"foto"`              //Foto em base64
}

A estrutura IdUfu contém as informações de uma identidade digital da UFU. É retornado na função ObterIdUfu.

func ObterIdUfu

func ObterIdUfu(id string) (*IdUfu, error)

ObterIdUfu é a função que obtém as informações de uma identidade digital da UFU. Retorna um ponteiro para IdUfu e um erro. O parâmetro id é o número da identidade digital, presente no QR Code. Por exemplo, para o QR Code "https://www.sistemas.ufu.br/valida-ufu/#/id-digital/123123456789", o id é "123123456789".

type IdentidadeDigital

type IdentidadeDigital struct {
	Situacao          string    `json:"situacao"`          //Situação da identidade digital, 3 = Ativa
	Nome              string    `json:"nome"`              //Nome do aluno
	Naturalidade      string    `json:"naturalidade"`      //Naturalidade do aluno
	Informacao        string    `json:"informacao"`        //Curso, tipo de curso e turno (Ex: "Graduação em Sistemas de Informação: Bacharelado - Noturno")
	CodigoBarra       string    `json:"codigoBarra"`       //Dado do QR Code da identidade digital
	Foto              string    `json:"foto"`              //Foto em base64
	Rg                string    `json:"rg"`                //RG do aluno
	OrgaoEmissor      string    `json:"orgaoEmissor"`      //Órgão emissor do RG
	Matricula         string    `json:"matricula"`         //Matrícula do aluno
	Cpf               string    `json:"cpf"`               //CPF do aluno
	NomePai           string    `json:"nomePai"`           //Nome do pai do aluno. Pode ser vazio
	Vinculo           string    `json:"vinculo"`           //Vínculo (aluno, servidor, etc)
	ID                string    `json:"id"`                //ID do aluno no sistema
	DataNascimento    time.Time `json:"dataNascimento"`    //Data de nascimento do aluno,
	NomeMae           string    `json:"nomeMae"`           //Nome da mãe do aluno.
	SituacaoDescricao string    `json:"situacaoDescricao"` //Situação da identidade digital
	DataValidade      time.Time `json:"dataValidade"`      //Data de validade do cartão
}

type PerfilAtivo

type PerfilAtivo struct {
	IDPerfil       int    `json:"idPerfil"`       //ID do perfil
	NomePerfil     string `json:"nomePerfil"`     //Nome do perfil
	TipoPerfil     string `json:"tipoPerfil"`     //Tipo do perfil
	NomeTipoPerfil string `json:"nomeTipoPerfil"` //Nome do tipo do perfil
	Selecionado    bool   `json:"selecionado"`    //Se o perfil está selecionado
}

type Perfis

type Perfis struct {
	IDPerfil       int    `json:"idPerfil"`       //ID do perfil
	NomePerfil     string `json:"nomePerfil"`     //Nome do perfil
	TipoPerfil     string `json:"tipoPerfil"`     //Tipo do perfil
	NomeTipoPerfil string `json:"nomeTipoPerfil"` //Nome do tipo do perfil
	Selecionado    bool   `json:"selecionado"`    //Se o perfil está selecionado
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL