// Ċ // Ġ ĠUser . kt Ċ // Ġ ĠOrder Cloud SDK Ċ // Ċ // Ġ ĠCreated Ġby ĠBen ĠLe ĠCam Ġon Ġ 1 / 8 / 1 6 . Ċ // Ġ ĠCopyright ĠÂ© Ġ 2 0 1 6 ĠBen ĠLe ĠCam . ĠAll Ġrights Ġreserved . Ċ // ĊĊ Ċ package Ġcom . four 5 1 . order cloud Ċ Ċ import Ġcom . be ust . kl ax on .* Ċ import Ġcom . github . kit tin un f . fuel . core . Fuel Error Ċ import Ġcom . github . kit tin un f . fuel . core . Request Ċ import Ġcom . github . kit tin un f . fuel . core . Response Ċ import Ġcom . github . kit tin un f . result . Result Ċ import Ġorg . joda . time . DateTime Ċ import Ġjava . util .* Ċ Ċ public Ġclass ĠUser Ġ: ĠSerializable Ġ{ ĊĠĠĠ Ġ// ĠSingleton Ġpattern ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġpublic Ġval ĠcurrentUser : ĠUser Ġ= ĠUser () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPrivate Ġproperties ĊĠĠĠ Ġprivate Ġvar ĠaccessToken : ĠString Ġ= ĠString () ĊĊĠĠĠ Ġ// ĠPublic Ġproperties ĊĠĠĠ Ġpublic Ġvar ĠfirstName : ĠString ? Ġ= ĠString () ĊĠĠĠ Ġpublic Ġvar ĠlastName : ĠString ? Ġ= ĠString () ĊĠĠĠ Ġpublic Ġvar Ġid : ĠString Ġ= ĠString () ĊĠĠĠ Ġpublic Ġvar Ġusername : ĠString Ġ= ĠString () ĊĠĠĠ Ġpublic Ġvar Ġemail : ĠString ? Ġ= ĠString () ĊĠĠĠ Ġpublic Ġvar Ġphone : ĠString ? Ġ= ĠString () ĊĠĠĠ Ġpublic Ġvar Ġterms Accepted : ĠDateTime ? Ġ= ĠDateTime () ĊĠĠĠ Ġpublic Ġvar Ġactive : ĠBoolean ? Ġ= Ġfalse ĊĠĠĠ Ġpublic Ġvar Ġxp : ĠJsonObject ? Ġ= ĠJsonObject () ĊĠĠĠ Ġpublic Ġvar Ġsecurity Profile Id : ĠInt ? Ġ= Ġnull ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠAccess Ġtoken Ġgetter ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget AccessToken (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . accessToken ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠMethod Ġto Ġsetup Ġuser Ġgiven Ġa Ġtoken ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġsetup With Token ( token : ĠString , Ġcompletion Handler : Ġ( Request , ĠResponse , ĠResult < String , ĠF uel Error >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . accessToken Ġ= Ġtoken ĊĠĠĠĠĠĠĠ ĠApi . get (" me ", Ġcompletion Handler Ġ= Ġcompletion Handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠAuth enticate Ġa Ġuser Ġgiven Ġan Ġusername , Ġpassword Ġand Ġscope Ġas Ġwell Ġas Ġa Ġpotential Ġhandler ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġauthenticate ( username : ĠString , Ġpassword : ĠString , Ġscope : ĠString Ġ= Ġ" Full Access ", Ġcompletion Handler : Ġ( Request , ĠResponse , ĠResult < String , ĠF uel Error >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauth Params Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" grant _ type " Ġto Ġ" password ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" client _ id " Ġto ĠOrder Cloud . getClient Id (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" username " Ġto Ġusername , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġto Ġpassword , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" scope " Ġto Ġscope ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠHttp . request ( method Ġ= ĠHttp . Method . POST , Ġurl Ġ= ĠUtil . auth Url (), Ġparameters Ġ= Ġauth Params , Ġcompletion Handler Ġ= Ġcompletion Handler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠReturns Ġwhether Ġthe Ġuser Ġis Ġauthenticated Ġor Ġnot ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġis Authenticated (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . accessToken . count () Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠLog Ġuser Ġout Ġby Ġremoving Ġall Ġof Ġits Ġdata ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . accessToken Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . firstName Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . lastName Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . id Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . username Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . email Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . phone Ġ= ĠString () ĊĠĠĠĠĠĠĠ Ġthis . terms Accepted Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . active Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġthis . xp Ġ= ĠJsonObject () ĊĠĠĠĠĠĠĠ Ġthis . security Profile Id Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġpublic Ġfun Ġdeserialize ( json Data : ĠJsonObject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// super . deserialize ( json Data ) ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . firstName Ġ= Ġjson Data . string (" FirstName ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġfirst name ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . lastName Ġ= Ġjson Data . string (" LastName ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġlastname ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . id Ġ= Ġjson Data . string (" ID ") !! ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġid ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . username Ġ= Ġjson Data . string (" Username ") !! ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġusername ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . email Ġ= Ġjson Data . string (" Email ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġemail ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . phone Ġ= Ġjson Data . string (" Phone ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġphone ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . terms Accepted Ġ= ĠDateTime . parse ( json Data . string (" Terms Accepted ")) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġterms Ġaccepted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . active Ġ= Ġjson Data . boolean (" Active ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġactive ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . xp Ġ= Ġjson Data . obj (" xp ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġxp ") ĊĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis . security Profile Id Ġ= Ġjson Data . int (" Security Profile ID ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Error : Ġcould Ġnot Ġparse ĠJSON Ġfield : Ġsecurity Ġprofile ") Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġpublic Ġfun Ġserialize (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ID " Ġto Ġthis . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Username " Ġto Ġthis . username , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FirstName " Ġto Ġthis . firstName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LastName " Ġto Ġthis . lastName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Email " Ġto Ġthis . email , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Phone " Ġto Ġthis . phone , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Terms Accepted " Ġto Ġthis . terms Accepted . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Active " Ġto Ġthis . active , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" xp " Ġto Ġthis . xp Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Security Profile ID " Ġto Ġthis . security Profile Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