@@ -36,10 +36,9 @@ internal class TradeItOrderService: NSObject {
3636 func cancelOrder(
3737 _ data: TradeItCancelOrderRequest ,
3838 onSuccess: @escaping ( ) -> Void ,
39- onSecurityQuestion: @escaping (
40- TradeItSecurityQuestionResult ,
41- _ submitAnswer: @escaping ( String ) -> Void ,
42- _ onCancelSecurityQuestion: @escaping ( ) -> Void
39+ onVerifyUrl: @escaping (
40+ URL ,
41+ _ complete1FA: @escaping ( ) -> Void
4342 ) -> Void ,
4443 onFailure: @escaping ( TradeItErrorResult ) -> Void
4544 ) {
@@ -54,24 +53,23 @@ internal class TradeItOrderService: NSObject {
5453 let cancelOrderResponseHandler = YCombinator { handler in
5554 { ( result: TradeItResult ? ) in
5655 switch result {
57- case _ as TradeItAllOrderStatusResult :
58- onSuccess ( )
59- case let securityQuestion as TradeItSecurityQuestionResult :
60- onSecurityQuestion (
61- securityQuestion,
62- { securityQuestionAnswer in
63- self . answerSecurityQuestionCancelOrder ( securityQuestionAnswer, withCompletionBlock: handler)
64- } ,
65- {
66- handler (
67- TradeItErrorResult (
68- title: " Authentication failed " ,
69- message: " The security question was canceled. " ,
70- code: . sessionError
71- )
56+ case let verifyOAuthURLResult as TradeItVerifyOAuthURLResult :
57+ guard let oAuthUrl = verifyOAuthURLResult. oAuthUrl ( ) else {
58+ onFailure (
59+ TradeItErrorResult (
60+ title: " Received empty OAuth verify popup URL "
7261 )
62+ )
63+ return
64+ }
65+ onVerifyUrl (
66+ oAuthUrl,
67+ {
68+ self . complete1FA ( completionBlock: handler)
7369 }
7470 )
71+ case _ as TradeItAllOrderStatusResult :
72+ onSuccess ( )
7573 case let errorResult as TradeItErrorResult :
7674 onFailure ( errorResult)
7775 default :
@@ -84,14 +82,15 @@ internal class TradeItOrderService: NSObject {
8482 cancelOrderResponseHandler ( result)
8583 }
8684 }
87-
88- func answerSecurityQuestionCancelOrder ( _ answer : String , withCompletionBlock completionBlock: @escaping ( TradeItResult ) -> Void ) {
89- let secRequest = TradeItSecurityQuestionRequest ( token: self . session. token, andAnswer : answer )
85+
86+ func complete1FA ( completionBlock: @escaping ( TradeItResult ) -> Void ) {
87+ let complete1FARequest = TradeItComplete1FARequest ( token: self . session. token)
9088 let request = TradeItRequestFactory . buildJsonRequest (
91- for: secRequest ,
92- emsAction: " user/answerSecurityQuestion " ,
89+ for: complete1FARequest ,
90+ emsAction: " user/complete1FA " ,
9391 environment: self . session. connector. environment
9492 )
93+
9594 self . session. connector. send ( request, targetClassType: TradeItAllOrderStatusResult . self) { result in
9695 completionBlock (
9796 result ?? TradeItErrorResult . tradeError ( withSystemMessage: " Error canceling order. " )
0 commit comments