// Code generated by protoc-gen-go-http. DO NOT EDIT.
// versions:
// - protoc-gen-go-http v2.7.1
// - protoc             (unknown)
// source: oidc/api/key/v1/key.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 OperationKeyServiceCreateJsonWebKeySet = "/oidc.api.key.KeyService/CreateJsonWebKeySet"
const OperationKeyServiceDeleteJsonWebKey = "/oidc.api.key.KeyService/DeleteJsonWebKey"
const OperationKeyServiceDeleteJsonWebKeySet = "/oidc.api.key.KeyService/DeleteJsonWebKeySet"
const OperationKeyServiceGetJsonWebKey = "/oidc.api.key.KeyService/GetJsonWebKey"
const OperationKeyServiceGetJsonWebKeySet = "/oidc.api.key.KeyService/GetJsonWebKeySet"
const OperationKeyServiceUpdateJsonWebKey = "/oidc.api.key.KeyService/UpdateJsonWebKey"
const OperationKeyServiceUpdateJsonWebKeySet = "/oidc.api.key.KeyService/UpdateJsonWebKeySet"

type KeyServiceHTTPServer interface {
	CreateJsonWebKeySet(context.Context, *CreateJsonWebKeySetRequest) (*JsonWebKeySet, error)
	DeleteJsonWebKey(context.Context, *DeleteJsonWebKeyRequest) (*emptypb.Empty, error)
	DeleteJsonWebKeySet(context.Context, *DeleteJsonWebKeySetRequest) (*emptypb.Empty, error)
	GetJsonWebKey(context.Context, *GetJsonWebKeyRequest) (*JsonWebKeySet, error)
	GetJsonWebKeySet(context.Context, *GetJsonWebKeySetRequest) (*JsonWebKeySet, error)
	UpdateJsonWebKey(context.Context, *UpdateJsonWebKeyRequest) (*JsonWebKey, error)
	UpdateJsonWebKeySet(context.Context, *UpdateJsonWebKeySetRequest) (*JsonWebKeySet, error)
}

func RegisterKeyServiceHTTPServer(s *http.Server, srv KeyServiceHTTPServer) {
	r := s.Route("/")
	r.DELETE("/v1/oidc/keys/{set}", _KeyService_DeleteJsonWebKeySet0_HTTP_Handler(srv))
	r.GET("/v1/oidc/keys/{set}", _KeyService_GetJsonWebKeySet0_HTTP_Handler(srv))
	r.POST("/v1/oidc/keys/{set}", _KeyService_CreateJsonWebKeySet0_HTTP_Handler(srv))
	r.PUT("/v1/oidc/keys/{set}", _KeyService_UpdateJsonWebKeySet0_HTTP_Handler(srv))
	r.DELETE("/v1/oidc/keys/{set}/{kid}", _KeyService_DeleteJsonWebKey0_HTTP_Handler(srv))
	r.GET("/v1/oidc/keys/{set}/{kid}", _KeyService_GetJsonWebKey0_HTTP_Handler(srv))
	r.PUT("/v1/oidc/keys/{set}/{kid}", _KeyService_UpdateJsonWebKey0_HTTP_Handler(srv))
}

func _KeyService_DeleteJsonWebKeySet0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in DeleteJsonWebKeySetRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationKeyServiceDeleteJsonWebKeySet)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.DeleteJsonWebKeySet(ctx, req.(*DeleteJsonWebKeySetRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*emptypb.Empty)
		return ctx.Result(200, reply)
	}
}

func _KeyService_GetJsonWebKeySet0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in GetJsonWebKeySetRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationKeyServiceGetJsonWebKeySet)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.GetJsonWebKeySet(ctx, req.(*GetJsonWebKeySetRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*JsonWebKeySet)
		return ctx.Result(200, reply)
	}
}

func _KeyService_CreateJsonWebKeySet0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in CreateJsonWebKeySetRequest
		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, OperationKeyServiceCreateJsonWebKeySet)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.CreateJsonWebKeySet(ctx, req.(*CreateJsonWebKeySetRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*JsonWebKeySet)
		return ctx.Result(200, reply)
	}
}

func _KeyService_UpdateJsonWebKeySet0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in UpdateJsonWebKeySetRequest
		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, OperationKeyServiceUpdateJsonWebKeySet)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.UpdateJsonWebKeySet(ctx, req.(*UpdateJsonWebKeySetRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*JsonWebKeySet)
		return ctx.Result(200, reply)
	}
}

func _KeyService_DeleteJsonWebKey0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in DeleteJsonWebKeyRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationKeyServiceDeleteJsonWebKey)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.DeleteJsonWebKey(ctx, req.(*DeleteJsonWebKeyRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*emptypb.Empty)
		return ctx.Result(200, reply)
	}
}

func _KeyService_GetJsonWebKey0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in GetJsonWebKeyRequest
		if err := ctx.BindQuery(&in); err != nil {
			return err
		}
		if err := ctx.BindVars(&in); err != nil {
			return err
		}
		http.SetOperation(ctx, OperationKeyServiceGetJsonWebKey)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.GetJsonWebKey(ctx, req.(*GetJsonWebKeyRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*JsonWebKeySet)
		return ctx.Result(200, reply)
	}
}

