/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġthe ĠSc and it ĠData ĠCapture ĠSDK Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 - ĠSc and it ĠAG . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġcom . sc and it . datac apt ure . flutter . parser Ċ Ċ import Ġandroid . util . Base 6 4 Ċ import Ġcom . sc and it . datac apt ure . core . json . JsonValue Ċ import Ġcom . sc and it . datac apt ure . flutter . core . de serializers . Data Capture Context Lifecycle Observer Ċ import Ġcom . sc and it . datac apt ure . flutter . core . de serializers . Deserial izers Ċ import Ġcom . sc and it . datac apt ure . flutter . core . utils . Error Ċ import Ġcom . sc and it . datac apt ure . flutter . core . utils . reject Ċ import Ġcom . sc and it . datac apt ure . flutter . parser . data . Serializable Parse Request Ċ import Ġcom . sc and it . datac apt ure . parser . Parser Ċ import Ġcom . sc and it . datac apt ure . parser . serialization . Parser Deserializer Ċ import Ġcom . sc and it . datac apt ure . parser . serialization . Parser Deserializer Listener Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠSc and it Flutter Data Capture Parser Method Handler ( ĊĠĠĠ Ġprivate Ġval Ġparser Deserializer : ĠParser Deserializer Ġ= ĠParser Deserializer () Ċ ) Ġ: ĠFlutter Plugin , ĠParser Deserializer Listener , ĠMethod Channel . MethodCall Handler , ĊĠĠĠ ĠData Capture Context Lifecycle Observer . Callbacks Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġmethod Channel : ĠMethod Channel ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġparsers : ĠMutable Map < String , ĠParser > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine ( binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparser Deserializer . listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ ĠDeserial izers . Factory . addComponent Deserializer ( parser Deserializer ) ĊĠĠĠĠĠĠĠ ĠData Capture Context Lifecycle Observer . callbacks Ġ+= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine ( binding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDeserial izers . Factory . remove Component Deserializer ( parser Deserializer ) ĊĠĠĠĠĠĠĠ Ġparser Deserializer . listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmethod Channel ?. set MethodCall Handler ( null ) ĊĠĠĠĠĠĠĠ Ġparsers . clear () ĊĠĠĠĠĠĠĠ ĠData Capture Context Lifecycle Observer . callbacks Ġ-= Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall ( call : ĠMethod Call , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMETHOD _ PARSE _ STRING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSerializable Parse Request ( JSONObject ( call . arguments Ġas ĠHashMap < *, Ġ*> )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse String ( request . parser Id , Ġrequest . data , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMETHOD _ PARSE _ RAW _ DATA Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠSerializable Parse Request ( JSONObject ( call . arguments Ġas ĠHashMap < *, Ġ*> )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse RawData ( request . parser Id , Ġrequest . data , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġresult . not Implemented () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse String ( parser Id : ĠString , Ġdata : ĠString , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġparsers [ parser Id ] Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . reject ( ERROR _ INVALID _ PARSER _ ID ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġparsed Data Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser . parse String ( data ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . reject ( ERROR _ PARSER _ FAILURE , Ġe . message ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresult . success ( parsed Data . json String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse RawData ( parser Id : ĠString , Ġdata : ĠString , Ġresult : ĠMethod Channel . Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparser Ġ= Ġparsers [ parser Id ] Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . reject ( ERROR _ INVALID _ PARSER _ ID ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbase 6 4 Bytes Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBase 6 4 . decode ( data , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . reject ( ERROR _ INVALID _ BASE _ 6 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġparsed Data Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparser . parse RawData ( base 6 4 Bytes ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . reject ( ERROR _ PARSER _ FAILURE , Ġe . message ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġresult . success ( parsed Data . json String ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Parser Deserialization Finished ( ĊĠĠĠĠĠĠĠ Ġde serializer : ĠParser Deserializer , ĊĠĠĠĠĠĠĠ Ġparser : ĠParser , ĊĠĠĠĠĠĠĠ Ġjson : ĠJson Value ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparsers [ parser . id ] Ġ= Ġparser ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Parsers Removed () Ġ{ ĊĠĠĠĠĠĠĠ Ġparsers . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠERROR _ INVALID _ PARSER _ ID Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( 1 , Ġ" The Ġparser Ġid Ġdoes Ġnot Ġmatch Ġthe Ġcurrent Ġparser Ġid .") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠERROR _ PARSER _ FAILURE Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( 2 , Ġ" Parser Ġerror : Ġ% s ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠERROR _ INVALID _ BASE _ 6 4 Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError ( 3 , Ġ" Invalid ĠBase 6 4 .") ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMETHOD _ PARSE _ STRING Ġ= Ġ" parse String " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMETHOD _ PARSE _ RAW _ DATA Ġ= Ġ" parse RawData " ĊĠĠĠ Ġ} Ċ } Ċ