api

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 18, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func LatestSemester

func LatestSemester(periods []Period) string

LatestSemester returns the most recent semestre string like "2024.1"

Types

type AcademicData

type AcademicData struct {
	Ingresso          string `json:"ingresso"`
	EmailAcademico    string `json:"email_academico"`
	PeriodoReferencia int    `json:"periodo_referencia"`
	IRA               string `json:"ira"` // "81,05" — comma decimal
	Curso             string `json:"curso"`
	Matriz            string `json:"matriz"`
	QtdPeriodos       int    `json:"qtd_periodos"`
	Situacao          string `json:"situacao"`
}

Academic data — from /api/ensino/meus-dados-aluno/

func (AcademicData) CursoNome

func (a AcademicData) CursoNome() string

Short course name (removes code prefix and campus suffix)

func (AcademicData) IRAFloat

func (a AcademicData) IRAFloat() float64

type BoletimEntry added in v1.0.2

type BoletimEntry struct {
	CodigoDiario                      string      `json:"codigo_diario"`
	Disciplina                        string      `json:"disciplina"`
	CargaHoraria                      int         `json:"carga_horaria"`
	CargaHorariaCumprida              int         `json:"carga_horaria_cumprida"`
	NumeroFaltas                      int         `json:"numero_faltas"`
	PercentualCargaHorariaFrequentada float64     `json:"percentual_carga_horaria_frequentada"`
	Situacao                          string      `json:"situacao"`
	QuantidadeAvaliacoes              int         `json:"quantidade_avaliacoes"`
	NotaEtapa1                        BoletimNota `json:"nota_etapa_1"`
	NotaEtapa2                        BoletimNota `json:"nota_etapa_2"`
	NotaEtapa3                        BoletimNota `json:"nota_etapa_3"`
	NotaEtapa4                        BoletimNota `json:"nota_etapa_4"`
	MediaDisciplina                   *float64    `json:"media_disciplina"`
	NotaAvaliacaoFinal                BoletimNota `json:"nota_avaliacao_final"`
	MediaFinalDisciplina              *float64    `json:"media_final_disciplina"`
}

func (BoletimEntry) Notas added in v1.0.2

func (b BoletimEntry) Notas() []struct {
	Etapa  int
	Nota   float64
	Faltas int
}

Notas retorna as etapas com nota lançada

type BoletimNota added in v1.0.2

type BoletimNota struct {
	Nota   *float64 `json:"nota"`
	Faltas int      `json:"faltas"`
}

type CHBlock

type CHBlock struct {
	CHEsperada int `json:"ch_esperada"`
	CHCumprida int `json:"ch_cumprida"`
	CHPendente int `json:"ch_pendente"`
}

Completion requirements — from /api/ensino/requisitos-conclusao/

type Client

type Client struct {
	AccessToken  string
	RefreshToken string
	OnRefresh    func(access, refresh string)
	// contains filtered or unexported fields
}

func NewClient

func NewClient() *Client

func (*Client) GetAcademicData

func (c *Client) GetAcademicData() (*AcademicData, error)

func (*Client) GetBoletim added in v1.0.2

func (c *Client) GetBoletim(ano, periodo int) ([]BoletimEntry, error)

func (*Client) GetCompletionReqs

func (c *Client) GetCompletionReqs() (*CompletionReqs, error)

func (*Client) GetDiaries

func (c *Client) GetDiaries(semestre string) ([]Diary, error)

func (*Client) GetPeriods

func (c *Client) GetPeriods() ([]Period, error)

func (*Client) GetUnreadMessages

func (c *Client) GetUnreadMessages() (*MessagesResponse, error)

func (*Client) Login

func (c *Client) Login(matricula, senha string) (*TokenPair, error)

type CompletionReqs

type CompletionReqs struct {
	PercentualCumprida string  `json:"percentual_cumprida"` // "20.97"
	Obrigatorios       CHBlock `json:"regulares_obrigatorios"`
	Optativos          CHBlock `json:"regulares_optativos"`
}

func (CompletionReqs) Percentual

func (c CompletionReqs) Percentual() float64

type DayBlock

type DayBlock struct {
	Dia   string
	Start string
	End   string
}

DayBlock groups all horarios of a diary for a specific day

type Diary

