package Ġcom . stripe . android . model . parsers Ċ Ċ import Ġcom . stripe . android . model . Card Ċ import Ġcom . stripe . android . model . Card Fund ing Ċ import Ġcom . stripe . android . model . Stripe Json Utils Ċ import Ġcom . stripe . android . model . Token ization Method Ċ import Ġorg . json . JSONObject Ċ Ċ internal Ġclass ĠCard Json Parser Ġ: ĠModel Json Parser < Card > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġparse ( json : ĠJSONObject ): ĠCard ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( VALUE _ CARD Ġ!= Ġjson . opt String ( FIELD _ OBJECT )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIt 's Ġokay Ġfor Ġthe Ġmonth Ġto Ġbe Ġmissing , Ġbut Ġnot Ġfor Ġit Ġto Ġbe Ġoutside Ġ 1 - 1 2 . ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġtreat Ġan Ġinvalid Ġmonth Ġthe Ġsame Ġway Ġwe Ġwould Ġan Ġinvalid Ġbrand , Ġby Ġreading Ġit Ġas ĊĠĠĠĠĠĠĠ Ġ// Ġnull . ĊĠĠĠĠĠĠĠ Ġval Ġexp Month Ġ= Ġ( Stripe Json Utils . opt Integer ( json , ĠFIELD _ EXP _ MONTH ) Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Unless Ġ{ Ġit Ġ< Ġ 1 Ġ|| Ġit Ġ> Ġ 1 2 Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexp Year Ġ= Ġ( Stripe Json Utils . opt Integer ( json , ĠFIELD _ EXP _ YEAR ) Ġ?: Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Unless Ġ{ Ġit Ġ< Ġ 0 Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNote Ġthat Ġwe 'll Ġnever Ġget Ġthe ĠC VC Ġor Ġcard Ġnumber Ġin ĠJSON , Ġso Ġthose Ġvalues Ġare Ġnull ĊĠĠĠĠĠĠĠ Ġreturn ĠCard ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexp Month Ġ= Ġexp Month , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexp Year Ġ= Ġexp Year , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress City Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ C ITY ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Line 1 Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ LINE 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Line 1 Check Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ LINE 1 _ CHECK ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Line 2 Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ LINE 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Country Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ COUNTRY ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress State Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ STATE ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Zip Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ ZIP ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Zip Check Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ADDRESS _ ZIP _ CHECK ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrand Ġ= ĠCard . get Card Brand ( Stripe Json Utils . opt String ( json , ĠFIELD _ B RAND )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcountry Ġ= ĠStripe Json Utils . opt CountryCode ( json , ĠFIELD _ COUNTRY ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustomer Id Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ CUSTOMER ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency Ġ= ĠStripe Json Utils . opt Currency ( json , ĠFIELD _ CUR RE NCY ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc vc Check Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ CV C _ CHECK ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunding Ġ= ĠCard Fund ing . from Code ( Stripe Json Utils . opt String ( json , ĠFIELD _ F UND ING )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfingerprint Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ F ING ER PRINT ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ ID ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast 4 Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ LAST 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠStripe Json Utils . opt String ( json , ĠFIELD _ NAME ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken ization Method Ġ= ĠToken ization Method . from Code ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStripe Json Utils . opt String ( json , ĠFIELD _ TOKEN IZATION _ METHOD ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinternal Ġconst Ġval ĠVALUE _ CARD Ġ= Ġ" card " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ OBJECT Ġ= Ġ" object " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ C ITY Ġ= Ġ" address _ city " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ COUNTRY Ġ= Ġ" address _ country " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ LINE 1 Ġ= Ġ" address _ line 1 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ LINE 1 _ CHECK Ġ= Ġ" address _ line 1 _ check " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ LINE 2 Ġ= Ġ" address _ line 2 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ STATE Ġ= Ġ" address _ state " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ ZIP Ġ= Ġ" address _ zip " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ADDRESS _ ZIP _ CHECK Ġ= Ġ" address _ zip _ check " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ B RAND Ġ= Ġ" brand " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ COUNTRY Ġ= Ġ" country " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ CUR RE NCY Ġ= Ġ" currency " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ CUSTOMER Ġ= Ġ" customer " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ CV C _ CHECK Ġ= Ġ" cv c _ check " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ EXP _ MONTH Ġ= Ġ" exp _ month " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ EXP _ YEAR Ġ= Ġ" exp _ year " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ F ING ER PRINT Ġ= Ġ" fingerprint " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ F UND ING Ġ= Ġ" fund ing " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ NAME Ġ= Ġ" name " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ LAST 4 Ġ= Ġ" last 4 " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ ID Ġ= Ġ" id " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFIELD _ TOKEN IZATION _ METHOD Ġ= Ġ" token ization _ method " ĊĠĠĠ Ġ} Ċ } Ċ