// Code generated by protoc-gen-go-http. DO NOT EDIT.
// versions:
// - protoc-gen-go-http v2.7.1
// - protoc             (unknown)
// source: oidc/api/client/v1/client.proto

package v1

import (
	context "context"
	http "github.com/go-kratos/kratos/v2/transport/http"
	binding "github.com/go-kratos/kratos/v2/transport/http/binding"
	emptypb "google.golang.org/protobuf/types/known/emptypb"
)

// This is a compile-time assertion to ensure that this generated file
// is compatible with the kratos package it is being compiled against.
var _ = new(context.Context)
var _ = binding.EncodeURL

const _ = http.SupportPackageIsVersion1

const OperationClientServiceCreateOAuth2Client = "/oidc.api.client.ClientService/CreateOAuth2Client"
const OperationClientServiceDeleteOAuth2Client = "/oidc.api.client.ClientService/DeleteOAuth2Client"
const OperationClientServiceGetOAuth2Client = "/oidc.api.client.ClientService/GetOAuth2Client"
const OperationClientServiceListOAuth2Clients = "/oidc.api.client.ClientService/ListOAuth2Clients"
const OperationClientServicePatchOAuth2Client = "/oidc.api.client.ClientService/PatchOAuth2Client"
const OperationClientServiceUpdateOAuth2Client = "/oidc.api.client.ClientService/UpdateOAuth2Client"

type ClientServiceHTTPServer interface {
	CreateOAuth2Client(context.Context, *OAuth2Client) (*OAuth2Client, error)
	DeleteOAuth2Client(context.Context, *DeleteOAuth2ClientRequest) (*emptypb.Empty, error)
	GetOAuth2Client(context.Context, *GetOAuth2ClientRequest) (*OAuth2Client, error)
	ListOAuth2Clients(context.Context, *ListClientRequest) (*OAuth2ClientList, error)
	PatchOAuth2Client(context.Context, *PatchOAuth2ClientRequest) (*OAuth2Client, error)
	UpdateOAuth2Client(context.Context, *UpdateOAuth2ClientRequest) (*OAuth2Client, error)
}

func RegisterClientServiceHTTPServer(s *http.Server, srv ClientServiceHTTPServer) {
	r := s.Route("/")
	r.POST("/v1/oidc/client/list", _ClientService_ListOAuth2Clients0_HTTP_Handler(srv))
	r.GET("/v1/oidc/clients", _ClientService_ListOAuth2Clients1_HTTP_Handler(srv))
	r.GET("/v1/oidc/client/{id}", _ClientService_GetOAuth2Client0_HTTP_Handler(srv))
	r.POST("/v1/oidc/client", _ClientService_CreateOAuth2Client0_HTTP_Handler(srv))
	r.DELETE("/v1/oidc/client/{id}", _ClientService_DeleteOAuth2Client0_HTTP_Handler(srv))
	r.PATCH("/v1/oidc/client/{id}", _ClientService_PatchOAuth2Client0_HTTP_Handler(srv))
	r.PUT("/v1/oidc/client/{id}", _ClientService_UpdateOAuth2Client0_HTTP_Handler(srv))
}

func _ClientService_ListOAuth2Clients0_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in ListClientRequest
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServiceListOAuth2Clients)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.ListOAuth2Clients(ctx, req.(*ListClientRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*OAuth2ClientList)
		return ctx.Result(200, reply)
	}
}

func _ClientService_ListOAuth2Clients1_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in ListClientRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServiceListOAuth2Clients)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.ListOAuth2Clients(ctx, req.(*ListClientRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*OAuth2ClientList)
		return ctx.Result(200, reply)
	}
}

func _ClientService_GetOAuth2Client0_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in GetOAuth2ClientRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServiceGetOAuth2Client)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.GetOAuth2Client(ctx, req.(*GetOAuth2ClientRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*OAuth2Client)
		return ctx.Result(200, reply)
	}
}

func _ClientService_CreateOAuth2Client0_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in OAuth2Client
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServiceCreateOAuth2Client)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.CreateOAuth2Client(ctx, req.(*OAuth2Client))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*OAuth2Client)
		return ctx.Result(200, reply)
	}
}

func _ClientService_DeleteOAuth2Client0_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in DeleteOAuth2ClientRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServiceDeleteOAuth2Client)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.DeleteOAuth2Client(ctx, req.(*DeleteOAuth2ClientRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*emptypb.Empty)
		return ctx.Result(200, reply)
	}
}

