diff --git a/src/Curl.jl b/src/Curl.jl index de79e04..a54f8b2 100644 --- a/src/Curl.jl +++ b/src/Curl.jl @@ -192,6 +192,7 @@ mutable struct gRPCRequest keepalive = 60, max_send_message_length = 4 * 1024 * 1024, max_recieve_message_length = 4 * 1024 * 1024, + token = nothing, ) # Reduce number of available requests by one or block if its currently zero acquire(grpc.sem) @@ -247,6 +248,9 @@ mutable struct gRPCRequest headers = curl_slist_append(headers, "te: trailers") headers = curl_slist_append(headers, "grpc-timeout: $(grpc_timeout_header_val(deadline))") + if !isnothing(token) + headers = curl_slist_append(headers, "Authorization: Bearer $(token)") + end curl_easy_setopt(easy_handle, CURLOPT_HTTPHEADER, headers) curl_easy_setopt(easy_handle, CURLOPT_TCP_KEEPALIVE, Clong(1)) diff --git a/src/ProtoBuf.jl b/src/ProtoBuf.jl index 7391e40..74aff47 100644 --- a/src/ProtoBuf.jl +++ b/src/ProtoBuf.jl @@ -24,6 +24,7 @@ function service_codegen_handler(io, t::ServiceType, ctx::Context) println(io, "\tkeepalive=60,") println(io, "\tmax_send_message_length = 4*1024*1024,") println(io, "\tmax_recieve_message_length = 4*1024*1024,") + println(io, "\ttoken=nothing,") println( io, ") = gRPCServiceClient{$request_type, $(rpc.request_stream), $response_type, $(rpc.response_stream)}(", @@ -35,6 +36,7 @@ function service_codegen_handler(io, t::ServiceType, ctx::Context) println(io, "\tkeepalive=keepalive,") println(io, "\tmax_send_message_length=max_send_message_length,") println(io, "\tmax_recieve_message_length=max_recieve_message_length,") + println(io, "\ttoken=token,") println(io, ")\n") end end diff --git a/src/Streaming.jl b/src/Streaming.jl index e2caa4b..41529a6 100644 --- a/src/Streaming.jl +++ b/src/Streaming.jl @@ -187,6 +187,7 @@ function grpc_async_request( keepalive = client.keepalive, max_send_message_length = client.max_send_message_length, max_recieve_message_length = client.max_recieve_message_length, + token = client.token, ) request_task = Threads.@spawn grpc_async_stream_request(req, request) @@ -244,6 +245,7 @@ function grpc_async_request( keepalive = client.keepalive, max_send_message_length = client.max_send_message_length, max_recieve_message_length = client.max_recieve_message_length, + token = client.token, ) response_task = Threads.@spawn grpc_async_stream_response(req, response) @@ -295,6 +297,7 @@ function grpc_async_request( keepalive = client.keepalive, max_send_message_length = client.max_send_message_length, max_recieve_message_length = client.max_recieve_message_length, + token = client.token, ) request_task = Threads.@spawn grpc_async_stream_request(req, request) diff --git a/src/Unary.jl b/src/Unary.jl index 8fe5fa8..188e8d1 100644 --- a/src/Unary.jl +++ b/src/Unary.jl @@ -59,6 +59,7 @@ function grpc_async_request( keepalive = client.keepalive, max_send_message_length = client.max_send_message_length, max_recieve_message_length = client.max_recieve_message_length, + token = client.token, ) req @@ -129,6 +130,7 @@ function grpc_async_request( keepalive = client.keepalive, max_send_message_length = client.max_send_message_length, max_recieve_message_length = client.max_recieve_message_length, + token = client.token, ) Threads.@spawn begin diff --git a/src/gRPC.jl b/src/gRPC.jl index e14e98b..fb648e4 100644 --- a/src/gRPC.jl +++ b/src/gRPC.jl @@ -59,6 +59,7 @@ struct gRPCServiceClient{TRequest,SRequest,TResponse,SResponse} keepalive::Float64 max_send_message_length::Int64 max_recieve_message_length::Int64 + token::Union{Nothing,String} function gRPCServiceClient{TRequest,SRequest,TResponse,SResponse}( host, @@ -70,6 +71,7 @@ struct gRPCServiceClient{TRequest,SRequest,TResponse,SResponse} keepalive = 60, max_send_message_length = 4 * 1024 * 1024, max_recieve_message_length = 4 * 1024 * 1024, + token = nothing, ) where {TRequest<:Any,SRequest,TResponse<:Any,SResponse} new( grpc, @@ -81,6 +83,7 @@ struct gRPCServiceClient{TRequest,SRequest,TResponse,SResponse} keepalive, max_send_message_length, max_recieve_message_length, + token, ) end