Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
feat(pro): add pro api (#34)
Browse files Browse the repository at this point in the history
add pro api
  • Loading branch information
XdpCs authored Nov 26, 2023
1 parent 089f91d commit f49573a
Show file tree
Hide file tree
Showing 6 changed files with 473 additions and 16 deletions.
15 changes: 7 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,20 +73,19 @@ require github.com/XdpCs/wujiesdk latest
- [x] 作画
- [x] 相机作画轮询接口
- [x] 相机作画查询接口
- [ ] Ai专业版作画
- [x] Ai专业版作画
- [x] 专业版发起AI作画
- [x] 专业版作画轮询接口
- [x] 专业版作画查询接口
- [x] ControlNet type preprocessor model 参数依赖关系查询
- [x] 获取专业版模型列表
- [x] 账户时长余额
- [ ] Ai实验室
- [ ] 分割一切
- [ ] 矢量图
- [ ] 实验室-下拉选项列表
- [ ] 实验室-作画详情
- [ ] 一镜到底
- [ ] 删除实验室作品
- [x] Ai实验室
- [x] 分割一切
- [x] 矢量图
- [x] 实验室-模型列表
- [x] Ai实验室详情
- [x] 一镜到底

## 例子

Expand Down
107 changes: 106 additions & 1 deletion caller.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package wujiesdk
// @Title caller.go
// @Description handle wujie sdk's response
// @Create XdpCs 2023-09-10 20:47
// @Update XdpCs 2023-11-25 21:13
// @Update XdpCs 2023-11-26 15:13

import (
"context"
Expand Down Expand Up @@ -902,6 +902,111 @@ func (c *Caller) CameraInfo(ctx context.Context, key string) (WujieCode, *Camera
return code, &cResp.Data, nil
}

// LabOptions get lab options
func (c *Caller) LabOptions(ctx context.Context, lReq *LabOptionsRequest) (WujieCode, []LabOption, error) {
resp, err := c.Client.LabOptions(ctx, lReq)
if err != nil {
return ErrorWujieCode, nil, fmt.Errorf("c.Client.LabOptions: %w", err)
}
defer func() { _ = resp.Body.Close() }()

var lResp LabOptionsResponse
if err := json.NewDecoder(resp.Body).Decode(&lResp); err != nil {
return ErrorWujieCode, nil, fmt.Errorf("json.NewDecoder: %w", err)
}

code := WujieCode(lResp.Code)
if err := code.Err(); err != nil {
return code, nil, fmt.Errorf("TRACE_ID: %s, WujieCode: %w, Message: %s",
getTraceID(resp), err, lResp.Message)
}
return code, lResp.Data.AiLabQuery.Options, nil
}

// LabInfo get lab info
func (c *Caller) LabInfo(ctx context.Context, lReq *LabInfoRequest) (WujieCode, *LabInfo, error) {
resp, err := c.Client.LabInfo(ctx, lReq)
if err != nil {
return ErrorWujieCode, nil, fmt.Errorf("c.Client.LabInfo: %w", err)
}
defer func() { _ = resp.Body.Close() }()

var lResp LabInfoResponse
if err := json.NewDecoder(resp.Body).Decode(&lResp); err != nil {
return ErrorWujieCode, nil, fmt.Errorf("json.NewDecoder: %w", err)
}

code := WujieCode(lResp.Code)
if err := code.Err(); err != nil {
return code, nil, fmt.Errorf("TRACE_ID: %s, WujieCode: %w, Message: %s",
getTraceID(resp), err, lResp.Message)
}
return code, &lResp.Data, nil
}

// CreateSegmentation create segmentation
func (c *Caller) CreateSegmentation(ctx context.Context, cReq *CreateSegmentationRequest) (WujieCode, *CreateSegmentationResult, error) {
resp, err := c.Client.CreateSegmentation(ctx, cReq)
if err != nil {
return ErrorWujieCode, nil, fmt.Errorf("c.Client.CreateSegmentation: %w", err)
}
defer func() { _ = resp.Body.Close() }()

var cResp CreateSegmentationResponse
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
return ErrorWujieCode, nil, fmt.Errorf("json.NewDecoder: %w", err)
}

code := WujieCode(cResp.Code)
if err := code.Err(); err != nil {
return code, nil, fmt.Errorf("TRACE_ID: %s, WujieCode: %w, Message: %s, CreateSegmentationRequest: %s",
getTraceID(resp), err, cResp.Message, cReq.String())
}
return code, &cResp.Data.AiLabMutation.SegmentAnythingCreateV2, nil
}

// CreateInfiniteZoom create infinite zoom
func (c *Caller) CreateInfiniteZoom(ctx context.Context, cReq *CreateInfiniteZoomRequest) (WujieCode, *CreateInfiniteZoomResult, error) {
resp, err := c.Client.CreateInfiniteZoom(ctx, cReq)
if err != nil {
return ErrorWujieCode, nil, fmt.Errorf("c.Client.CreateInfiniteZoom: %w", err)
}
defer func() { _ = resp.Body.Close() }()

var cResp CreateInfiniteZoomResponse
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
return ErrorWujieCode, nil, fmt.Errorf("json.NewDecoder: %w", err)
}

code := WujieCode(cResp.Code)
if err := code.Err(); err != nil {
return code, nil, fmt.Errorf("TRACE_ID: %s, WujieCode: %w, Message: %s, CreateInfiniteZoomRequest: %s",
getTraceID(resp), err, cResp.Message, cReq.String())
}
return code, &cResp.Data.AiLabMutation.InfiniteZoomCreateV2, nil
}

