wakapi

package
v0.99.12 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2026 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

Package wakapi implements the Wakapi coding-stats provider.

Index

Constants

View Source
const (
	ID          = "wakapi"
	EndpointKey = "endpoint"
	APIKeyKey   = "api_key"
)
View Source
const CurrentUser = "current"

Variables

This section is empty.

Functions

This section is empty.

Types

type AllTime added in v0.99.9

type AllTime struct {
	TotalSeconds float64      `json:"total_seconds"`
	Text         string       `json:"text"`
	IsUpToDate   bool         `json:"is_up_to_date"`
	Range        AllTimeRange `json:"range"`
}

AllTime holds cumulative coding time since account creation.

type AllTimeRange added in v0.99.9

type AllTimeRange struct {
	Start     string `json:"start"`
	End       string `json:"end"`
	StartDate string `json:"start_date"`
	EndDate   string `json:"end_date"`
	Timezone  string `json:"timezone"`
}

AllTimeRange is the date span for all-time stats.

type AllTimeResponse added in v0.99.9

type AllTimeResponse struct {
	Data AllTime `json:"data"`
}

AllTimeResponse wraps all-time stats.

type HealthStatus added in v0.99.9

type HealthStatus struct {
	AppOK bool   `json:"app_ok"`
	DBOK  bool   `json:"db_ok"`
	Raw   string `json:"raw,omitzero"`
}

HealthStatus reports Wakapi application and database health.

type Heartbeat added in v0.99.9

type Heartbeat struct {
	ID               string  `json:"id"`
	UserID           string  `json:"user_id"`
	Time             float64 `json:"time"`
	Project          string  `json:"project"`
	Entity           string  `json:"entity"`
	Language         string  `json:"language"`
	Branch           string  `json:"branch"`
	Category         string  `json:"category"`
	IsWrite          bool    `json:"is_write"`
	Type             string  `json:"type"`
	CreatedAt        string  `json:"created_at"`
	LineAdditions    int     `json:"line_additions"`
	LineDeletions    int     `json:"line_deletions"`
	HumanLineChanges int     `json:"human_line_changes"`
}

Heartbeat is a single Wakapi heartbeat entry.

type HeartbeatsParams added in v0.99.9

type HeartbeatsParams struct {
	User string
	Date string
}

HeartbeatsParams holds query parameters for listing heartbeats.

type HeartbeatsResult added in v0.99.9

type HeartbeatsResult struct {
	Data     []Heartbeat `json:"data"`
	Start    string      `json:"start"`
	End      string      `json:"end"`
	Timezone string      `json:"timezone"`
}

HeartbeatsResult wraps heartbeat list for a date.

type Project

type Project struct {
	ID                         string `json:"id"`
	Name                       string `json:"name"`
	LastHeartbeatAt            string `json:"last_heartbeat_at"`
	HumanReadableLastHeartbeat string `json:"human_readable_last_heartbeat_at"`
	URLEncodedName             string `json:"urlencoded_name"`
	CreatedAt                  string `json:"created_at"`
}

Project is a Wakapi tracked project.

type ProjectsResponse

type ProjectsResponse struct {
	Data []Project `json:"data"`
}

ProjectsResponse wraps WakaTime-compatible project list.

type Stats added in v0.99.9

type Stats struct {
	TotalSeconds              float64      `json:"total_seconds"`
	HumanReadableTotal        string       `json:"human_readable_total"`
	HumanReadableRange        string       `json:"human_readable_range"`
	HumanReadableDailyAverage string       `json:"human_readable_daily_average"`
	DailyAverage              float64      `json:"daily_average"`
	Range                     string       `json:"range"`
	Start                     string       `json:"start"`
	End                       string       `json:"end"`
	Status                    string       `json:"status"`
	Timezone                  string       `json:"timezone"`
	UserID                    string       `json:"user_id"`
	Username                  string       `json:"username"`
	Projects                  []StatsEntry `json:"projects"`
	Languages                 []StatsEntry `json:"languages"`
	Editors                   []StatsEntry `json:"editors"`
	Categories                []StatsEntry `json:"categories"`
	OperatingSystems          []StatsEntry `json:"operating_systems"`
	Machines                  []StatsEntry `json:"machines"`
	Branches                  []StatsEntry `json:"branches"`
}

