api

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 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 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) 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"`
}

func (Diary) DayBlocks

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

func (Diary) MaxFaltas

func (d Diary) MaxFaltas() 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 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

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