42 lines · 1.2 KB · Go
RawDownload
package home import (	"context"	"encoding/json"	"fmt"	"strings"	"time" 	"github.com/router-for-me/CLIProxyAPI/v7/internal/homeplugins") const pluginStatusReportTimeout = 10 * time.Second // PluginStatusClient defines the interface for pushing plugin status reports.type PluginStatusClient interface {	RPushPluginStatus(ctx context.Context, payload []byte) error} // ReportPluginStatus marshals the given report, sets NodeID and UpdatedAt,// and pushes it to the provided client with a timeout.func ReportPluginStatus(ctx context.Context, client PluginStatusClient, nodeID string, report homeplugins.SyncReport) error {	if client == nil {		return fmt.Errorf("home plugin status client is unavailable")	}	nodeID = strings.TrimSpace(nodeID)	if nodeID == "" {		return fmt.Errorf("home plugin status node id is empty")	}	report.NodeID = nodeID	report.UpdatedAt = time.Now().UTC()	raw, errMarshal := json.Marshal(report)	if errMarshal != nil {		return errMarshal	}	if ctx == nil {		ctx = context.Background()	}	reportCtx, cancel := context.WithTimeout(ctx, pluginStatusReportTimeout)	defer cancel()	return client.RPushPluginStatus(reportCtx, raw)}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t