 package ibgroup.services;
 
 import ibgroup.Config;
 import ibgroup.utils.HttpResponse;
 import io.vertx.core.AsyncResult;
 import io.vertx.core.Handler;
 import io.vertx.core.Vertx;
 import io.vertx.core.buffer.Buffer;
 import io.vertx.core.http.HttpClient;
 import io.vertx.core.http.HttpClientResponse;
 import io.vertx.core.http.HttpServerRequest;
 import io.vertx.core.json.JsonArray;
 import io.vertx.core.json.JsonObject;
 import io.vertx.core.logging.Logger;
 import io.vertx.core.logging.LoggerFactory;
 
 public class AmService
   extends BaseServiceProxy {
   private static final Logger logger = LoggerFactory.getLogger(AmService.class);
   private String sessionId = "";
   
   public AmService(Vertx vertx, HttpClient client, Config config) {
     super(vertx, client, config);
   }
   
   public void authenticate() {
     if (isAuthenticated()) {
       logger.info("already authenticated with AM");
       return;
     } 
     logger.info("authenticating with AM {}", new Object[] { host() + ServiceEndPoints.AUTHENTICATE_URL });
     this.proxy.get(ServiceEndPoints.AUTHENTICATE_URL, reply -> {
           if (reply.succeeded()) {
             logger.info("AM response {}", new Object[] { reply.toString() });
             JsonObject obj = ((Buffer)reply.result()).toJsonObject();
             this.sessionId = obj.getString("sessionId", "");
             this.proxy.getExtraHeaders().put("SessionId", this.sessionId);
             logger.info("session id {}", new Object[] { this.sessionId });
           } else {
             logger.error("am authentication failed", reply.cause());
           } 
         }done -> {
           if (!this.sessionId.isEmpty()) {
             on(ServiceEvent.EventType.ON_AM_SESSION_ID, this.sessionId);
           }
         }).end();
   }
   
   public void getAccounts() {
     this.proxy.get(ServiceEndPoints.PICKER_URL, reply -> {
           Buffer result = (Buffer)reply.result();
           logger.info("get am accounts {}", new Object[] { (result != null) ? Integer.valueOf(result.length()) : "null" });
         }done -> this.proxy.get(ServiceEndPoints.ACCTS_URL, ()).end()).end();
   }
   
   public boolean isAuthenticated() {
     return (this.sessionId != null && !this.sessionId.isEmpty());
   }
   
   public void reset() {
     this.sessionId = "";
   }
 
   
   String baseUrl() {
     return "am";
   }
 
   
   void onProxyRequest(HttpServerRequest clientReq, Handler<HttpClientResponse> onEnd) {
     if (!isAuthenticated()) {
       HttpResponse.sendAccessDenied(clientReq);
       return;
     } 
     String uri = clientReq.uri().replaceAll("/.*/am", "/AccountManagement");
     uri = uri.replace("user", "User");
     uri = uri.replace("accounts", "OneBarPicker/Picker/Data");
     uri = uri.replace("pendingitems", "PendingItems");
     uri = uri.replace("notifications", "Notifications");
     uri = uri.replace("transactions", "TransactionHistory/Data");
     uri = uri.replace("flexqueries", "FlexQueries/Download");
     
     this.proxy.internalProxy(uri, clientReq, onEnd);
   }
 }


/* Location:              C:\Users\iuzeri\AppData\Local\Temp\ibrk_cpwa_gateway\dist\ibgroup.web.core.iblink.router.clientportal.gw.jar!\ibgroup\web\core\clientportal\gw\services\AmService.class
 * Java compiler version: 8 (52.0)
 * JD-Core Version:       1.1.3
 */