Spaces:
Paused
Paused
simplify sheets no heavy deps
Browse files- go.mod +2 -26
- go.sum +6 -55
- internal/handler/sheets.go +13 -20
go.mod
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
module zai-proxy
|
| 2 |
|
| 3 |
-
go 1.
|
| 4 |
|
| 5 |
require (
|
| 6 |
github.com/corpix/uarand v0.2.0
|
|
@@ -9,28 +9,4 @@ require (
|
|
| 9 |
golang.org/x/net v0.53.0
|
| 10 |
)
|
| 11 |
|
| 12 |
-
require
|
| 13 |
-
cloud.google.com/go/auth v0.20.0 // indirect
|
| 14 |
-
cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect
|
| 15 |
-
cloud.google.com/go/compute/metadata v0.9.0 // indirect
|
| 16 |
-
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
| 17 |
-
github.com/felixge/httpsnoop v1.0.4 // indirect
|
| 18 |
-
github.com/go-logr/logr v1.4.3 // indirect
|
| 19 |
-
github.com/go-logr/stdr v1.2.2 // indirect
|
| 20 |
-
github.com/google/s2a-go v0.1.9 // indirect
|
| 21 |
-
github.com/googleapis/enterprise-certificate-proxy v0.3.15 // indirect
|
| 22 |
-
github.com/googleapis/gax-go/v2 v2.22.0 // indirect
|
| 23 |
-
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
| 24 |
-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect
|
| 25 |
-
go.opentelemetry.io/otel v1.43.0 // indirect
|
| 26 |
-
go.opentelemetry.io/otel/metric v1.43.0 // indirect
|
| 27 |
-
go.opentelemetry.io/otel/trace v1.43.0 // indirect
|
| 28 |
-
golang.org/x/crypto v0.50.0 // indirect
|
| 29 |
-
golang.org/x/oauth2 v0.36.0 // indirect
|
| 30 |
-
golang.org/x/sys v0.43.0 // indirect
|
| 31 |
-
golang.org/x/text v0.36.0 // indirect
|
| 32 |
-
google.golang.org/api v0.277.0 // indirect
|
| 33 |
-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 // indirect
|
| 34 |
-
google.golang.org/grpc v1.80.0 // indirect
|
| 35 |
-
google.golang.org/protobuf v1.36.11 // indirect
|
| 36 |
-
)
|
|
|
|
| 1 |
module zai-proxy
|
| 2 |
|
| 3 |
+
go 1.25.0
|
| 4 |
|
| 5 |
require (
|
| 6 |
github.com/corpix/uarand v0.2.0
|
|
|
|
| 9 |
golang.org/x/net v0.53.0
|
| 10 |
)
|
| 11 |
|
| 12 |
+
require github.com/stretchr/testify v1.11.1 // indirect
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
go.sum
CHANGED
|
@@ -1,65 +1,16 @@
|
|
| 1 |
-
cloud.google.com/go/auth v0.20.0 h1:kXTssoVb4azsVDoUiF8KvxAqrsQcQtB53DcSgta74CA=
|
| 2 |
-
cloud.google.com/go/auth v0.20.0/go.mod h1:942/yi/itH1SsmpyrbnTMDgGfdy2BUqIKyd0cyYLc5Q=
|
| 3 |
-
cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc=
|
| 4 |
-
cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c=
|
| 5 |
-
cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
|
| 6 |
-
cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
|
| 7 |
-
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
| 8 |
-
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
| 9 |
github.com/corpix/uarand v0.2.0 h1:U98xXwud/AVuCpkpgfPF7J5TQgr7R5tqT8VZP5KWbzE=
|
| 10 |
github.com/corpix/uarand v0.2.0/go.mod h1:/3Z1QIqWkDIhf6XWn/08/uMHoQ8JUoTIKc2iPchBOmM=
|
| 11 |
-
github.com/davecgh/go-spew v1.1.
|
| 12 |
-
github.com/davecgh/go-spew v1.1.
|
| 13 |
-
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
| 14 |
-
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
| 15 |
-
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
| 16 |
-
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
|
| 17 |
-
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
| 18 |
-
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
|
| 19 |
-
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
|
| 20 |
-
github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0=
|
| 21 |
-
github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM=
|
| 22 |
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
| 23 |
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
| 24 |
-
github.com/googleapis/enterprise-certificate-proxy v0.3.15 h1:xolVQTEXusUcAA5UgtyRLjelpFFHWlPQ4XfWGc7MBas=
|
| 25 |
-
github.com/googleapis/enterprise-certificate-proxy v0.3.15/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg=
|
| 26 |
-
github.com/googleapis/gax-go/v2 v2.22.0 h1:PjIWBpgGIVKGoCXuiCoP64altEJCj3/Ei+kSU5vlZD4=
|
| 27 |
-
github.com/googleapis/gax-go/v2 v2.22.0/go.mod h1:irWBbALSr0Sk3qlqb9SyJ1h68WjgeFuiOzI4Rqw5+aY=
|
| 28 |
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
| 29 |
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
| 30 |
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
| 31 |
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
| 32 |
-
github.com/stretchr/testify v1.
|
| 33 |
-
github.com/stretchr/testify v1.
|
| 34 |
-
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
| 35 |
-
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
| 36 |
-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o=
|
| 37 |
-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg=
|
| 38 |
-
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
|
| 39 |
-
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
|
| 40 |
-
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
|
| 41 |
-
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
|
| 42 |
-
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
|
| 43 |
-
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
|
| 44 |
-
golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
|
| 45 |
-
golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
|
| 46 |
-
golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
|
| 47 |
-
golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
|
| 48 |
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
|
| 49 |
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
|
| 53 |
-
golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
| 54 |
-
golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
|
| 55 |
-
golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
|
| 56 |
-
google.golang.org/api v0.277.0 h1:HJfyJUiNeBBUMai7ez8u14wkp/gH/I4wpGbbO9o+cSk=
|
| 57 |
-
google.golang.org/api v0.277.0/go.mod h1:B9TqLBwJqVjp1mtt7WeoQwWRwvu/400y5lETOql+giQ=
|
| 58 |
-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 h1:tEkOQcXgF6dH1G+MVKZrfpYvozGrzb91k6ha7jireSM=
|
| 59 |
-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8=
|
| 60 |
-
google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM=
|
| 61 |
-
google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4=
|
| 62 |
-
google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
|
| 63 |
-
google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
|
| 64 |
-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
| 65 |
-
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
github.com/corpix/uarand v0.2.0 h1:U98xXwud/AVuCpkpgfPF7J5TQgr7R5tqT8VZP5KWbzE=
|
| 2 |
github.com/corpix/uarand v0.2.0/go.mod h1:/3Z1QIqWkDIhf6XWn/08/uMHoQ8JUoTIKc2iPchBOmM=
|
| 3 |
+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
| 4 |
+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
| 6 |
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
| 8 |
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
| 9 |
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
| 10 |
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
| 11 |
+
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
|
| 12 |
+
github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
|
| 14 |
golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
|
| 15 |
+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
| 16 |
+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
internal/handler/sheets.go
CHANGED
|
@@ -1,31 +1,24 @@
|
|
| 1 |
package handler
|
| 2 |
|
| 3 |
import (
|
| 4 |
-
"
|
| 5 |
"encoding/json"
|
|
|
|
|
|
|
| 6 |
"os"
|
| 7 |
-
"
|
| 8 |
-
"google.golang.org/api/option"
|
| 9 |
-
"google.golang.org/api/sheets/v4"
|
| 10 |
)
|
| 11 |
|
| 12 |
var sheetID = os.Getenv("GOOGLE_SHEET_ID")
|
| 13 |
-
|
| 14 |
-
func getSheetService() (*sheets.Service, error) {
|
| 15 |
-
creds := os.Getenv("GOOGLE_CREDS")
|
| 16 |
-
conf, err := google.JWTConfigFromJSON([]byte(creds), sheets.SpreadsheetsScope)
|
| 17 |
-
if err != nil { return nil, err }
|
| 18 |
-
client := conf.Client(context.Background())
|
| 19 |
-
return sheets.NewService(context.Background(), option.WithHTTPClient(client))
|
| 20 |
-
}
|
| 21 |
|
| 22 |
func BackupKeyToSheet(name, key string) {
|
| 23 |
-
if sheetID == "" { return }
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
|
| 29 |
-
|
| 30 |
-
|
| 31 |
}
|
|
|
|
| 1 |
package handler
|
| 2 |
|
| 3 |
import (
|
| 4 |
+
"bytes"
|
| 5 |
"encoding/json"
|
| 6 |
+
"fmt"
|
| 7 |
+
"net/http"
|
| 8 |
"os"
|
| 9 |
+
"time"
|
|
|
|
|
|
|
| 10 |
)
|
| 11 |
|
| 12 |
var sheetID = os.Getenv("GOOGLE_SHEET_ID")
|
| 13 |
+
var sheetKey = os.Getenv("GOOGLE_API_KEY")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 14 |
|
| 15 |
func BackupKeyToSheet(name, key string) {
|
| 16 |
+
if sheetID == "" || sheetKey == "" { return }
|
| 17 |
+
url := fmt.Sprintf(
|
| 18 |
+
"https://sheets.googleapis.com/v4/spreadsheets/%s/values/Sheet1!A:C:append?valueInputOption=RAW&key=%s",
|
| 19 |
+
sheetID, sheetKey)
|
| 20 |
+
body, _ := json.Marshal(map[string]interface{}{
|
| 21 |
+
"values": [][]interface{}{{name, key, time.Now().Format("2006-01-02")}},
|
| 22 |
+
})
|
| 23 |
+
http.Post(url, "application/json", bytes.NewReader(body))
|
| 24 |
}
|