func _ClientService_PatchOAuth2Client0_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in PatchOAuth2ClientRequest
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServicePatchOAuth2Client)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.PatchOAuth2Client(ctx, req.(*PatchOAuth2ClientRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*OAuth2Client)
		return ctx.Result(200, reply)
	}
}

func _ClientService_UpdateOAuth2Client0_HTTP_Handler(srv ClientServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in UpdateOAuth2ClientRequest
		if err := ctx.Bind(&in); err != nil {
			return err
		}
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationClientServiceUpdateOAuth2Client)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.UpdateOAuth2Client(ctx, req.(*UpdateOAuth2ClientRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*OAuth2Client)
		return ctx.Result(200, reply)
	}
}

type ClientServiceHTTPClient interface {
	CreateOAuth2Client(ctx context.Context, req *OAuth2Client, opts ...http.CallOption) (rsp *OAuth2Client, err error)
	DeleteOAuth2Client(ctx context.Context, req *DeleteOAuth2ClientRequest, opts ...http.CallOption) (rsp *emptypb.Empty, err error)
	GetOAuth2Client(ctx context.Context, req *GetOAuth2ClientRequest, opts ...http.CallOption) (rsp *OAuth2Client, err error)
	ListOAuth2Clients(ctx context.Context, req *ListClientRequest, opts ...http.CallOption) (rsp *OAuth2ClientList, err error)
	PatchOAuth2Client(ctx context.Context, req *PatchOAuth2ClientRequest, opts ...http.CallOption) (rsp *OAuth2Client, err error)
	UpdateOAuth2Client(ctx context.Context, req *UpdateOAuth2ClientRequest, opts ...http.CallOption) (rsp *OAuth2Client, err error)
}

type ClientServiceHTTPClientImpl struct {
	cc *http.Client
}

func NewClientServiceHTTPClient(client *http.Client) ClientServiceHTTPClient {
	return &ClientServiceHTTPClientImpl{client}
}

func (c *ClientServiceHTTPClientImpl) CreateOAuth2Client(ctx context.Context, in *OAuth2Client, opts ...http.CallOption) (*OAuth2Client, error) {
	var out OAuth2Client
	pattern := "/v1/oidc/client"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation(OperationClientServiceCreateOAuth2Client))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "POST", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *ClientServiceHTTPClientImpl) DeleteOAuth2Client(ctx context.Context, in *DeleteOAuth2ClientRequest, opts ...http.CallOption) (*emptypb.Empty, error) {
	var out emptypb.Empty
	pattern := "/v1/oidc/client/{id}"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationClientServiceDeleteOAuth2Client))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "DELETE", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *ClientServiceHTTPClientImpl) GetOAuth2Client(ctx context.Context, in *GetOAuth2ClientRequest, opts ...http.CallOption) (*OAuth2Client, error) {
	var out OAuth2Client
	pattern := "/v1/oidc/client/{id}"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationClientServiceGetOAuth2Client))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "GET", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *ClientServiceHTTPClientImpl) ListOAuth2Clients(ctx context.Context, in *ListClientRequest, opts ...http.CallOption) (*OAuth2ClientList, error) {
	var out OAuth2ClientList
	pattern := "/v1/oidc/clients"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationClientServiceListOAuth2Clients))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "GET", path, nil, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *ClientServiceHTTPClientImpl) PatchOAuth2Client(ctx context.Context, in *PatchOAuth2ClientRequest, opts ...http.CallOption) (*OAuth2Client, error) {
	var out OAuth2Client
	pattern := "/v1/oidc/client/{id}"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation(OperationClientServicePatchOAuth2Client))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "PATCH", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}

func (c *ClientServiceHTTPClientImpl) UpdateOAuth2Client(ctx context.Context, in *UpdateOAuth2ClientRequest, opts ...http.CallOption) (*OAuth2Client, error) {
	var out OAuth2Client
	pattern := "/v1/oidc/client/{id}"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation(OperationClientServiceUpdateOAuth2Client))
	opts = append(opts, http.PathTemplate(pattern))
	err := c.cc.Invoke(ctx, "PUT", path, in, &out, opts...)
	if err != nil {
		return nil, err
	}
	return &out, err
}