func _KeyService_UpdateJsonWebKey0_HTTP_Handler(srv KeyServiceHTTPServer) func(ctx http.Context) error {
	return func(ctx http.Context) error {
		var in UpdateJsonWebKeyRequest
		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, OperationKeyServiceUpdateJsonWebKey)
		h := ctx.Middleware(func(ctx context.Context, req interface{}) (interface{}, error) {
			return srv.UpdateJsonWebKey(ctx, req.(*UpdateJsonWebKeyRequest))
		})
		out, err := h(ctx, &in)
		if err != nil {
			return err
		}
		reply := out.(*JsonWebKey)
		return ctx.Result(200, reply)
	}
}

type KeyServiceHTTPClient interface {
	CreateJsonWebKeySet(ctx context.Context, req *CreateJsonWebKeySetRequest, opts ...http.CallOption) (rsp *JsonWebKeySet, err error)
	DeleteJsonWebKey(ctx context.Context, req *DeleteJsonWebKeyRequest, opts ...http.CallOption) (rsp *emptypb.Empty, err error)
	DeleteJsonWebKeySet(ctx context.Context, req *DeleteJsonWebKeySetRequest, opts ...http.CallOption) (rsp *emptypb.Empty, err error)
	GetJsonWebKey(ctx context.Context, req *GetJsonWebKeyRequest, opts ...http.CallOption) (rsp *JsonWebKeySet, err error)
	GetJsonWebKeySet(ctx context.Context, req *GetJsonWebKeySetRequest, opts ...http.CallOption) (rsp *JsonWebKeySet, err error)
	UpdateJsonWebKey(ctx context.Context, req *UpdateJsonWebKeyRequest, opts ...http.CallOption) (rsp *JsonWebKey, err error)
	UpdateJsonWebKeySet(ctx context.Context, req *UpdateJsonWebKeySetRequest, opts ...http.CallOption) (rsp *JsonWebKeySet, err error)
}

type KeyServiceHTTPClientImpl struct {
	cc *http.Client
}

func NewKeyServiceHTTPClient(client *http.Client) KeyServiceHTTPClient {
	return &KeyServiceHTTPClientImpl{client}
}

func (c *KeyServiceHTTPClientImpl) CreateJsonWebKeySet(ctx context.Context, in *CreateJsonWebKeySetRequest, opts ...http.CallOption) (*JsonWebKeySet, error) {
	var out JsonWebKeySet
	pattern := "/v1/oidc/keys/{set}"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation(OperationKeyServiceCreateJsonWebKeySet))
	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 *KeyServiceHTTPClientImpl) DeleteJsonWebKey(ctx context.Context, in *DeleteJsonWebKeyRequest, opts ...http.CallOption) (*emptypb.Empty, error) {
	var out emptypb.Empty
	pattern := "/v1/oidc/keys/{set}/{kid}"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationKeyServiceDeleteJsonWebKey))
	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 *KeyServiceHTTPClientImpl) DeleteJsonWebKeySet(ctx context.Context, in *DeleteJsonWebKeySetRequest, opts ...http.CallOption) (*emptypb.Empty, error) {
	var out emptypb.Empty
	pattern := "/v1/oidc/keys/{set}"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationKeyServiceDeleteJsonWebKeySet))
	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 *KeyServiceHTTPClientImpl) GetJsonWebKey(ctx context.Context, in *GetJsonWebKeyRequest, opts ...http.CallOption) (*JsonWebKeySet, error) {
	var out JsonWebKeySet
	pattern := "/v1/oidc/keys/{set}/{kid}"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationKeyServiceGetJsonWebKey))
	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 *KeyServiceHTTPClientImpl) GetJsonWebKeySet(ctx context.Context, in *GetJsonWebKeySetRequest, opts ...http.CallOption) (*JsonWebKeySet, error) {
	var out JsonWebKeySet
	pattern := "/v1/oidc/keys/{set}"
	path := binding.EncodeURL(pattern, in, true)
	opts = append(opts, http.Operation(OperationKeyServiceGetJsonWebKeySet))
	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 *KeyServiceHTTPClientImpl) UpdateJsonWebKey(ctx context.Context, in *UpdateJsonWebKeyRequest, opts ...http.CallOption) (*JsonWebKey, error) {
	var out JsonWebKey
	pattern := "/v1/oidc/keys/{set}/{kid}"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation(OperationKeyServiceUpdateJsonWebKey))
	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
}

func (c *KeyServiceHTTPClientImpl) UpdateJsonWebKeySet(ctx context.Context, in *UpdateJsonWebKeySetRequest, opts ...http.CallOption) (*JsonWebKeySet, error) {
	var out JsonWebKeySet
	pattern := "/v1/oidc/keys/{set}"
	path := binding.EncodeURL(pattern, in, false)
	opts = append(opts, http.Operation(OperationKeyServiceUpdateJsonWebKeySet))
	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
}