Stats is WakaTime-compatible activity statistics.

type StatsEntry added in v0.99.9

type StatsEntry struct {
	Name         string  `json:"name"`
	Seconds      int     `json:"seconds"`
	TotalSeconds float64 `json:"total_seconds"`
	Percent      float64 `json:"percent"`
	Text         string  `json:"text"`
	Hours        int     `json:"hours"`
	Minutes      int     `json:"minutes"`
	Digital      string  `json:"digital"`
}

StatsEntry is a named bucket in WakaTime-compatible stats.

type StatsParams added in v0.99.9

type StatsParams struct {
	User            string
	Range           string
	Project         string
	Language        string
	Editor          string
	OperatingSystem string
	Machine         string
	Label           string
}

StatsParams holds query parameters for WakaTime-compatible stats.

type StatsResponse added in v0.99.9

type StatsResponse struct {
	Data Stats `json:"data"`
}

StatsResponse wraps WakaTime-compatible stats.

type Summary

type Summary struct {
	UserID           string        `json:"user_id"`
	From             string        `json:"from"`
	To               string        `json:"to"`
	Projects         []SummaryItem `json:"projects"`
	Languages        []SummaryItem `json:"languages"`
	Editors          []SummaryItem `json:"editors"`
	Categories       []SummaryItem `json:"categories"`
	OperatingSystems []SummaryItem `json:"operating_systems"`
	Machines         []SummaryItem `json:"machines"`
	Branches         []SummaryItem `json:"branches"`
	Entities         []SummaryItem `json:"entities"`
	Labels           []SummaryItem `json:"labels"`
}

Summary is the native Wakapi /api/summary response.

func (*Summary) TotalSeconds added in v0.99.9

func (s *Summary) TotalSeconds() int64

TotalSeconds sums project totals when the API omits a top-level total.

type SummaryItem

type SummaryItem struct {
	Key   string `json:"key"`
	Total int64  `json:"total"`
}

SummaryItem is a named duration bucket in a native summary.

type SummaryParams added in v0.99.9

type SummaryParams struct {
	Interval        string
	From            string
	To              string
	Recompute       *bool
	Project         string
	Language        string
	Editor          string
	OperatingSystem string
	Machine         string
	Label           string
}

SummaryParams holds query parameters for GET /api/summary.

type Wakapi

type Wakapi struct {
	// contains filtered or unexported fields
}

Wakapi is an HTTP client for the Wakapi API.

func GetClient

func GetClient() *Wakapi

GetClient builds a Wakapi client from vendors.wakapi config. Returns nil when endpoint is not configured.

func NewWakapi

func NewWakapi(endpoint, apiKey string) *Wakapi

NewWakapi creates a Wakapi client. Auth uses Basic base64(api_key). Returns nil when endpoint is empty.

func (*Wakapi) GetAllTime added in v0.99.9

func (w *Wakapi) GetAllTime(ctx context.Context, user string) (*AllTime, error)

GetAllTime returns cumulative coding time since account creation.

func (*Wakapi) GetStats added in v0.99.9

func (w *Wakapi) GetStats(ctx context.Context, params StatsParams) (*Stats, error)

GetStats returns WakaTime-compatible statistics including total_seconds.

func (*Wakapi) GetSummary

func (w *Wakapi) GetSummary(ctx context.Context, params SummaryParams) (*Summary, error)

GetSummary returns a native activity summary for the given interval or date range.

func (*Wakapi) Health added in v0.99.9

func (w *Wakapi) Health(ctx context.Context) (*HealthStatus, error)

Health checks GET /api/health (no auth required).

func (*Wakapi) ListHeartbeats added in v0.99.9

func (w *Wakapi) ListHeartbeats(ctx context.Context, params HeartbeatsParams) (*HeartbeatsResult, error)

ListHeartbeats returns heartbeats for a user on a given date (YYYY-MM-DD).

func (*Wakapi) ListProjects

func (w *Wakapi) ListProjects(ctx context.Context, query string) ([]Project, error)

ListProjects returns tracked projects (WakaTime-compatible).

Jump to

Keyboard shortcuts

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