Documentation
¶
Overview ¶
Package wakapi implements the Wakapi coding-stats provider.
Index ¶
- Constants
- type AllTime
- type AllTimeRange
- type AllTimeResponse
- type HealthStatus
- type Heartbeat
- type HeartbeatsParams
- type HeartbeatsResult
- type Project
- type ProjectsResponse
- type Stats
- type StatsEntry
- type StatsParams
- type StatsResponse
- type Summary
- type SummaryItem
- type SummaryParams
- type Wakapi
- func (w *Wakapi) GetAllTime(ctx context.Context, user string) (*AllTime, error)
- func (w *Wakapi) GetStats(ctx context.Context, params StatsParams) (*Stats, error)
- func (w *Wakapi) GetSummary(ctx context.Context, params SummaryParams) (*Summary, error)
- func (w *Wakapi) Health(ctx context.Context) (*HealthStatus, error)
- func (w *Wakapi) ListHeartbeats(ctx context.Context, params HeartbeatsParams) (*HeartbeatsResult, error)
- func (w *Wakapi) ListProjects(ctx context.Context, query string) ([]Project, error)
Constants ¶
const ( ID = "wakapi" EndpointKey = "endpoint" APIKeyKey = "api_key" )
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
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
TotalSeconds sums project totals when the API omits a top-level total.
type SummaryItem ¶
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 ¶
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
GetAllTime returns cumulative coding time since account creation.
func (*Wakapi) GetStats ¶ added in v0.99.9
GetStats returns WakaTime-compatible statistics including total_seconds.
func (*Wakapi) GetSummary ¶
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).