Skip to content

Commit

Permalink
apacheGH-35435: [Ruby][Flight] Add ArrowFlight::Client#authenticate_b…
Browse files Browse the repository at this point in the history
…asic (apache#35436)

### Rationale for this change

`ArrowFlight::Client#authenticate_basic_token` is inconvenient because users need to set a returned Bearer token manually.

### What changes are included in this PR?

Adds a convenient method for a common Basic authentication use case.

### Are these changes tested?

Yes.

### Are there any user-facing changes?

Yes.
* Closes: apache#35435

Authored-by: Sutou Kouhei <[email protected]>
Signed-off-by: Sutou Kouhei <[email protected]>
  • Loading branch information
kou authored and ArgusLi committed May 15, 2023
1 parent 0e727b9 commit 2c1ddb1
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
51 changes: 51 additions & 0 deletions ruby/red-arrow-flight/lib/arrow-flight/client.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.

module ArrowFlight
class Client
# Authenticates by Basic authentication.
#
# @param user [String] User name to be used.
# @param password [String] Password to be used.
# @param options [ArrowFlight::CallOptions, Hash, nil] (nil)
# The options to be used.
#
# @return [ArrowFlight::CallOptions] The options that can be used
# for following calls. It includes Bearer token for @user.
#
# If @options is an ArrowFlight::CallOptions, the given @options
# is returned with Bearer token.
#
# If @options isn't an ArrowFlight::CallOptions, a new
# ArrowFlight::CallOptions is created and it's returned.
#
# @since 13.0.0
def authenticate_basic(user, password, options=nil)
unless options.is_a?(CallOptions)
options = CallOptions.try_convert(options)
end
options ||= CallOptions.new
_success, bearer_name, bearer_value =
authenticate_basic_token(user, password, options)
invalid_bearer = (bearer_name.empty? or bearer_value.empty?)
unless invalid_bearer
options.add_header(bearer_name, bearer_value)
end
options
end
end
end
1 change: 1 addition & 0 deletions ruby/red-arrow-flight/lib/arrow-flight/loader.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def post_load(repository, namespace)

def require_libraries
require "arrow-flight/call-options"
require "arrow-flight/client"
require "arrow-flight/client-options"
require "arrow-flight/location"
require "arrow-flight/record-batch-reader"
Expand Down

0 comments on commit 2c1ddb1

Please sign in to comment.