From 1baf3fb6bdab1a6f64cf05e8512e8d2cfa4166cc Mon Sep 17 00:00:00 2001 From: Xiangyuan Liu Date: Mon, 17 Jun 2024 19:02:09 +0800 Subject: [PATCH] first commit --- .github/ISSUE_TEMPLATE/bug_report.md | 26 +++ .github/ISSUE_TEMPLATE/config.yml | 2 + .github/ISSUE_TEMPLATE/feature_request.md | 21 +++ .github/workflows/deploy-docker.yml | 18 ++ .idea/.gitignore | 5 + .idea/luma-api.iml | 9 + .idea/modules.xml | 8 + Dockerfile | 24 +++ README.md | Bin 0 -> 6464 bytes README_ZH.md | Bin 0 -> 4148 bytes api.go | 117 ++++++++++++ common/envs.go | 20 ++ common/log.go | 95 ++++++++++ common/utils.go | 200 ++++++++++++++++++++ docker-compose.yml | 14 ++ docs/docs.go | 154 ++++++++++++++++ docs/images/cookie.jpg | Bin 0 -> 149999 bytes docs/images/zanshangcode.jpg | Bin 0 -> 99605 bytes docs/swagger.json | 124 +++++++++++++ docs/swagger.yaml | 81 +++++++++ go.mod | 66 +++++++ go.sum | 211 ++++++++++++++++++++++ license | 21 +++ main.go | 48 +++++ middleware/logger.go | 42 +++++ middleware/request-id.go | 20 ++ models.go | 25 +++ request.go | 67 +++++++ router.go | 23 +++ 29 files changed, 1441 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/workflows/deploy-docker.yml create mode 100644 .idea/.gitignore create mode 100644 .idea/luma-api.iml create mode 100644 .idea/modules.xml create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 README_ZH.md create mode 100644 api.go create mode 100644 common/envs.go create mode 100644 common/log.go create mode 100644 common/utils.go create mode 100644 docker-compose.yml create mode 100644 docs/docs.go create mode 100644 docs/images/cookie.jpg create mode 100644 docs/images/zanshangcode.jpg create mode 100644 docs/swagger.json create mode 100644 docs/swagger.yaml create mode 100644 go.mod create mode 100644 go.sum create mode 100644 license create mode 100644 main.go create mode 100644 middleware/logger.go create mode 100644 middleware/request-id.go create mode 100644 models.go create mode 100644 request.go create mode 100644 router.go diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..1e2800c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,26 @@ +--- +name: 报告问题 +about: 使用简练详细的语言描述你遇到的问题 +title: '' +labels: bug +assignees: '' + +--- + +**例行检查** + +[//]: # (方框内删除已有的空格,填 x 号) ++ [ ] 我已确认目前没有类似 issue ++ [ ] 我已确认我已升级到最新版本 ++ [ ] 我已完整查看过项目 README,尤其是常见问题部分 ++ [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈 ++ [ ] 我理解并认可上述内容,并理解项目维护者精力有限,**不遵循规则的 issue 可能会被无视或直接关闭** + +**问题描述** + +**复现步骤** + +**预期结果** + +**相关截图** +如果没有的话,请删除此节。 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..da39fd1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,2 @@ +blank_issues_enabled: false +contact_links: "" diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..c4e2960 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,21 @@ +--- +name: 功能请求 +about: 使用简练详细的语言描述希望加入的新功能 +title: '' +labels: enhancement +assignees: '' + +--- + +**例行检查** + +[//]: # (方框内删除已有的空格,填 x 号) ++ [ ] 我已确认目前没有类似 issue ++ [ ] 我已确认我已升级到最新版本 ++ [ ] 我已完整查看过项目 README,已确定现有版本无法满足需求 ++ [ ] 我理解并愿意跟进此 issue,协助测试和提供反馈 ++ [ ] 我理解并认可上述内容,并理解项目维护者精力有限,**不遵循规则的 issue 可能会被无视或直接关闭** + +**功能描述** + +**应用场景** diff --git a/.github/workflows/deploy-docker.yml b/.github/workflows/deploy-docker.yml new file mode 100644 index 0000000..6ad70b7 --- /dev/null +++ b/.github/workflows/deploy-docker.yml @@ -0,0 +1,18 @@ +name: Docker Image CI/CD +on: + push: + branches: [ main ] +jobs: + # 构建并上传 Docker镜像 + build: + runs-on: ubuntu-latest # 依赖的环境 + steps: + - uses: actions/checkout@v2 + - name: Build Image + run: | + docker build --platform linux/amd64 -t lumaapi/luma-api . + - name: Login to Registry + run: docker login --username=${{ secrets.DOCKER_USERNAME }} --password ${{ secrets.DOCKER_PASSWORD }} + - name: Push Image + run: | + docker push lumaapi/luma-api \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..bf2de99 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# 默认忽略的文件 +/shelf/ +/workspace.xml +# 基于编辑器的 HTTP 客户端请求 +/httpRequests/ diff --git a/.idea/luma-api.iml b/.idea/luma-api.iml new file mode 100644 index 0000000..338a266 --- /dev/null +++ b/.idea/luma-api.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..2304ff0 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..95360fa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM golang AS builder + +ENV GO111MODULE=on \ + GOOS=linux \ + GOPROXY=https://goproxy.cn,direct + +WORKDIR /build +ADD go.mod go.sum ./ +RUN go mod download +COPY . . +RUN go build -ldflags "-s -w -extldflags '-static'" -o lumaApi + +FROM alpine:latest + +RUN apk update \ + && apk upgrade \ + && apk add --no-cache ca-certificates tzdata gcc \ + && update-ca-certificates 2>/dev/null || true + +COPY --from=builder /build/lumaApi / + +EXPOSE 8000 + +ENTRYPOINT ["/lumaApi"] diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..dbadd78228769fdb1b0f0603e4a8f47e20ad8d20 GIT binary patch literal 6464 zcmchc&2C#&5XWZ=5C7ZA6-w*oBr*1;=(0w~lT65jUti7A(5r z1z53R#iOw8gRlnvzcW5Q*B?z)h^?#UUY|2(zGu$N^q;?1EVEr3*tu2owP8iuv3Klk zJG8>y&-KUlzOCAt9oV+^w(P#%NA|7V)9Sg^?1KOc{ED7T5Dn{D)tbWA5JcU&0ivM2 zvYmz9%sN_a+Y{|pt*;%#z6S2~Eu;g_iKw^+-BZwF{}pn=6Be&XJ}{gLQ}n-< z_-{%2c`*26Up(-4TJnvsipHG#s&Jx7Y*Ek}zJH-#)8{7r5}B&P1a)wsEyw4v)|Q+p zuJZcGY*RV{)+5!un)t+yt|j+`ynZsp>})*a%VqJ3^~n@y7)xFTJQYR9v=p0x+s=sB zS<4aU&P74E$Pm#ZW0pa3bcD{}*<~pRwk~>o>2Rp8;~B~u!c`HU{ooI1E$oC$)LoD=L&YuL>Zr0R~BBA1ngq%Gksyjb^FXd3eTE;54Cq1 zqPr_-e2-{FpWr#yIdCSbTiTtD6jb zzrFapxG1{MgLgou5FVuUujT(;JmnDhh{dd|U@V;z#e zTk#)mD))M?Eh1dH_qkK>TdJDAy)~k|rxo(jVr-0TL@w{!%0{J7(>+j)w>zSLAlg5O zC%m70A9GWLiM3La<2pEnpP21>qkNa{-DNiI9HC5E=uBqP$@&VC@-T{U95!D z*r6P6tm(b$`3;3=Wo%rQ|CWP~@9NiG`MZ0AkmFH^!Ryh>ES9{cTsKFmKX&9JuA$u^J-IK{rNjr?p1F7V zd=&pNDOr&mUg>)`>|Qjl5-){JM2~kY9eLkK&CWDnAYD-36QR`G^aOMm-lcT4AFJ?5 zT2vg=8(yblmwXr83%05TJu^?qM1h)lwpP9nhRIqv^|{G%SewZRH#NC*RTxVFCl+VQ z;#CroI8V)B`_!$K?5j|l;3-t*%x@v`m+i=0s#bpIaq6q~7Iw^M`15sD$5Zs8dm*XT(bqO}x~(kN%qHe0FMs z)#mx_)f$+^!_=dxC$snTaNk}vD`HCK+Icg6R~19C3!dc=Kg7yD_gfc*TlR_k^<%xG zHoQwE8hom>9(K@j)TC=St+SUp1F**W)FHXsyk3oVU)PFPAk^PbjyZWYa*xLTlgAt} z<J?tJ2?JkCt>=j^YVfcqWtU#IOU^LtiI zlXt)Wed0#PhRm6&OsWE(0+Cg@9msVluTFDMwcb?RpM*?7oj~4+|6jm;7;h486}JNM igTE*4+yZ_B00%E<468iVcjCx<_B5xOoM+z%mi-s_K#a@) literal 0 HcmV?d00001 diff --git a/README_ZH.md b/README_ZH.md new file mode 100644 index 0000000000000000000000000000000000000000..a44d67b5c3eb8be12f48601a4c0a14bb8dbce07a GIT binary patch literal 4148 zcmb_fU2IcT96v=f1O`ZAc;(8H@e#T<8WX8V91OiU7NNmtPuH{ z3K^p#K0v^jkZ2+?(MPjaABg&(nD_w?niyhYNMt@3iKx`y@0?wFyAoy>bJE^>&;R56 z&j0+sPUS(1&@j5ixJZi#-r7a4=n|{NO8ILMq<4s<$cvarfg=e%OXMWg4O&1XBvlhx z%x1)EpvFW26v}9r8H3ye-g2O%@QYyH62tQ}O>}~@Aoc-46m#R?9|k>#_X2cVc=iBM z0M8USW0)C}8n$6(L~12ZM9Oi!tmJTmCj)IcDM8MR)Tt2Uz@5Y|4#}+K%7RW@dC|6D z_a^9B49XY4LF9Y!jNpsM|6FO}(%s^tBz15d2AA@1a=Z0Z z+2*E%@^+j4mK95ImcInnDZqX{;lW7BvxwlCz*`;^pLkJtqIa+{vH>hLq;w1Fa>u9H>oFnJ0@)dnw-rXg`a6@h%3zFw&yxC{g?~Ed4vEdc?6aCPb1BM9Bh|#B_0PGXOI*Bg~EeEWD=;K1Sb)3(G!Lf3x+{h|i!?UE=cA`^wLg+@iV6`eLR;jt^$xtJR$V=VK ze$2aZc+r2CccSWmt#%o&kLZ@3y&L{$CZtiiilptA8T9-w02-+yMs~I zc~s5Y79X@$mDshM8r*LX#YFCMaI$FEiZ4tVBO^~9wBk3)-DiZpRd;Hh4JP_0i%ouO zbb0LW;4-gIe^cKUUmhDkp1fO}EH+mRYeVEGBNIL~Xo^1MvDJa!CS2a@LD!LUfiBq2 zJMhXt)4>nVR7RpPpB^@Q&_6Bn+Peu0jwmuu9=VIN&fbe%E<0FNO_;%02Q~0=HuEr> zkTk`O(xfdQac>>E_DS)Qb3D`hFuC;vMg%zJ0p;j8At} zP7S^j4;!DKy%%=u M8zLLeg$-BbUoR8MqW}N^ literal 0 HcmV?d00001 diff --git a/api.go b/api.go new file mode 100644 index 0000000..2522107 --- /dev/null +++ b/api.go @@ -0,0 +1,117 @@ +package main + +import ( + "fmt" + "github.com/gin-gonic/gin" + "io" + "luma-api/common" + "net/http" +) + +var CommonHeaders = map[string]string{ + "Content-Type": "application/json", + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36", + "Referer": "https://lumalabs.ai/", + "Origin": "https://lumalabs.ai", + "Accept": "*/*", +} + +// @Summary Submit luma generate video task +// @Schemes +// @Description +// @Accept json +// @Produce json +// @Param body body GenRequest true "submit generate video" +// @Success 200 {object} []VideoTask "generate result" +// @Router /luma/generations [post] +func Generations(c *gin.Context) { + header := map[string]string{ + "Cookie": common.COOKIE, + } + for k, v := range CommonHeaders { + header[k] = v + } + + resp, err := DoRequest("POST", fmt.Sprintf(common.BaseUrl+"/api/photon/v1/generations/"), c.Request.Body, header) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "detail": map[string]any{ + "reason": err.Error(), + "code": 1, + }, + }) + return + } + defer resp.Body.Close() + + c.Writer.WriteHeader(resp.StatusCode) + for key, values := range resp.Header { + for _, value := range values { + c.Writer.Header().Add(key, value) + } + } + // 读取响应体 + _, err = io.Copy(c.Writer, resp.Body) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "detail": map[string]any{ + "reason": err.Error(), + "code": 1, + }, + }) + return + } +} + +// @Summary Submit luma generate video task +// @Schemes +// @Description +// @Accept json +// @Produce json +// @Success 200 {object} []VideoTask "video tasks" +// @Router /luma/generations/{id} [get] +// @Router /luma/generations/ [get] +func Fetch(c *gin.Context) { + action := c.Param("action") + + header := map[string]string{ + "Cookie": common.COOKIE, + } + for k, v := range CommonHeaders { + header[k] = v + } + url := fmt.Sprintf(common.BaseUrl+"/api/photon/v1/generations%s", action) + if c.Request.URL.RawQuery != "" { + url = fmt.Sprintf("%s?%s", url, c.Request.URL.RawQuery) + } + resp, err := DoRequest("GET", url, nil, header) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "detail": map[string]any{ + "reason": err.Error(), + "code": 1, + }, + }) + return + } + defer resp.Body.Close() + + c.Writer.WriteHeader(resp.StatusCode) + for key, values := range resp.Header { + for _, value := range values { + c.Writer.Header().Add(key, value) + } + } + // 读取响应体 + _, err = io.Copy(c.Writer, resp.Body) + if err != nil { + c.JSON(http.StatusInternalServerError, gin.H{ + "detail": map[string]any{ + "reason": err.Error(), + "code": 1, + }, + }) + return + } + return +} diff --git a/common/envs.go b/common/envs.go new file mode 100644 index 0000000..58a75e0 --- /dev/null +++ b/common/envs.go @@ -0,0 +1,20 @@ +package common + +import ( + "os" + "time" +) + +var Version = "v0.0.0" +var StartTime = time.Now().Unix() // unit: second + +var PProfEnabled = os.Getenv("PPROF") == "true" +var DebugEnabled = os.Getenv("DEBUG") == "true" +var LogDir = GetOrDefaultString("LOG_DIR", "./logs") +var RotateLogs = os.Getenv("ROTATE_LOGS") == "true" + +var Port = GetOrDefaultString("PORT", "8000") +var Proxy = GetOrDefaultString("PROXY", "") + +var BaseUrl = GetOrDefaultString("BASE_URL", "https://internal-api.virginia.labs.lumalabs.ai") +var COOKIE = GetOrDefaultString("COOKIE", "") diff --git a/common/log.go b/common/log.go new file mode 100644 index 0000000..1d9e2b2 --- /dev/null +++ b/common/log.go @@ -0,0 +1,95 @@ +package common + +import ( + "fmt" + "log" + "os" + "path/filepath" + "sync" + "time" + + rotatelogs "github.com/lestrrat-go/file-rotatelogs" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" +) + +var Logger *zap.SugaredLogger +var LoggerZap *zap.Logger +var setupLogLock sync.Mutex + +func SetupLogger() { + if Logger != nil { + return + } + ok := setupLogLock.TryLock() + if !ok { + log.Println("setup log is already working") + return + } + defer func() { + setupLogLock.Unlock() + }() + levelEnabler := zapcore.DebugLevel + syncers := []zapcore.WriteSyncer{zapcore.AddSync(os.Stdout)} + + if LogDir != "" { + var err error + LogDir, err = filepath.Abs(LogDir) + if err != nil { + log.Fatal(err) + } + if _, err := os.Stat(LogDir); os.IsNotExist(err) { + err = os.Mkdir(LogDir, 0777) + if err != nil { + log.Fatal(err) + } + } + + if RotateLogs { + fd, err := rotatelogs.New( + filepath.Join(LogDir, "%Y%m%d", "%H:%M.log"), + rotatelogs.WithRotationTime(time.Hour), + rotatelogs.WithMaxAge(time.Hour*24*100), + ) + if err != nil { + log.Fatal("failed to open rotateLogs") + } + syncers = append(syncers, zapcore.AddSync(fd)) + } else { + logPath := filepath.Join(LogDir, fmt.Sprintf("luma2api-%s.log", time.Now().Format("20060102"))) + fd, err := os.OpenFile(logPath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + if err != nil { + log.Fatal("failed to open log file") + } + syncers = append(syncers, zapcore.AddSync(fd)) + } + } + enc := zapcore.NewJSONEncoder(zapcore.EncoderConfig{ + TimeKey: "_time", // Modified + LevelKey: "level", + NameKey: "logger", + CallerKey: "caller", + //FunctionKey: zapcore.OmitKey, + MessageKey: "msg", + StacktraceKey: "stacktrace", + LineEnding: zapcore.DefaultLineEnding, + EncodeLevel: zapcore.LowercaseLevelEncoder, + EncodeTime: zapcore.RFC3339NanoTimeEncoder, // Modified + EncodeDuration: zapcore.SecondsDurationEncoder, + EncodeCaller: zapcore.ShortCallerEncoder, + }) + + loggerCore := zapcore.NewCore(enc, + zapcore.NewMultiWriteSyncer(syncers...), + + levelEnabler) + LoggerZap = zap.New(loggerCore, + zap.AddStacktrace( + zap.NewAtomicLevelAt(zapcore.ErrorLevel)), + zap.AddCaller(), + zap.AddCallerSkip(0), + ) + Logger = LoggerZap.Sugar() + //gin.DefaultWriter = Logger.Writer() + //gin.DefaultErrorWriter = io.MultiWriter(os.Stderr, logsWriter) +} diff --git a/common/utils.go b/common/utils.go new file mode 100644 index 0000000..46f2644 --- /dev/null +++ b/common/utils.go @@ -0,0 +1,200 @@ +package common + +import ( + "bytes" + "encoding/json" + "fmt" + "github.com/gin-gonic/gin" + "github.com/google/uuid" + "io" + "math/rand" + "os" + "path/filepath" + "runtime" + "runtime/debug" + "strconv" + "strings" + "time" +) + +func SafeGoroutine(f func()) { + go func() { + defer func() { + if r := recover(); r != nil { + Logger.Error(fmt.Sprintf("child goroutine panic occured: error: %v, stack: %s", r, string(debug.Stack()))) + } + }() + f() + }() +} + +func Any2String(inter interface{}) string { + if inter == nil { + return "" + } + switch inter.(type) { + case string: + return inter.(string) + case *string: + ptr, ok := inter.(*string) + if !ok || ptr == nil { + return "" + } + return *ptr + case int, int64: + return fmt.Sprintf("%d", inter) + case float64: + return fmt.Sprintf("%f", inter) + } + return "Not Implemented" +} + +func Any2Int(data any) int { + if data == nil { + return 0 + } + if valueAssert, ok := data.(float64); ok { + return int(valueAssert) + } + if valueAssert, ok := data.(int64); ok { + return int(valueAssert) + } + if valueAssert, ok := data.(int); ok { + return valueAssert + } + if valueAssert, ok := data.(*int); ok { + return *valueAssert + } + if valueAssert, ok := data.(string); ok { + valueAssertInt, _ := strconv.Atoi(valueAssert) + return valueAssertInt + } + return 0 +} + +func Any2Bool(data any) bool { + if data == nil { + return false + } + switch data.(type) { + case string: + if data == "true" { + return true + } + if data == "1" { + return true + } + return false + case int: + if data == 1 { + return true + } + return false + case bool: + return data.(bool) + case nil: + return false + } + return false +} + +func GetUUID() string { + code := uuid.New().String() + code = strings.Replace(code, "-", "", -1) + return code +} + +const keyChars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + +func init() { + rand.Seed(time.Now().UnixNano()) +} + +func GetRandomString(length int) string { + //rand.Seed(time.Now().UnixNano()) + key := make([]byte, length) + for i := 0; i < length; i++ { + key[i] = keyChars[rand.Intn(len(keyChars))] + } + return string(key) +} + +func GetTimeString() string { + now := time.Now() + return fmt.Sprintf("%s%d", now.Format("20060102150405"), now.UnixNano()%1e9) +} + +func GetOrDefault(env string, defaultValue int) int { + if env == "" || os.Getenv(env) == "" { + return defaultValue + } + num, err := strconv.Atoi(os.Getenv(env)) + if err != nil { + Logger.Error(fmt.Sprintf("failed to parse %s: %s, using default value: %d", env, err.Error(), defaultValue)) + return defaultValue + } + return num +} + +func GetOrDefaultString(env string, defaultValue string) string { + if env == "" || os.Getenv(env) == "" { + return defaultValue + } + return os.Getenv(env) +} + +func GetJsonString(data any) string { + if data == nil { + return "" + } + b, _ := json.Marshal(data) + return string(b) +} + +func UnmarshalBodyReusable(c *gin.Context, v any) error { + requestBody, err := GetRequestBody(c) + if err != nil { + return err + } + contentType := c.Request.Header.Get("Content-Type") + if strings.Contains(contentType, "application/json") { + err = json.Unmarshal(requestBody, &v) + } else { + // skip for now + // try + err = json.Unmarshal(requestBody, &v) + } + if err != nil { + return err + } + // Reset request body + c.Request.Body = io.NopCloser(bytes.NewBuffer(requestBody)) + return nil +} + +const KeyRequestBody = "key_request_body" + +func GetRequestBody(c *gin.Context) ([]byte, error) { + requestBody, _ := c.Get(KeyRequestBody) + if requestBody != nil { + return requestBody.([]byte), nil + } + requestBody, err := io.ReadAll(c.Request.Body) + if err != nil { + return nil, err + } + _ = c.Request.Body.Close() + c.Set(KeyRequestBody, requestBody) + return requestBody.([]byte), nil +} + +func GetRootDir() string { + _, filename, _, _ := runtime.Caller(0) + utilDir := filepath.Dir(filename) + paths, _ := filepath.Split(utilDir) + return paths +} + +func ToPtr[T any](arg T) *T { + return &arg +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..da1f909 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +version: '3.4' + +services: + sunoapi: + image: lumaapi/luma-api:latest + container_name: luma-api + restart: always + ports: + - "8000:8000" + volumes: + - ./logs:/logs + environment: + - COOKIE= + diff --git a/docs/docs.go b/docs/docs.go new file mode 100644 index 0000000..ee1a6b9 --- /dev/null +++ b/docs/docs.go @@ -0,0 +1,154 @@ +// Code generated by swaggo/swag. DO NOT EDIT. + +package docs + +import "github.com/swaggo/swag" + +const docTemplate = `{ + "schemes": {{ marshal .Schemes }}, + "swagger": "2.0", + "info": { + "description": "{{escape .Description}}", + "title": "{{.Title}}", + "contact": {}, + "version": "{{.Version}}" + }, + "host": "{{.Host}}", + "basePath": "{{.BasePath}}", + "paths": { + "/luma/generations": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Submit luma generate video task", + "parameters": [ + { + "description": "submit generate video", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/main.GenRequest" + } + } + ], + "responses": { + "200": { + "description": "generate result", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/main.VideoTask" + } + } + } + } + } + }, + "/luma/generations/{id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Submit luma generate video task", + "responses": { + "200": { + "description": "video tasks", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/main.VideoTask" + } + } + } + } + } + } + }, + "definitions": { + "main.GenRequest": { + "type": "object", + "properties": { + "aspect_ratio": { + "description": "require", + "type": "string" + }, + "expand_prompt": { + "description": "require", + "type": "boolean" + }, + "image_url": { + "description": "option, uploaded refer image url", + "type": "string" + }, + "user_prompt": { + "description": "require", + "type": "string" + } + } + }, + "main.Video": { + "type": "object", + "properties": { + "height": { + "type": "integer" + }, + "thumbnail": {}, + "url": { + "type": "string" + }, + "width": { + "type": "integer" + } + } + }, + "main.VideoTask": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "estimate_wait_seconds": {}, + "id": { + "type": "string" + }, + "liked": {}, + "prompt": { + "type": "string" + }, + "state": { + "description": "\"processing\", \"completed\"", + "type": "string" + }, + "video": { + "$ref": "#/definitions/main.Video" + } + } + } + } +}` + +// SwaggerInfo holds exported Swagger Info so clients can modify it +var SwaggerInfo = &swag.Spec{ + Version: "", + Host: "", + BasePath: "", + Schemes: []string{}, + Title: "", + Description: "", + InfoInstanceName: "swagger", + SwaggerTemplate: docTemplate, + LeftDelim: "{{", + RightDelim: "}}", +} + +func init() { + swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo) +} diff --git a/docs/images/cookie.jpg b/docs/images/cookie.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aae4e9e6ffdd7c34ad8c330461eda995c429b151 GIT binary patch literal 149999 zcmeFZby!qe-!QxpB&3l>LPC)gB&0>8MUa*nkOt|N80l^S0RfQ~5NQOYLqMcKLSX1- zh8$|<-FnXb9M8EQ@8|ix>%Fe;pKs~lTEE$>_3Kz`ZPDM*^8ksGoT40nfdK#t;2!`D z1MbOsT3Y~siVDC1001t45o!%!fj#gMfEN4!z@;~r{sqCJe1rL~{-uZ?U!oT-u`0^Q zK-AP#f$J^ruOj1 z4FCG~NB^&OH2xCzM`cMDpcl>-tQ(Xpp<{Q{2F|{%Q=fL=} zHrLZ%;FiDi|6CV*1R!`I`|u%?8ovPF-3LF$|5uxW6K^YRM{i{4dKR#n&3)_tsRYwzgn>i*o*J3KNvHa_ufatgMv zxU{^oy0*T7*xNriJUT|6oc^E-1Hk-)Eb!+al>LJ)Qjo4oSXh`?I6vsZxa0wTFiEj4 zU+2RnlYWe2;&hdn-yfI!etdR$D;~=obvVUS=bw`LhxHY(zgA@qaZmI0*(g2No6< z4)~V@9}l18|8YZq2VKy8^b|mVi2*7TCMh5VTo9pw5XFluG_a;Cg{1dF1Kn%?2HBhz zhd2oq1XVW_Ti|mE3G)QaMBb)(`V_Cu+yr;vyo%$#?*b8@0d^ivkPm16q-R!FCU=%} zz{*OO&#bM5n1<8kn$FrMtgbpS_wp4uflhZ@mGC4*)o8c`Ej2yOygV= z>04w~e;t{)03oqSgMak4RpFE#GJn}^LGopLl~swtrvt_O$nzQ*u{lxOQ6?ln0{1N&-Ef{JPF1Dq7S1K5tyZ^>fDLI0_$dw z;?#$+D#qW-%g!_(snH=^VZ(3KZv3?RMd?<(Ylzs(;5691y`$tW!4xm9>(=(^@HAWP zV#*Xe*`##W%giz1Np&bOQnhNni@BD!-u{`-_{VDmHn1B zQOPxgtmR@~Srde`!`~Vsf_b}pOGBnWmJwU8A2XMo^Q&&5L6iT(d;Fn0|9}`)L8%VJ znrRj1`)?|bR?FD2mFVak#j)17R~WV3e4+Fp(@{G*DJqgQ+Jo?`NEcgdw*#@Qi(qDI z!3JfKFX8^WXz*BlY0TRrj(#Tpq`m`fw|!FKx5*FvRVU>?c&n;@q|So(NL8YNzuXLH z@qY)%=b{ErxwC@LrJxJSoPEWqu6CRna ze7u$OO`@P+CiXQHmH@Rx1OH_Wpj!NGd@33t@zR_4r_8%iG&hf+|8Ri+fRqd%^_zI= zkXePEQfJEdhnCAn7piK91ld;t(7@wz6Nb$O+sfPFskMAD0{*C-apOligLWuEPn*?F zPFUy2A$fJ;;}nHhEh}>CVVm1KbM_Su`@-0ADqVauZXDM#Z+YK6qN>`1IExS?&9WxZ z04g{T4fszqpZmrB3*ho6px&!V6e&uKzc$P5?LAk%nZ|w8a4BqY|ML5+E2_GGSa&+X2FkPi?Ciys7 z&{qadJ@@_G`A1-DUef_1-M>N&82kPLZ03yli6h07N3|!mo=5k;e*CS++n1t-y9!Y_ zKOI@dm!M@qP||8@N*f2U60C*|M4YNdh--PnN^dHR&f;?xH&BkA2ianJJar$ybB)i9 zDmKGT7LaEOvRJ%X8ESl#ndN+!_Xo{qsNjE*oQR@fIr0M~Wbh+I?SdhyESJ3i6t)ja zc}Kn<4ZuI6fy&*BD`51(EQ2C182<_I?hbRqtIELC7_%GG(-*VOzjwl+C%}c#ibHd4 z--r~Z8l6@a)+hzL^}ggy#e^WC`iSb7oh~0K+gM30Uq4QNMj~@gm+l9k;&nyB)gW)W z;cSu4-dj(+u1mo{Pi#4NN-+SsT{M6={WriGD{?h^z|M;&DbMCAW5w)@^>E|kT-uax z(D93msMMCT_AhuJG0bK-I3Y3h++{)B=ZXu_{KqO8Rl3#5foAq*F^X7X*QamIbWRF| zuq?;l31Pdx><`r}K5q`-`?uBp4X|C-#P4Y{yM3@N^z}@)@s2bW$)sG&1iy+6uavvd z12r;i9d~y%VRo#<2)o!W6&&qR0SR9D;X}^NQhSlyZ*k1&vNd&-6O1-w3YkwrG^$&^ zk1Wq9T;98vRXkRG0>yHI{*%|BN0!<;g|7TdgEmW$PY|-=PL{SN0(NfiST&S=xhpX2 zY#w}x>t><+ocw?;fM>DF-tNtN-{iC)$bC*Z&80=wvbEUsW>|c)<-lLORYjUPOz!`s z7flIeLde!dLe&;VLP0b@y|!sTQEzZbw`r8-O^=(wXVUnZ7tW6Do2rxD7 zyJasj!9-5`7xn%-WTPev(RS9Jb{tm4c+GGfb={C*;!$15YWtu9LE?rmu^nNge&aE9 zofn0Y-|=OAE^>kiRjKX);?@GauL6V?D(b6Rb`({)wPABI&ujWUNhiLN+F9Lmi#IcC zzog6lv^YT`c-vQU3Cyi>7VWew6&{8py6lh{>#=% zxmAzC;76&&GuFhgPww;6Hk>(CgVXon8A=M;R@>71`=8nYItIPO{rV`{W~px9>*9A9 z!%NQj${=q)oqHt1^&X7q3Z<=x#XI-&x0RGgYAMp^(y&uw1|~=ZPM!LGUTucOfksqz zN)h{CM)VKBw=pzem4$7sqaJo}p{h1g`m98du2gRPJMHjPpE`kYnzl7X8%)u-@C){% z+j#U>eIP@`k-6~F_lfU}WE_0b%)1IMe@JM zpwEFI&7>wb|KbDacmFnSP`%<~18(S}jR$OBJ*9{~M=3@%;_WVr0(Ii?lg;q^U1VpL+EpVm7;= z+l>JBYErk~iLiQFXk48w!fP?el1W4a2TR8--{%>;sc1nHel8>$GLHR2 zL*oZBy0GhUBECJ#$^oAXSA=l;BSfC^+O8k7M1xjz|01*bzl>;I3KrM=tNbFSk8SWkEiQ%m(XO)3@0x16}KFqWYXa*5TJMYw42FN8XAyR1h4um0}d9%QdXX%giaX zuK6%I1KH57fo&Zi%UY~xVX5Pf)IuG&ue~K1sCwM@Q&u9NY#1k3QNbF2#mK*n>tm5d zO$@a8c@|SVB{j5@SQ>cu^gxP}=ao|AcS*e21tpD;{ zPwA>`bIPLxc{Q>p*_ze_56GT8e%+;rxvEXw(j%gFQH)9umq*dy9DxN%w&uUg1FV+* z0V&I~D)<~YCAH47QuYr_LF>Xi^8EAHeSbzWRb=tPg??)$Ny0HGeUGvYD#|Ipl*?Va zH}v~@wAs)5bA^*%q%vaBM|2B*?nI0zs^TDdJIJh#Ph+wd+4kOi7+FxXQ2v~4eKWYR zhec~Im0q{fn1U?~NHZuj8ab^H*+qi3J-PTRyZ!;FWjqRmFBRv=0 z)i2|Ft|}AVRf`hFq_ck}B$SwhQw`?mrYLGOaOCkT**Pfcv%f>$pQ$2S-)>}bB(^8( z$rW?IGaAT812(0Fc6Vo|vG+}guJvB2;CJA|?F-26S*R=ZJ_@P%0AGzLvlHhop0cGS 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%0AH?Xovo~%&(7+tja9! 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 dNIMv}RO>8VWM9>X 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 bVqhfK;-L}L2|2(Wf&P{6AAT>)KPUbT?l}mn literal 0 HcmV?d00001 diff --git a/docs/images/zanshangcode.jpg b/docs/images/zanshangcode.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f949633ffebc7bc52e6faa8099126ff4a5a3c20e GIT binary patch literal 99605 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

~*5b5YFGPb0ejR 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 Z$F5jnmdWD36B;afPLJ?E&p)=@_9szWkCFfY literal 0 HcmV?d00001 diff --git a/docs/swagger.json b/docs/swagger.json new file mode 100644 index 0000000..209a0e4 --- /dev/null +++ b/docs/swagger.json @@ -0,0 +1,124 @@ +{ + "swagger": "2.0", + "info": { + "contact": {} + }, + "paths": { + "/luma/generations": { + "post": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Submit luma generate video task", + "parameters": [ + { + "description": "submit generate video", + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/main.GenRequest" + } + } + ], + "responses": { + "200": { + "description": "generate result", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/main.VideoTask" + } + } + } + } + } + }, + "/luma/generations/{id}": { + "get": { + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Submit luma generate video task", + "responses": { + "200": { + "description": "video tasks", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/main.VideoTask" + } + } + } + } + } + } + }, + "definitions": { + "main.GenRequest": { + "type": "object", + "properties": { + "aspect_ratio": { + "description": "require", + "type": "string" + }, + "expand_prompt": { + "description": "require", + "type": "boolean" + }, + "image_url": { + "description": "option, uploaded refer image url", + "type": "string" + }, + "user_prompt": { + "description": "require", + "type": "string" + } + } + }, + "main.Video": { + "type": "object", + "properties": { + "height": { + "type": "integer" + }, + "thumbnail": {}, + "url": { + "type": "string" + }, + "width": { + "type": "integer" + } + } + }, + "main.VideoTask": { + "type": "object", + "properties": { + "created_at": { + "type": "string" + }, + "estimate_wait_seconds": {}, + "id": { + "type": "string" + }, + "liked": {}, + "prompt": { + "type": "string" + }, + "state": { + "description": "\"processing\", \"completed\"", + "type": "string" + }, + "video": { + "$ref": "#/definitions/main.Video" + } + } + } + } +} \ No newline at end of file diff --git a/docs/swagger.yaml b/docs/swagger.yaml new file mode 100644 index 0000000..8064163 --- /dev/null +++ b/docs/swagger.yaml @@ -0,0 +1,81 @@ +definitions: + main.GenRequest: + properties: + aspect_ratio: + description: require + type: string + expand_prompt: + description: require + type: boolean + image_url: + description: option, uploaded refer image url + type: string + user_prompt: + description: require + type: string + type: object + main.Video: + properties: + height: + type: integer + thumbnail: {} + url: + type: string + width: + type: integer + type: object + main.VideoTask: + properties: + created_at: + type: string + estimate_wait_seconds: {} + id: + type: string + liked: {} + prompt: + type: string + state: + description: '"processing", "completed"' + type: string + video: + $ref: '#/definitions/main.Video' + type: object +info: + contact: {} +paths: + /luma/generations: + post: + consumes: + - application/json + parameters: + - description: submit generate video + in: body + name: body + required: true + schema: + $ref: '#/definitions/main.GenRequest' + produces: + - application/json + responses: + "200": + description: generate result + schema: + items: + $ref: '#/definitions/main.VideoTask' + type: array + summary: Submit luma generate video task + /luma/generations/{id}: + get: + consumes: + - application/json + produces: + - application/json + responses: + "200": + description: video tasks + schema: + items: + $ref: '#/definitions/main.VideoTask' + type: array + summary: Submit luma generate video task +swagger: "2.0" diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..ad04ccf --- /dev/null +++ b/go.mod @@ -0,0 +1,66 @@ +module luma-api + +go 1.21.6 + +require ( + github.com/bogdanfinn/tls-client v1.7.5 + github.com/gin-contrib/zap v1.1.3 + github.com/gin-gonic/gin v1.10.0 + github.com/google/uuid v1.6.0 + github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible + github.com/swaggo/files v1.0.1 + github.com/swaggo/gin-swagger v1.6.0 + github.com/swaggo/swag v1.16.3 + go.uber.org/zap v1.27.0 +) + +require ( + github.com/KyleBanks/depth v1.2.1 // indirect + github.com/PuerkitoBio/purell v1.1.1 // indirect + github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect + github.com/andybalholm/brotli v1.0.5 // indirect + github.com/bogdanfinn/fhttp v0.5.28 // indirect + github.com/bogdanfinn/utls v1.6.1 // indirect + github.com/bytedance/sonic v1.11.6 // indirect + github.com/bytedance/sonic/loader v0.1.1 // indirect + github.com/cloudflare/circl v1.3.6 // indirect + github.com/cloudwego/base64x v0.1.4 // indirect + github.com/cloudwego/iasm v0.2.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.3 // indirect + github.com/gin-contrib/sse v0.1.0 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.19.6 // indirect + github.com/go-openapi/spec v0.20.4 // indirect + github.com/go-openapi/swag v0.19.15 // indirect + github.com/go-playground/locales v0.14.1 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/go-playground/validator/v10 v10.20.0 // indirect + github.com/goccy/go-json v0.10.2 // indirect + github.com/jonboulle/clockwork v0.4.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.16.7 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/leodido/go-urn v1.4.0 // indirect + github.com/lestrrat-go/strftime v1.0.6 // indirect + github.com/mailru/easyjson v0.7.6 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/quic-go/quic-go v0.37.4 // indirect + github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ugorji/go/codec v1.2.12 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.8.0 // indirect + golang.org/x/crypto v0.23.0 // indirect + golang.org/x/net v0.25.0 // indirect + golang.org/x/sys v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect + golang.org/x/tools v0.9.1 // indirect + google.golang.org/protobuf v1.34.1 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..e1167c8 --- /dev/null +++ b/go.sum @@ -0,0 +1,211 @@ +github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc= +github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/bogdanfinn/fhttp v0.5.28 h1:G6thT8s8v6z1IuvXMUsX9QKy3ZHseTQTzxuIhSiaaAw= +github.com/bogdanfinn/fhttp v0.5.28/go.mod h1:oJiYPG3jQTKzk/VFmogH8jxjH5yiv2rrOH48Xso2lrE= +github.com/bogdanfinn/tls-client v1.7.5 h1:R1aTwe5oja5niLnQggzbWnzJEssw9n+3O4kR0H/Tjl4= +github.com/bogdanfinn/tls-client v1.7.5/go.mod h1:pQwF0eqfL0gf0mu8hikvu6deZ3ijSPruJDzEKEnnXjU= +github.com/bogdanfinn/utls v1.6.1 h1:dKDYAcXEyFFJ3GaWaN89DEyjyRraD1qb4osdEK89ass= +github.com/bogdanfinn/utls v1.6.1/go.mod h1:VXIbRZaiY/wHZc6Hu+DZ4O2CgTzjhjCg/Ou3V4r/39Y= +github.com/bytedance/sonic v1.11.6 h1:oUp34TzMlL+OY1OUWxHqsdkgC/Zfc85zGqw9siXjrc0= +github.com/bytedance/sonic v1.11.6/go.mod h1:LysEHSvpvDySVdC2f87zGWf6CIKJcAvqab1ZaiQtds4= +github.com/bytedance/sonic/loader v0.1.1 h1:c+e5Pt1k/cy5wMveRDyk2X4B9hF4g7an8N3zCYjJFNM= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/cloudflare/circl v1.3.6 h1:/xbKIqSHbZXHwkhbrhrt2YOHIwYJlXH94E3tI/gDlUg= +github.com/cloudflare/circl v1.3.6/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudwego/base64x v0.1.4 h1:jwCgWpFanWmN8xoIUHa2rtzmkd5J2plF/dnLS6Xd/0Y= +github.com/cloudwego/base64x v0.1.4/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0 h1:1KNIy1I1H9hNNFEEH3DVnI4UujN+1zjpuk6gwHLTssg= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= +github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/gin-contrib/gzip v0.0.6 h1:NjcunTcGAj5CO1gn4N8jHOSIeRFHIbn51z6K+xaN4d4= +github.com/gin-contrib/gzip v0.0.6/go.mod h1:QOJlmV2xmayAjkNS2Y8NQsMneuRShOU/kjovCXNuzzk= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-contrib/zap v1.1.3 h1:9e/U9fYd4/OBfmSEBs5hHZq114uACn7bpuzvCkcJySA= +github.com/gin-contrib/zap v1.1.3/go.mod h1:+BD/6NYZKJyUpqVoJEvgeq9GLz8pINEQvak9LHNOTSE= +github.com/gin-gonic/gin v1.10.0 h1:nTuyha1TYqgedzytsKYqna+DfLos46nTv2ygFy86HFU= +github.com/gin-gonic/gin v1.10.0/go.mod h1:4PMNQiOhvDRa013RKVbsiNwoyezlm2rm0uX/T7kzp5Y= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.20.0 h1:K9ISHbSaI0lyB2eWMPJo+kOS/FBExVwjEviJTixqxL8= +github.com/go-playground/validator/v10 v10.20.0/go.mod h1:dbuPbCMFw/DrkbEynArYaCwl3amGuJotoKCe95atGMM= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= +github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= +github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= +github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc h1:RKf14vYWi2ttpEmkA4aQ3j4u9dStX2t4M8UM6qqNsG8= +github.com/lestrrat-go/envload v0.0.0-20180220234015-a3eb8ddeffcc/go.mod h1:kopuH9ugFRkIXf3YoqHKyrJ9YfUFsckUU9S7B+XP+is= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible h1:Y6sqxHMyB1D2YSzWkLibYKgg+SwmyFU9dF2hn6MdTj4= +github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible/go.mod h1:ZQnN8lSECaebrkQytbHj4xNgtg8CR7RYXnPok8e0EHA= +github.com/lestrrat-go/strftime v1.0.6 h1:CFGsDEt1pOpFNU+TJB0nhz9jl+K0hZSLE205AhTIGQQ= +github.com/lestrrat-go/strftime v1.0.6/go.mod h1:f7jQKgV5nnJpYgdEasS+/y7EsTb8ykN2z68n3TtcTaw= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= +github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/quic-go/quic-go v0.37.4 h1:ke8B73yMCWGq9MfrCCAw0Uzdm7GaViC3i39dsIdDlH4= +github.com/quic-go/quic-go v0.37.4/go.mod h1:YsbH1r4mSHPJcLF4k4zruUkLBqctEMBDR6VPvcYjIsU= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/swaggo/files v1.0.1 h1:J1bVJ4XHZNq0I46UU90611i9/YzdrF7x92oX1ig5IdE= +github.com/swaggo/files v1.0.1/go.mod h1:0qXmMNH6sXNf+73t65aKeB+ApmgxdnkQzVTAj2uaMUg= +github.com/swaggo/gin-swagger v1.6.0 h1:y8sxvQ3E20/RCyrXeFfg60r6H0Z+SwpTjMYsMm+zy8M= +github.com/swaggo/gin-swagger v1.6.0/go.mod h1:BG00cCEy294xtVpyIAHG6+e2Qzj/xKlRdOqDkvq0uzo= +github.com/swaggo/swag v1.16.3 h1:PnCYjPCah8FK4I26l2F/KQ4yz3sILcVUN3cTlBFA9Pg= +github.com/swaggo/swag v1.16.3/go.mod h1:DImHIuOFXKpMFAQjcC7FG4m3Dg4+QuUgUzJmKjI/gRk= +github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5 h1:YqAladjX7xpA6BM04leXMWAEjS0mTZ5kUU9KRBriQJc= +github.com/tam7t/hpkp v0.0.0-20160821193359-2b70b4024ed5/go.mod h1:2JjD2zLQYH5HO74y5+aE3remJQvl6q4Sn6aWA2wD1Ng= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= +github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc= +golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= diff --git a/license b/license new file mode 100644 index 0000000..db629ef --- /dev/null +++ b/license @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Luma-API + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/main.go b/main.go new file mode 100644 index 0000000..14950e2 --- /dev/null +++ b/main.go @@ -0,0 +1,48 @@ +package main + +import ( + "fmt" + "github.com/gin-gonic/gin" + "log" + "luma-api/common" + "luma-api/middleware" + "net/http" + "runtime/debug" +) + +func main() { + common.SetupLogger() + common.Logger.Info("Luma-API started") + + if common.DebugEnabled { + common.Logger.Info("running in debug mode") + gin.SetMode(gin.ReleaseMode) + } + if common.PProfEnabled { + common.SafeGoroutine(func() { + log.Println(http.ListenAndServe("0.0.0.0:8005", nil)) + }) + common.Logger.Info("running in pprof") + } + // Initialize HTTP server + server := gin.New() + server.Use(middleware.RequestId()) + server.Use(gin.CustomRecovery(func(c *gin.Context, err any) { + common.Logger.Error(fmt.Sprintf("panic detected: %v, stack: %s", err, string(debug.Stack()))) + c.JSON(http.StatusInternalServerError, gin.H{ + "error": gin.H{ + "message": fmt.Sprintf("Panic detected, error: %v. Please contact site admin", err), + "type": "api_panic", + }, + }) + })) + server.Use(middleware.GinzapWithConfig()) + + RegisterRouter(server) + + common.Logger.Info("Start: 0.0.0.0:" + common.Port) + err := server.Run(":" + common.Port) + if err != nil { + common.Logger.Fatal("failed to start HTTP server: " + err.Error()) + } +} diff --git a/middleware/logger.go b/middleware/logger.go new file mode 100644 index 0000000..698a38c --- /dev/null +++ b/middleware/logger.go @@ -0,0 +1,42 @@ +package middleware + +import ( + ginzap "github.com/gin-contrib/zap" + "github.com/gin-gonic/gin" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "luma-api/common" + "time" +) + +func GinzapWithConfig() func(c *gin.Context) { + return func(c *gin.Context) { + ginzap.GinzapWithConfig(common.LoggerZap, &ginzap.Config{ + UTC: true, + TimeFormat: time.RFC3339, + Context: ginzap.Fn(func(c *gin.Context) []zapcore.Field { + fields := []zapcore.Field{} + // log request ID + if requestID := c.Writer.Header().Get(RequestIdKey); requestID != "" { + fields = append(fields, zap.String("request_id", requestID)) + } + + // log trace and span ID + /*if trace.SpanFromContext(c.Request.Context()).SpanContext().IsValid() { + fields = append(fields, zap.String("trace_id", trace.SpanFromContext(c.Request.Context()).SpanContext().TraceID().String())) + fields = append(fields, zap.String("span_id", trace.SpanFromContext(c.Request.Context()).SpanContext().SpanID().String())) + }*/ + + // log request body + /*var body []byte + var buf bytes.Buffer + tee := io.TeeReader(c.Request.Body, &buf) + body, _ = io.ReadAll(tee) + c.Request.Body = io.NopCloser(&buf) + fields = append(fields, zap.String("body", string(body)))*/ + + return fields + }), + }) + } +} diff --git a/middleware/request-id.go b/middleware/request-id.go new file mode 100644 index 0000000..9680abb --- /dev/null +++ b/middleware/request-id.go @@ -0,0 +1,20 @@ +package middleware + +import ( + "context" + "github.com/gin-gonic/gin" + "luma-api/common" +) + +const RequestIdKey = "X-Any2api-Request-Id" + +func RequestId() func(c *gin.Context) { + return func(c *gin.Context) { + id := common.GetTimeString() + common.GetRandomString(8) + c.Set(RequestIdKey, id) + ctx := context.WithValue(c.Request.Context(), RequestIdKey, id) + c.Request = c.Request.WithContext(ctx) + c.Header(RequestIdKey, id) + c.Next() + } +} diff --git a/models.go b/models.go new file mode 100644 index 0000000..5d04496 --- /dev/null +++ b/models.go @@ -0,0 +1,25 @@ +package main + +type GenRequest struct { + UserPrompt string `json:"user_prompt"` // require + AspectRatio string `json:"aspect_ratio"` // require + ExpandPrompt bool `json:"expand_prompt"` // require + ImageUrl string `json:"image_url,omitempty"` //option, uploaded refer image url +} + +type VideoTask struct { + ID string `json:"id"` + Prompt string `json:"prompt"` + State string `json:"state"` //"processing", "completed" + CreatedAt string `json:"created_at"` + Video Video `json:"video"` + Liked interface{} `json:"liked"` + EstimateWaitSeconds interface{} `json:"estimate_wait_seconds"` +} + +type Video struct { + Url string `json:"url"` + Width int `json:"width"` + Height int `json:"height"` + Thumbnail interface{} `json:"thumbnail"` +} diff --git a/request.go b/request.go new file mode 100644 index 0000000..34f3037 --- /dev/null +++ b/request.go @@ -0,0 +1,67 @@ +package main + +import ( + tls_client "github.com/bogdanfinn/tls-client" + "github.com/bogdanfinn/tls-client/profiles" + "io" + "luma-api/common" + "net/http" + "net/url" +) + +var TlsHTTPClient tls_client.HttpClient +var HTTPClient *http.Client + +func init() { + InitTlsHTTPClient() +} + +func InitTlsHTTPClient() { + jar := tls_client.NewCookieJar() + options := []tls_client.HttpClientOption{ + tls_client.WithTimeoutSeconds(360), + tls_client.WithClientProfile(profiles.Chrome_120), + tls_client.WithNotFollowRedirects(), + tls_client.WithCookieJar(jar), // create cookieJar instance and pass it as argument + } + client, _ := tls_client.NewHttpClient(tls_client.NewNoopLogger(), options...) + TlsHTTPClient = client + + HTTPClient = &http.Client{} + if common.Proxy != "" { + TlsHTTPClient.SetProxy(common.Proxy) + + u, err := url.Parse(common.Proxy) + if err != nil { + common.Logger.Error("Invalid proxy URL: " + common.Proxy) + panic(err) + } + HTTPClient = &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyURL(u), + }, + } + } +} + +func DoRequest(method, url string, body io.Reader, headers map[string]string) (*http.Response, error) { + req, err := http.NewRequest(method, url, body) + if err != nil { + return nil, err + } + defer func() { + if body != nil { + req.Body.Close() + } + }() + + for k, v := range headers { + req.Header.Set(k, v) + } + + resp, err := HTTPClient.Do(req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/router.go b/router.go new file mode 100644 index 0000000..0b93fdf --- /dev/null +++ b/router.go @@ -0,0 +1,23 @@ +package main + +import ( + "github.com/gin-gonic/gin" + swaggerfiles "github.com/swaggo/files" + ginSwagger "github.com/swaggo/gin-swagger" +) + +func RegisterRouter(r *gin.Engine) { + r.GET("/ping", func(c *gin.Context) { + c.JSON(200, gin.H{ + "message": "pong", + }) + }) + + r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerfiles.Handler)) + + apiRouter := r.Group("/luma") + { + apiRouter.POST("/generations/", Generations) + apiRouter.GET("/generations/*action", Fetch) + } +}