// Code generated by protoc-gen-go-micro. DO NOT EDIT.
// protoc-gen-go-micro version: v3.10.4
// source: test.proto

package pb

import (
	context "context"
	v31 "go.unistack.org/micro-client-http/v3"
	codec "go.unistack.org/micro-proto/v3/codec"
	v3 "go.unistack.org/micro-server-http/v3"
	client "go.unistack.org/micro/v3/client"
	server "go.unistack.org/micro/v3/server"
	http "net/http"
)

var (
	TestServiceServerEndpoints = []v3.EndpointMetadata{
		{
			Name:   "TestService.TestMultipart",
			Path:   "/users/multipart",
			Method: "POST",
			Body:   "*",
			Stream: false,
		},
		{
			Name:   "TestService.TestEndpoint",
			Path:   "/users/test",
			Method: "GET",
			Body:   "",
			Stream: false,
		},
		{
			Name:   "TestService.UserByID",
			Path:   "/users/{id}",
			Method: "GET",
			Body:   "",
			Stream: false,
		},
		{
			Name:   "TestService.UserImageByID",
			Path:   "/users/{id}/image",
			Method: "GET",
			Body:   "",
			Stream: false,
		},
		{
			Name:   "TestService.UploadFile",
			Path:   "/users/image/upload",
			Method: "POST",
			Body:   "",
			Stream: false,
		},
		{
			Name:   "TestService.KzAmlRs",
			Path:   "/aml",
			Method: "POST",
			Body:   "",
			Stream: false,
		},
	}
)

type testServiceClient struct {
	c    client.Client
	name string
}

func NewTestServiceClient(name string, c client.Client) TestServiceClient {
	return &testServiceClient{c: c, name: name}
}

func (c *testServiceClient) TestMultipart(ctx context.Context, req *MultipartReq, opts ...client.CallOption) (*MultipartRsp, error) {
	opts = append(opts,
		v31.Method(http.MethodPost),
		v31.Path("/users/multipart"),
		v31.Body("*"),
	)
	rsp := &MultipartRsp{}
	err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.TestMultipart", req), rsp, opts...)
	if err != nil {
		return nil, err
	}
	return rsp, nil
}

func (c *testServiceClient) TestEndpoint(ctx context.Context, req *Request, opts ...client.CallOption) (*Response, error) {
	opts = append(opts,
		v31.Method(http.MethodGet),
		v31.Path("/users/test"),
	)
	opts = append(opts,
		v31.Header("client_uid", "true"),
		v31.Cookie("csrftoken", "true"),
	)
	rsp := &Response{}
	err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.TestEndpoint", req), rsp, opts...)
	if err != nil {
		return nil, err
	}
	return rsp, nil
}

func (c *testServiceClient) UserByID(ctx context.Context, req *Request, opts ...client.CallOption) (*Response, error) {
	opts = append(opts,
		v31.Method(http.MethodGet),
		v31.Path("/users/{id}"),
	)
	rsp := &Response{}
	err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.UserByID", req), rsp, opts...)
	if err != nil {
		return nil, err
	}
	return rsp, nil
}

func (c *testServiceClient) UserImageByID(ctx context.Context, req *Request, opts ...client.CallOption) (*codec.Frame, error) {
	opts = append(opts,
		v31.Method(http.MethodGet),
		v31.Path("/users/{id}/image"),
	)
	rsp := &codec.Frame{}
	err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.UserImageByID", req), rsp, opts...)
	if err != nil {
		return nil, err
	}
	return rsp, nil
}

func (c *testServiceClient) UploadFile(ctx context.Context, req *RequestImage, opts ...client.CallOption) (*ResponseImage, error) {
	opts = append(opts,
		v31.Method(http.MethodPost),
		v31.Path("/users/image/upload"),
	)
	rsp := &ResponseImage{}
	err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.UploadFile", req), rsp, opts...)
	if err != nil {
		return nil, err
	}
	return rsp, nil
}

func (c *testServiceClient) KzAmlRs(ctx context.Context, req *RequestAml, opts ...client.CallOption) (*ResponseAml, error) {
	opts = append(opts,
		v31.Method(http.MethodPost),
		v31.Path("/aml"),
	)
	rsp := &ResponseAml{}
	err := c.c.Call(ctx, c.c.NewRequest(c.name, "TestService.KzAmlRs", req), rsp, opts...)
	if err != nil {
		return nil, err
	}
	return rsp, nil
}

type testServiceServer struct {
	TestServiceServer
}

func (h *testServiceServer) TestMultipart(ctx context.Context, req *MultipartReq, rsp *MultipartRsp) error {
	return h.TestServiceServer.TestMultipart(ctx, req, rsp)
}

func (h *testServiceServer) TestEndpoint(ctx context.Context, req *Request, rsp *Response) error {
	v3.FillRequest(ctx, req,
		v3.Header("client_uid", "true"),
		v3.Cookie("csrftoken", "true"),
	)
	return h.TestServiceServer.TestEndpoint(ctx, req, rsp)
}

func (h *testServiceServer) UserByID(ctx context.Context, req *Request, rsp *Response) error {
	return h.TestServiceServer.UserByID(ctx, req, rsp)
}

func (h *testServiceServer) UserImageByID(ctx context.Context, req *Request, rsp *codec.Frame) error {
	return h.TestServiceServer.UserImageByID(ctx, req, rsp)
}

func (h *testServiceServer) UploadFile(ctx context.Context, req *RequestImage, rsp *ResponseImage) error {
	return h.TestServiceServer.UploadFile(ctx, req, rsp)
}

func (h *testServiceServer) KzAmlRs(ctx context.Context, req *RequestAml, rsp *ResponseAml) error {
	return h.TestServiceServer.KzAmlRs(ctx, req, rsp)
}

func RegisterTestServiceServer(s server.Server, sh TestServiceServer, opts ...server.HandlerOption) error {
	type testService interface {
		TestMultipart(ctx context.Context, req *MultipartReq, rsp *MultipartRsp) error
		TestEndpoint(ctx context.Context, req *Request, rsp *Response) error
		UserByID(ctx context.Context, req *Request, rsp *Response) error
		UserImageByID(ctx context.Context, req *Request, rsp *codec.Frame) error
		UploadFile(ctx context.Context, req *RequestImage, rsp *ResponseImage) error
		KzAmlRs(ctx context.Context, req *RequestAml, rsp *ResponseAml) error
	}
	type TestService struct {
		testService
	}
	h := &testServiceServer{sh}
	opts = append(opts, v3.HandlerEndpoints(TestServiceServerEndpoints))
	return s.Handle(s.NewHandler(&TestService{h}, opts...))
}