type Diary struct {
	ID          int             `json:"id"`
	Disciplina  DiaryDisciplina `json:"disciplina"`
	Professores []Professor     `json:"professores"`
	Horarios    []DiaryHorario  `json:"horarios"`
	Local       *DiaryLocal     `json:"local"`
	// Boletim é preenchido após merge com /api/ensino/meu-boletim/
	Boletim *BoletimEntry `json:"-"`
}

func MergeBoletim added in v1.0.2

func MergeBoletim(diaries []Diary, boletim []BoletimEntry) []Diary

MergeBoletim faz o merge dos dados do boletim nos diários pelo codigo_diario

func (Diary) AbsenceUsagePct added in v1.0.2

func (d Diary) AbsenceUsagePct() float64

AbsenceUsagePct returns how much of the absence budget has been used (0-100+)

func (Diary) CargaHoraria added in v1.0.2

func (d Diary) CargaHoraria() int

func (Diary) CargaHorariaCumprida added in v1.0.2

func (d Diary) CargaHorariaCumprida() int

func (Diary) DayBlocks

func (d Diary) DayBlocks() map[string]DayBlock

func (Diary) Frequencia added in v1.0.2

func (d Diary) Frequencia() float64

func (Diary) MaxFaltas

func (d Diary) MaxFaltas() int

func (Diary) Nome added in v1.0.2

func (d Diary) Nome() string

func (Diary) NumeroFaltas added in v1.0.2

func (d Diary) NumeroFaltas() int

func (Diary) PodeEFaltar

func (d Diary) PodeEFaltar() int

func (Diary) ProfNames

func (d Diary) ProfNames() string

func (Diary) SalaShort

func (d Diary) SalaShort() string

type DiaryDisciplina

type DiaryDisciplina struct {
	ID         int     `json:"id"`
	Descricao  string  `json:"descricao"`
	Sigla      string  `json:"sigla"`
	CHTotal    int     `json:"ch_total_aula"`
	CHCumprida int     `json:"ch_cumprida_aula"`
	QtdFaltas  int     `json:"qtd_faltas"`
	Frequencia float64 `json:"frequencia"`
	Notas      []Note  `json:"notas"`
	Medias     []Media `json:"medias"`
}

type DiaryHorario

type DiaryHorario struct {
	Dia     string `json:"dia"`     // "Terça"
	Horario string `json:"horario"` // "13:00 - 13:45"
}

Diary structures — from /api/ensino/diarios/{semestre}/

func (DiaryHorario) End

func (h DiaryHorario) End() string

func (DiaryHorario) Start

func (h DiaryHorario) Start() string

type DiaryLocal

type DiaryLocal struct {
	ID   int    `json:"id"`
	Sala string `json:"sala"`
}

type Media

type Media struct {
	Descricao string  `json:"descricao"`
	Media     float64 `json:"media"`
}

type Message

type Message struct {
	ID        int    `json:"id"`
	Assunto   string `json:"assunto"`
	Data      string `json:"data"`
	Remetente string `json:"remetente"`
}

Messages

type MessagesResponse

type MessagesResponse struct {
	Results []Message `json:"results"`
	Count   int       `json:"count"`
}

type Note

type Note struct {
	Etapa int     `json:"etapa"`
	Nota  float64 `json:"nota"`
}

type PaginatedBoletim added in v1.0.2

type PaginatedBoletim struct {
	Results []BoletimEntry `json:"results"`
	Count   int            `json:"count"`
}

type PaginatedDiaries

type PaginatedDiaries struct {
	Results []Diary `json:"results"`
	Count   int     `json:"count"`
}

type PaginatedPeriods

type PaginatedPeriods struct {
	Results []Period `json:"results"`
	Count   int      `json:"count"`
}

type Period

type Period struct {
	AnoLetivo     int `json:"ano_letivo"`
	PeriodoLetivo int `json:"periodo_letivo"`
}

Periods — paginated

func LatestPeriod added in v1.0.2

func LatestPeriod(periods []Period) *Period

LatestPeriod returns the most recent Period struct

type Professor

type Professor struct {
	Nome  string `json:"nome"`
	Email string `json:"email"`
}

type TokenPair

type TokenPair struct {
	Access  string `json:"access"`
	Refresh string `json:"refresh"`
}

Auth

Jump to

Keyboard shortcuts

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