xborder commented on code in PR #2651:
URL: https://github.com/apache/arrow-adbc/pull/2651#discussion_r2042041365


##########
go/adbc/driver/flightsql/flightsql_database.go:
##########
@@ -160,14 +162,78 @@ func (d *databaseImpl) SetOptions(cnOptions 
map[string]string) error {
        if p, ok := cnOptions[adbc.OptionKeyPassword]; ok {
                if d.hdrs.Len() > 0 {
                        return adbc.Error{
-                               Msg:  "Authorization header already provided, 
do not provide user/pass also",
+                               Msg:  "Authentication conflict: Use either 
Authorization header OR username/password parameter",
                                Code: adbc.StatusInvalidArgument,
                        }
                }
                d.pass = p
                delete(cnOptions, adbc.OptionKeyPassword)
        }
 
+       // if token exists it can by pass or apply token exchange
+       // else check oauth flow
+       if t, ok := cnOptions[adbc.OptionKeyToken]; ok {
+               if d.hdrs.Len() > 0 {
+                       return adbc.Error{
+                               Msg:  "Authentication conflict: Use either 
Authorization header OR token parameter",
+                               Code: adbc.StatusInvalidArgument,
+                       }
+               }
+
+               // if contains token. it can bypass or use token exchange
+               if flow, ok := cnOptions[OptionKeyOauthFlow]; ok {
+                       var flowVal int
+                       var err error
+                       if flowVal, err = strconv.Atoi(flow); err != nil || 
flowVal != TokenExchange {
+                               return adbc.Error{
+                                       Msg:  "unsupported option",
+                                       Code: adbc.StatusInvalidArgument,
+                               }
+                       }
+
+                       tokExchange, err := newTokenExchangeFlow(cnOptions)
+                       if err != nil {
+                               return err
+                       }
+                       d.oauthFlow = tokExchange
+                       delete(cnOptions, OptionKeyOauthFlow)
+               } else {
+                       d.token = t
+                       delete(cnOptions, adbc.OptionKeyToken)
+               }

Review Comment:
   this was simplified



##########
go/adbc/driver/flightsql/flightsql_database.go:
##########
@@ -160,14 +162,78 @@ func (d *databaseImpl) SetOptions(cnOptions 
map[string]string) error {
        if p, ok := cnOptions[adbc.OptionKeyPassword]; ok {
                if d.hdrs.Len() > 0 {
                        return adbc.Error{
-                               Msg:  "Authorization header already provided, 
do not provide user/pass also",
+                               Msg:  "Authentication conflict: Use either 
Authorization header OR username/password parameter",
                                Code: adbc.StatusInvalidArgument,
                        }
                }
                d.pass = p
                delete(cnOptions, adbc.OptionKeyPassword)
        }
 
+       // if token exists it can by pass or apply token exchange
+       // else check oauth flow
+       if t, ok := cnOptions[adbc.OptionKeyToken]; ok {
+               if d.hdrs.Len() > 0 {
+                       return adbc.Error{
+                               Msg:  "Authentication conflict: Use either 
Authorization header OR token parameter",
+                               Code: adbc.StatusInvalidArgument,
+                       }
+               }
+
+               // if contains token. it can bypass or use token exchange
+               if flow, ok := cnOptions[OptionKeyOauthFlow]; ok {
+                       var flowVal int
+                       var err error
+                       if flowVal, err = strconv.Atoi(flow); err != nil || 
flowVal != TokenExchange {
+                               return adbc.Error{
+                                       Msg:  "unsupported option",
+                                       Code: adbc.StatusInvalidArgument,
+                               }
+                       }
+
+                       tokExchange, err := newTokenExchangeFlow(cnOptions)
+                       if err != nil {
+                               return err
+                       }
+                       d.oauthFlow = tokExchange
+                       delete(cnOptions, OptionKeyOauthFlow)
+               } else {
+                       d.token = t
+                       delete(cnOptions, adbc.OptionKeyToken)
+               }

Review Comment:
   this was simplified and the code deleted



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to