// CreateVectorStudio create vector studio
func (c *Caller) CreateVectorStudio(ctx context.Context, cReq *CreateVectorStudioRequest) (WujieCode, *CreateVectorStudioResult, error) {
resp, err := c.Client.CreateVectorStudio(ctx, cReq)
if err != nil {
return ErrorWujieCode, nil, fmt.Errorf("c.Client.CreateVectorStudio: %w", err)
}
defer func() { _ = resp.Body.Close() }()

var cResp CreateVectorStudioResponse
if err := json.NewDecoder(resp.Body).Decode(&cResp); err != nil {
return ErrorWujieCode, nil, fmt.Errorf("json.NewDecoder: %w", err)
}

code := WujieCode(cResp.Code)
if err := code.Err(); err != nil {
return code, nil, fmt.Errorf("TRACE_ID: %s, WujieCode: %w, Message: %s, CreateVectorStudioRequest: %s",
getTraceID(resp), err, cResp.Message, cReq.String())
}
return code, &cResp.Data.AiLabMutation.VectorStudioCreateV2, nil
}

func getTraceID(resp *http.Response) string {
return resp.Header.Get(TraceID)
}
65 changes: 65 additions & 0 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -888,3 +888,68 @@ func (c *Client) CameraInfo(ctx context.Context, key string) (*http.Response, er
}
return resp, nil
}

// LabOptions get lab options
func (c *Client) LabOptions(ctx context.Context, lReq *LabOptionsRequest) (*http.Response, error) {
path, err := url.Parse(Domain + string(LabOptionsWujieRouter))
if err != nil {
return nil, fmt.Errorf("url.Parse: url: %v, parse url error: %w", Domain+string(LabOptionsWujieRouter), err)
}
resp, err := c.CtxPostJson(ctx, path.String(), nil, lReq)
if err != nil {
return nil, fmt.Errorf("c.CtxPostJson: req: %v, error: %w", lReq.String(), err)
}
return resp, nil
}

// LabInfo get lab info
func (c *Client) LabInfo(ctx context.Context, lReq *LabInfoRequest) (*http.Response, error) {
path, err := url.Parse(Domain + string(LabInfoWujieRouter))
if err != nil {
return nil, fmt.Errorf("url.Parse: url: %v, parse url error: %w", Domain+string(LabInfoWujieRouter), err)
}
resp, err := c.CtxPostJson(ctx, path.String(), nil, lReq)
if err != nil {
return nil, fmt.Errorf("c.CtxPostJson: req: %v, error: %w", lReq.String(), err)
}
return resp, nil
}

// CreateSegmentation create segmentation
func (c *Client) CreateSegmentation(ctx context.Context, cReq *CreateSegmentationRequest) (*http.Response, error) {
path, err := url.Parse(Domain + string(CreateSegmentationWujieRouter))
if err != nil {
return nil, fmt.Errorf("url.Parse: url: %v, parse url error: %w", Domain+string(CreateSegmentationWujieRouter), err)
}
resp, err := c.CtxPostJson(ctx, path.String(), nil, cReq)
if err != nil {
return nil, fmt.Errorf("c.CtxPostJson: req: %v, error: %w", cReq.String(), err)
}
return resp, nil
}

// CreateInfiniteZoom create infinite zoom
func (c *Client) CreateInfiniteZoom(ctx context.Context, cReq *CreateInfiniteZoomRequest) (*http.Response, error) {
path, err := url.Parse(Domain + string(CreateInfiniteZoomWujieRouter))
if err != nil {
return nil, fmt.Errorf("url.Parse: url: %v, parse url error: %w", Domain+string(CreateInfiniteZoomWujieRouter), err)
}
resp, err := c.CtxPostJson(ctx, path.String(), nil, cReq)
if err != nil {
return nil, fmt.Errorf("c.CtxPostJson: req: %v, error: %w", cReq.String(), err)
}
return resp, nil
}

// CreateVectorStudio create vector studio
func (c *Client) CreateVectorStudio(ctx context.Context, cReq *CreateVectorStudioRequest) (*http.Response, error) {
path, err := url.Parse(Domain + string(CreateVectorStudioWujieRouter))
if err != nil {
return nil, fmt.Errorf("url.Parse: url: %v, parse url error: %w", Domain+string(CreateVectorStudioWujieRouter), err)
}
resp, err := c.CtxPostJson(ctx, path.String(), nil, cReq)
if err != nil {
return nil, fmt.Errorf("c.CtxPostJson: req: %v, error: %w", cReq.String(), err)
}
return resp, nil
}
7 changes: 6 additions & 1 deletion const.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package wujiesdk
// @Title const.go
// @Description wujie sdk's const
// @Create XdpCs 2023-09-10 20:47
// @Update XdpCs 2023-11-25 21:13
// @Update XdpCs 2023-11-26 14:18

import (
"fmt"
Expand Down Expand Up @@ -48,6 +48,11 @@ const (
ModelBaseInfosProWujieRouter WujieRouter = "/ai/pro/model_base_infos"
ControlNetOptionProWujieRouter WujieRouter = "/ai/pro/controlNetOption"
ImageInfoProWujieRouter WujieRouter = "/ai/pro/info"
LabOptionsWujieRouter WujieRouter = "/ai/pro/lab/options"
LabInfoWujieRouter WujieRouter = "/ai/pro/lab/info"
CreateSegmentationWujieRouter WujieRouter = "/ai/pro/lab/create/segmentation"
CreateInfiniteZoomWujieRouter WujieRouter = "/ai/pro/lab/createInfiniteZoom"
CreateVectorStudioWujieRouter WujieRouter = "/ai/pro/lab/createVectorsStudio"
)

// avatar create artwork WujieRouter
Expand Down
Loading

0 comments on commit f49573a

Please sign in to comment.