Package com.aelitis.azureus.core.metasearch.impl.web

Examples of com.aelitis.azureus.core.metasearch.impl.web.WebEngine


      final Engine engine = getEngineFromId(engine_id);
     
      if ( engine != null && engine instanceof WebEngine){
       
        final WebEngine webEngine = (WebEngine) engine;

        Utils.execSWTThread( new Runnable() {
          public void run() {
            new ExternalLoginWindow(
              new ExternalLoginListener()
              {
                private String previous_cookies;
               
                private boolean  search_done;
               
                public void
                canceled(
                  ExternalLoginWindow   window )
                {
                  /* gouss doesn't wan't anything on cancel
                  if ( !outcome_informed ){
                   
                    outcome_informed = true;
                   
                    Map params = getParams( webEngine );
                   
                    params.put( "error", "operation cancelled" );
                   
                    sendBrowserMessage("metasearch", "engineFailed", params );
                  }
                  */
                }
 
                public void
                cookiesFound(
                  ExternalLoginWindow   window,
                  String           cookies )
                {
                  if ( handleCookies( cookies, false )){
                   
                    window.close();                 
                  }
                }
 
                public void
                done(
                  ExternalLoginWindow   window,
                  String           cookies )
                {
                  handleCookies( cookies, true );
                 
                  /*
                  if ( !outcome_informed ){
                   
                    outcome_informed = true;
                   
                    Map params = getParams( webEngine );
                                       
                    sendBrowserMessage("metasearch", "engineCompleted", params );
                  }
                  */
                }
               
                private boolean
                handleCookies(
                  String    cookies,
                  boolean    force_if_ready )
                {
                  if ( search_done ){
                   
                    return( false );
                  }
                 
                  String[] required = webEngine.getRequiredCookies();
                 
                  boolean  skip_search = required.length == 0 && !force_if_ready;
                 
                  if ( CookieParser.cookiesContain( required, cookies )){
                     
                    webEngine.setCookies(cookies);
                   
                    if ( previous_cookies == null || !previous_cookies.equals( cookies )){
                     
                      previous_cookies = cookies;
                     
                      if ( !skip_search ){
                       
                          // search operation will report outcome
                       
                        search_done  = true;
                       
                        search( decodedMap, webEngine );
                      }
                    }
                  }
 
                  return( search_done );
                }
               
                /*
                protected Map
                getParams(
                  Engine  engine )
                {
                  Map params = new HashMap();
                  params.put("id", new Long(engine.getId()));
                  params.put("name", engine.getName());
                  params.put("favicon", engine.getIcon());
                  params.put("dl_link_css", engine.getDownloadLinkCSS());
                  params.put("shareable", new Boolean( engine.isShareable()));
                 
                  if ( sid != null ){
                    params.put( "sid", sid );
                  }
                  return( params );
                }
                */
              },
            webEngine.getName(),
            webEngine.getLoginPageUrl(),
            false,
            webEngine.getAuthMethod(),
            engine.isMine());
          }
        });
      }else{
       
        Map params = new HashMap();
       
        if ( sid != null ){
          params.put( "sid", sid );
        }
        params.put( "error", "engine not found or not a web engine" );
       
        sendBrowserMessage("metasearch", "engineFailed", params );
      }
    } else if(OP_GET_LOGIN_COOKIES.equals(opid)) {
     
      final Map decodedMap = message.getDecodedMap();
     
      final String url = ((String) decodedMap.get("url")).replaceAll("%s", "");
     
      Utils.execSWTThread( new Runnable() {
        public void run() {
          new ExternalLoginWindow(
            new ExternalLoginListener()
            { 
            public void canceled(ExternalLoginWindow window) {
              sendBrowserMessage("metasearch", "setCookiesFailed", new HashMap() );
            };
            public void cookiesFound(ExternalLoginWindow window, String cookies) {};
            public void done(ExternalLoginWindow window, String cookies) {
              String[] cookieNames = CookieParser.getCookiesNames(cookies);
              Map params = new HashMap();
              params.put("cookieNames", cookieNames);
              params.put("currentCookie",cookies);
              params.put("cookieMethod", window.proxyCaptureModeRequired()?WebEngine.AM_PROXY:WebEngine.AM_TRANSPARENT );
              sendBrowserMessage("metasearch", "setCookies", params );
            };
            },
            url,
            url,
            true,
            WebEngine.AM_PROXY,
            true );
        }
      });
     
     
    } else if(OP_GET_ENGINES.equals(opid)) {
      String subscriptionId  = null;
     
      try {
        final Map decodedMap = message.getDecodedMap();

        subscriptionId    = ((String)decodedMap.get("subs_id"));
      } catch(Exception e) {
        //No parameters
      }
     
      Engine[] engines = null;
     
      if ( subscriptionId != null ){
       
        engines = new Engine[0];
       
        Subscription subs = SubscriptionManagerFactory.getSingleton().getSubscriptionByID( subscriptionId );
       
        if ( subs != null ){
       
          try{
            Engine engine = subs.getEngine();
           
            if ( engine != null ){
             
              engines = new Engine[]{ engine };
            }
          }catch( Throwable e ){
         
            Debug.out( e );
          }
        }
      }
     
      if ( engines == null ){
       
        engines = metaSearchManager.getMetaSearch().getEngines( true, true );
      }
     
      List params = new ArrayList();
      for(int i = 0 ; i < engines.length ; i++) {
        Engine engine = engines[i];
       
        if ( !engine.isActive() || engine.getSource() == Engine.ENGINE_SOURCE_UNKNOWN ){
         
            // don't skip if this is an explicit get
         
          if ( subscriptionId == null ){
         
            continue;
          }
        }
        Map engineMap = new HashMap();
        engineMap.put("id", new Long(engine.getId()));
        engineMap.put("name", engine.getName());
        engineMap.put("favicon", engine.getIcon());
        engineMap.put("dl_link_css", engine.getDownloadLinkCSS());
        engineMap.put("selected", Engine.SEL_STATE_STRINGS[ engine.getSelectionState()]);
        engineMap.put("type", Engine.ENGINE_SOURCE_STRS[ engine.getSource()]);
        engineMap.put("shareable", new Boolean( engine.isShareable()));
        params.add(engineMap);
      }
      sendBrowserMessage("metasearch", "enginesUsed",params);
     
    } else if(OP_GET_ALL_ENGINES.equals(opid)) {

      Engine[] engines = metaSearchManager.getMetaSearch().getEngines( false, true );
      List params = new ArrayList();
      for(int i = 0 ; i < engines.length ; i++) {
        Engine engine = engines[i];
       
        if ( engine.getSource() == Engine.ENGINE_SOURCE_UNKNOWN ){
          continue;
        }
       
        Map engineMap = new HashMap();
        engineMap.put("id", new Long(engine.getId()));
        engineMap.put("name", engine.getName());
        engineMap.put("favicon", engine.getIcon());
        engineMap.put("dl_link_css", engine.getDownloadLinkCSS());
        engineMap.put("selected", Engine.SEL_STATE_STRINGS[ engine.getSelectionState()]);
        engineMap.put("type", Engine.ENGINE_SOURCE_STRS[ engine.getSource()]);
        engineMap.put("shareable", new Boolean( engine.isShareable()));
        params.add(engineMap);
      }
      sendBrowserMessage("metasearch", "engineList",params);
     
    } else if( OP_SET_SELECTED_ENGINES.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      List template_ids = (List)decodedMap.get( "template_ids" );
     
      long[] ids = new long[template_ids.size()];
     
      for (int i=0;i<ids.length;i++ ){
       
        Map m = (Map)template_ids.get(i);
       
        ids[i] = ((Long)m.get("id")).longValue();
      }
     
      boolean  auto = ((Boolean)decodedMap.get( "auto" )).booleanValue();
     
        // there's some code that attempts to switch to 'auto=true' on first use as
        // when 3110 defaults to false and the decision was made to switch this
        // disable the behaviour if we are customised
     
     
      Boolean  is_default = (Boolean)decodedMap.get( "set_default" );
     
      boolean skip = false;
     
      if ( is_default != null && is_default.booleanValue()){
       
        if ( CustomizationManagerFactory.getSingleton().getActiveCustomization() != null ){
         
          skip = true;
        }
      }
     
      try{
        if ( !skip ){
         
          metaSearchManager.setSelectedEngines( ids, auto );
        }
       
        Map params = new HashMap();
        sendBrowserMessage("metasearch", "setSelectedCompleted",params);

      }catch( Throwable e ){
       
        Map params = new HashMap();
        params.put("error",Debug.getNestedExceptionMessage(e));

        sendBrowserMessage("metasearch", "setSelectedFailed",params);
      }
    } else if( OP_CHANGE_ENGINE_SELECTION.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      MetaSearch ms = metaSearchManager.getMetaSearch();
     
      Engine[] engines = ms.getEngines( false, true );
     
      Set selected = new HashSet();
     
      for (int i=0;i<engines.length;i++){
       
        Engine e = engines[i];
       
        if ( e.getSelectionState() == Engine.SEL_STATE_MANUAL_SELECTED ){
         
          selected.add( new Long( e.getId()));
        }
      }
     
      List l_engines = (List)decodedMap.get( "engines" );
     
      for (int i=0;i<l_engines.size();i++){
       
        Map  map = (Map)l_engines.get(i);
       
        long id = ((Long)map.get("id")).longValue();

        String str = (String)map.get( "selected");
       
        if ( str.equalsIgnoreCase( Engine.SEL_STATE_STRINGS[Engine.SEL_STATE_MANUAL_SELECTED])){
         
          selected.add( new Long( id ));
         
        }else if ( str.equalsIgnoreCase( Engine.SEL_STATE_STRINGS[Engine.SEL_STATE_DESELECTED])){
         
          selected.remove( new Long( id ));
        }
      }
     
      long[] ids = new long[selected.size()];
     
      Iterator it = selected.iterator();
     
      int  pos = 0;
     
      while( it.hasNext()){
       
        long   id = ((Long)it.next()).longValue();
       
        ids[pos++] = id;
      }
           
      try{
        metaSearchManager.setSelectedEngines( ids, metaSearchManager.isAutoMode());
       
        Map params = new HashMap();
        sendBrowserMessage("metasearch", "changeEngineSelectionCompleted",params);

      }catch( Throwable e ){
       
        Map params = new HashMap();
        params.put("error",Debug.getNestedExceptionMessage(e));

        sendBrowserMessage("metasearch", "changeEngineSelectionFailed",params);
     
    } else if(OP_GET_AUTO_MODE.equals(opid)) {
           
      boolean mode = metaSearchManager.isAutoMode();
     
      Map params = new HashMap();
     
      params.put( "auto", new Boolean( mode ));

      boolean custom = CustomizationManagerFactory.getSingleton().getActiveCustomization() != null;
           
      params.put( "is_custom", new Boolean( custom ));

      sendBrowserMessage("metasearch", "getAutoModeResult",params);
     
    } else if( OP_SAVE_TEMPLATE.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      String  type_str = (String)decodedMap.get( "type" );
     
      String  name = (String)decodedMap.get( "name" );
     
      Long  l_id  = (Long)decodedMap.get( "id" );
     
      long  id = l_id == null?-1:l_id.longValue();
     
      String  json = (String)decodedMap.get( "value" );
     
      String  cookies = (String)decodedMap.get( "current_cookie" );
     
     
      try{
        Engine engine =
          metaSearchManager.addEngine(
              id,
              type_str.equals( "json" )?Engine.ENGINE_TYPE_JSON:Engine.ENGINE_TYPE_REGEX,
              name,
              json );
       
        engine.setMine( true );
       
        if(cookies!= null && engine instanceof WebEngine) {
          WebEngine we = (WebEngine) engine;
          we.setCookies(cookies);
        }
       
        Map params = new HashMap();
        params.put( "id", new Long( engine.getId() ));
 
        sendBrowserMessage( "metasearch", "saveTemplateCompleted", params );
       
      }catch( Throwable e ){
       
        Map params = new HashMap();
        params.put( "id", new Long( id ));
        params.put("error",Debug.getNestedExceptionMessage(e));

        sendBrowserMessage("metasearch", "saveTemplateFailed",params);
      }
    } else if( OP_LOAD_TEMPLATE.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      long  id  = ((Long)decodedMap.get( "id" )).longValue();
     
      Engine engine = metaSearchManager.getMetaSearch().getEngine( id );
   
      if ( engine == null ){
     
        Map params = new HashMap();
        params.put( "id", new Long( id ));
        params.put("error","Template not found");

        sendBrowserMessage("metasearch", "loadTemplateFailed",params);
       
      }else{
       
        try{
          Map params = new HashMap();
          params.put("id", new Long(engine.getId()));
          params.put("name", engine.getName());
          params.put("type", Engine.ENGINE_TYPE_STRS[ engine.getType()]);
          params.put("value", JSONObject.escape( engine.exportToJSONString()));
          params.put("shareable", new Boolean( engine.isShareable()));
         
          params.put("uid", engine.getUID());
         
          params.put("supports_direct_download",
                  new Boolean(   engine.supportsField( Engine.FIELD_TORRENTLINK ) ||
                          engine.supportsField( Engine.FIELD_DOWNLOADBTNLINK )));
         
          params.put( "auto_dl_supported", new Boolean( engine.getAutoDownloadSupported() == Engine.AUTO_DL_SUPPORTED_YES ));

          sendBrowserMessage( "metasearch", "loadTemplateCompleted", params );
         
        }catch( Throwable e ){
         
          Map params = new HashMap();
          params.put( "id", new Long( id ));
          params.put("error",Debug.getNestedExceptionMessage(e));

          sendBrowserMessage("metasearch", "loadTemplateFailed",params);
        }
      }   
    } else if( OP_DELETE_TEMPLATE.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      long  id  = ((Long)decodedMap.get( "id" )).longValue();
     
      Engine engine = metaSearchManager.getMetaSearch().getEngine( id );
     
      if ( engine == null ){
     
        Map params = new HashMap();
        params.put( "id", new Long( id ));
        params.put( "error", "Template not found" );

        sendBrowserMessage("metasearch", "deleteTemplateFailed",params);
     
      }else if ( engine.getSource() != Engine.ENGINE_SOURCE_LOCAL ){
     
        Map params = new HashMap();
        params.put( "id", new Long( id ));
        params.put( "error", "Template is not local" );

        sendBrowserMessage("metasearch", "deleteTemplateFailed",params);
       
      }else{
       
        engine.delete();
       
        Map params = new HashMap();
        params.put( "id", new Long( id ));
        sendBrowserMessage( "metasearch", "deleteTemplateCompleted", params );
      }
    } else if( OP_TEST_TEMPLATE.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      final long  id    = ((Long)decodedMap.get( "id" )).longValue();
      long  match_count  = ((Long)decodedMap.get( "max_matches" )).longValue();
     
      String searchText   = (String) decodedMap.get("searchText");
      String headers    = (String) decodedMap.get("headers");

      final Long  sid = (Long)decodedMap.get( "sid" );

      Engine engine = metaSearchManager.getMetaSearch().getEngine( id );
     
      if ( engine == null ){
     
        Map params = new HashMap();
        params.put( "id", new Long( id ));
        params.put( "error", "Template not found" );
        if ( sid != null )params.put( "sid", sid );

        sendBrowserMessage("metasearch", "testTemplateFailed",params);
     
      }else{
       
        SearchParameter parameter = new SearchParameter("s",searchText);
        SearchParameter[] parameters = new SearchParameter[] {parameter};

        try{
       
          engine.search(
              parameters,
              new HashMap(),
              (int)match_count,
              (int)match_count,
              headers,
              new ResultListener()
              {
                private String  content;
                private List  matches = new ArrayList();
               
                public void
                contentReceived(
                  Engine     engine,
                  String     _content )
                {
                  content = _content;
                }
               
                public void
                matchFound(
                  Engine     engine,
                  String[]   fields)
                {
                  matches.add( fields );
                }
               
                public void
                resultsReceived(
                  Engine     engine,
                  Result[]   results )
                {               
                }
               
                public void
                resultsComplete(
                  Engine     engine )
                {
                  Map params = new HashMap();
                  params.put( "id", new Long( id ));
                  if ( sid != null )params.put( "sid", sid );
                  params.put( "content", JSONObject.escape( content ));
 
                  JSONArray  l_matches = new JSONArray();
                 
                  params.put( "matches", l_matches );
                 
                  for (int i=0;i<matches.size();i++){
                   
                    String[]  match = (String[])matches.get(i);
                   
                    JSONArray  l_match = new JSONArray();
                   
                    l_matches.add( l_match );
                   
                    for (int j=0;j<match.length;j++){
                     
                      l_match.add( match[j] );
                    }
                  }
                               
                  sendBrowserMessage( "metasearch", "testTemplateCompleted", params );
       
                }
               
                public void
                engineFailed(
                  Engine     engine,
                  Throwable   e )
                {
                  Map params = new HashMap();
                  params.put( "id", new Long( id ));
                  params.put( "error", Debug.getNestedExceptionMessage( e ));
                  if ( sid != null )params.put( "sid", sid );
 
                  sendBrowserMessage("metasearch", "testTemplateFailed",params);
                }
               
                public void
                engineRequiresLogin(
                  Engine     engine,
                  Throwable   e )
                {
                  Map params = new HashMap();
                  params.put( "id", new Long( id ));
                  params.put( "error", Debug.getNestedExceptionMessage( e ));
                  if ( sid != null )params.put( "sid", sid );
 
                  sendBrowserMessage("metasearch", "testTemplateRequiresLogin",params);
                }
              });
        }catch( SearchException e ){
            // listener handles
        }
      } 
    } else if ( OP_EXPORT_TEMPLATE.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();

      final long  id    = ((Long)decodedMap.get( "id" )).longValue();
     
      final Engine engine = metaSearchManager.getMetaSearch().getEngine( id );
     
      if ( engine == null ){
       
        Map params = new HashMap();
        params.put( "error", "template '" + id + "' not found" );

        sendBrowserMessage("metasearch", "exportTemplateFailed",params);
       
      }else{
        final Shell shell = Utils.findAnyShell();
       
        shell.getDisplay().asyncExec(
          new AERunnable()
          {
            public void
            runSupport()
            {
              FileDialog dialog =
                new FileDialog( shell, SWT.SYSTEM_MODAL | SWT.SAVE );
             
              dialog.setFilterPath( TorrentOpener.getFilterPathData() );
                         
              dialog.setText(MessageText.getString("metasearch.export.select.template.file"));
             
              dialog.setFilterExtensions(new String[] {
                  "*.vuze",
                  "*.vuz",
                  Constants.FILE_WILDCARD
                });
              dialog.setFilterNames(new String[] {
                  "*.vuze",
                  "*.vuz",
                  Constants.FILE_WILDCARD
                });
             
              String path = TorrentOpener.setFilterPathData( dialog.open());
   
              if ( path != null ){
               
                String lc = path.toLowerCase();
               
                if ( !lc.endsWith( ".vuze" ) && !lc.endsWith( ".vuz" )){
                 
                  path += ".vuze";
                }
               
                try{
                  engine.exportToVuzeFile( new File( path ));
                 
                  Map params = new HashMap();
                  params.put( "id", new Long( id ));
                  sendBrowserMessage( "metasearch", "exportTemplateCompleted", params );

                }catch( Throwable e ){
                 
                  Map params = new HashMap();
                  params.put( "id", new Long( id ));
                  params.put( "error", "save failed: " + Debug.getNestedExceptionMessage(e));

                  sendBrowserMessage("metasearch", "exportTemplateFailed",params);
                }
              }else{
               
                Map params = new HashMap();
                params.put( "id", new Long( id ));
                params.put( "error", "operation cancelled" );

                sendBrowserMessage("metasearch", "exportTemplateFailed",params);
              }
            }
          });
      }
    }else if ( OP_IMPORT_TEMPLATE.equals(opid)){
           
      final Shell shell = Utils.findAnyShell();
     
      shell.getDisplay().asyncExec(
        new AERunnable()
        {
          public void
          runSupport()
          {
            FileDialog dialog =
              new FileDialog( shell, SWT.SYSTEM_MODAL | SWT.OPEN );
           
            dialog.setFilterPath( TorrentOpener.getFilterPathData() );
                       
            dialog.setText(MessageText.getString("metasearch.import.select.template.file"));
           
            dialog.setFilterExtensions(new String[] {
                "*.vuze",
                "*.vuz",
                Constants.FILE_WILDCARD
              });
            dialog.setFilterNames(new String[] {
                "*.vuze",
                "*.vuz",
                Constants.FILE_WILDCARD
              });
           
            String path = TorrentOpener.setFilterPathData( dialog.open());
 
            if ( path != null ){
             
              VuzeFileHandler vfh = VuzeFileHandler.getSingleton();
             
              VuzeFile vf = vfh.loadAndHandleVuzeFile( path, VuzeFileComponent.COMP_TYPE_METASEARCH_TEMPLATE );
             
              if ( vf == null ){
               
                Map params = new HashMap();
                params.put( "error", "invalid .vuze file" );

                sendBrowserMessage("metasearch", "importTemplateFailed",params);
               
              }else{
               
                VuzeFileComponent[] comps = vf.getComponents();
               
                for (int i=0;i<comps.length;i++){
                 
                  VuzeFileComponent comp = comps[i];
                 
                  if ( comp.getType() == VuzeFileComponent.COMP_TYPE_METASEARCH_TEMPLATE ){
                   
                    Engine engine = (Engine)comp.getData( Engine.VUZE_FILE_COMPONENT_ENGINE_KEY );
                   
                    if ( engine != null ){
                     
                      Map params = new HashMap();
                      params.put( "id", new Long( engine.getId()));
                      sendBrowserMessage( "metasearch", "importTemplateCompleted", params );

                      return;
                    }
                  }
                }
               
                Map params = new HashMap();
                params.put( "error", "invalid search template file" );

                sendBrowserMessage("metasearch", "importTemplateFailed",params);
              }
            }else{
             
              Map params = new HashMap();
                // don't change this message as the UI uses it!
              params.put( "error", "operation cancelled" );

              sendBrowserMessage("metasearch", "importTemplateFailed",params);
            }
          }
        });
    }else if ( OP_OPEN_SEARCH_RESULTS.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();
      openCloseSearchDetailsListener.openSearchResults(decodedMap);
    }else if ( OP_CLOSE_SEARCH_RESULTS.equals(opid)){
     
      Map decodedMap = message.getDecodedMap();
      openCloseSearchDetailsListener.closeSearchResults(decodedMap);
    }else if(OP_LOAD_TORRENT.equals(opid)) {
      Map decodedMap = message.getDecodedMap();
     
      String torrentUrl    = (String) decodedMap.get( "torrent_url" );
      String referer_str  = (String) decodedMap.get( "referer_url" );
     
      if ( UrlFilter.getInstance().isWhitelisted( torrentUrl )){
       
        ContentNetwork cn = ContentNetworkManagerFactory.getSingleton().getContentNetworkForURL( torrentUrl );
       
        if ( cn == null ){
         
          cn = ConstantsVuze.getDefaultContentNetwork();
        }
       
        torrentUrl = cn.appendURLSuffix( torrentUrl, false, true );
      }
     
      try {
     
        Map headers = UrlUtils.getBrowserHeaders( referer_str );
       
        String subscriptionId    = ((String)decodedMap.get("subs_id"));
        String subscriptionResultId = ((String)decodedMap.get("subs_rid"));
       
        if ( subscriptionId != null ){
         
          Subscription subs = SubscriptionManagerFactory.getSingleton().getSubscriptionByID( subscriptionId );
         
          if ( subs != null ){
         
            try{
              Engine engine = subs.getEngine();
             
              if ( engine != null && engine instanceof WebEngine ){
               
                WebEngine webEngine = (WebEngine) engine;
               
                if ( webEngine.isNeedsAuth()){
                 
                  headers.put( "Cookie",webEngine.getCookies());
                }
              }
            }catch( Throwable e ){
           
              Debug.out( e );
            }
           
            if ( subscriptionResultId != null ){
           
              subs.addPotentialAssociation( subscriptionResultId, torrentUrl );
            }
          }
        }else{
          try{
            long engineID    = ((Long)decodedMap.get("engine_id")).longValue();

            Engine engine = metaSearchManager.getMetaSearch().getEngine( engineID );
           
            if ( engine != null ){
             
              engine.addPotentialAssociation( torrentUrl );
            }
           
            if ( engine != null && engine instanceof WebEngine ){
             
              WebEngine webEngine = (WebEngine) engine;
             
              if ( webEngine.isNeedsAuth()){
               
                headers.put( "Cookie",webEngine.getCookies());
              }
            }
          }catch( Throwable e ){
         
            Debug.printStackTrace(e);
View Full Code Here


      try{
        Engine engine = subs.getEngine();
       
        if ( engine instanceof WebEngine ){
       
          final WebEngine webEngine = (WebEngine)engine;
       
          synchronized( active_subs_auth ){
           
            if ( active_subs_auth.contains( subs )){
             
              return( false );
            }
           
            active_subs_auth.add( subs );
          }
         
          Utils.execSWTThread( new Runnable() {
            public void run() {
              new ExternalLoginWindow(
                new ExternalLoginListener()
                {
                  private String previous_cookies;
                 
                  private boolean  result_sent;
                 
                  public void
                  canceled(
                    ExternalLoginWindow   window )
                  {
                    try{
                      encodeResults( subs, result );
                     
                      sendBrowserMessage( "metasearch", "readSubscriptionResultsCompleted", result );
                     
                    }finally{
                     
                      completed();
                    }
                  }
   
                  public void
                  cookiesFound(
                    ExternalLoginWindow   window,
                    String           cookies )
                  {
                    if ( handleCookies( cookies, false )){
                     
                      window.close();                 
                    }
                  }
   
                  public void
                  done(
                    ExternalLoginWindow   window,
                    String           cookies )
                  {
                    try{
                      if ( !handleCookies( cookies, true )){
                       
                        encodeResults( subs, result );
                       
                        sendBrowserMessage( "metasearch", "readSubscriptionResultsCompleted", result );
                      }
                    }finally{
                     
                      completed();
                    }
                  }
                 
                  private void
                  completed()
                  {
                    synchronized( active_subs_auth ){

                      active_subs_auth.remove( subs );
                    }
                  }
                 
                  private boolean
                  handleCookies(
                    String    cookies,
                    boolean    force_if_ready )
                  {
                    if ( result_sent ){
                     
                      return( false );
                    }
                   
                    String[] required = webEngine.getRequiredCookies();
                   
                    boolean  skip = required.length == 0 && !force_if_ready;
                   
                    if ( CookieParser.cookiesContain( required, cookies )){
                       
                      webEngine.setCookies(cookies);
                     
                      if ( previous_cookies == null || !previous_cookies.equals( cookies )){
                       
                        previous_cookies = cookies;
                       
                        if ( !skip ){
                         
                            // search operation will report outcome
                         
                          result_sent  = true;
                         
                          try{
                            subs.getManager().getScheduler().download(
                              subs,
                              false,
                              new SubscriptionDownloadListener()
                              {
                                public void
                                complete(
                                  Subscription    subs )
                                {
                                  result.put( "id", subs.getID());
                                 
                                  encodeResults( subs, result );
                                 
                                  sendBrowserMessage( "metasearch", "readSubscriptionResultsCompleted", result );
                                }
                               
                                public void
                                failed(
                                  Subscription      subs,
                                  SubscriptionException  error )
                                {
                                  result.put( "error", "read failed: " + Debug.getNestedExceptionMessage(error));
 
                                  sendBrowserMessage( "metasearch", "readSubscriptionResultsFailed", result );
                                }
                              });   
                          }catch( Throwable error ){
                           
                            result.put( "error", "read failed: " + Debug.getNestedExceptionMessage(error));
 
                            sendBrowserMessage( "metasearch", "readSubscriptionResultsFailed", result );
                          }
                        }
                      }
                    }
   
                    return( result_sent );
                  }
                },
              webEngine.getName(),
              webEngine.getLoginPageUrl(),
              false,
              webEngine.getAuthMethod(),
              subs.isMine());
            }
          });
         
          return( true );
View Full Code Here

                 
                  Engine engine = subs.getEngine();
                 
                  if ( engine instanceof WebEngine ){
                   
                    WebEngine we = (WebEngine)engine;
                   
                    if ( we.isNeedsAuth()){
                     
                      String cookies = we.getCookies();
                     
                      if ( cookies != null && cookies.length() > 0 ){
                       
                        url_rd.setProperty( "URL_Cookie", cookies );
                      }
View Full Code Here

              try{
                Engine engine = subs.getEngine();
               
                if ( engine instanceof WebEngine ){
                 
                  final WebEngine we = (WebEngine)engine;
                 
                  UISWTInputReceiver entry = new SimpleTextEntryWindow();
                 
                  String[] req = we.getRequiredCookies();
                 
                  String  req_str = "";
                 
                  for ( String r:req ){
                   
                    req_str += (req_str.length()==0?"":";") + r + "=?";
                  }
                  entry.setPreenteredText( req_str, true );
                  entry.maintainWhitespace(false);
                  entry.allowEmptyInput( false );
                  entry.setTitle("general.enter.cookies");
                  entry.prompt(new UIInputReceiverListener() {
                    public void UIInputReceiverClosed(UIInputReceiver entry) {
                      if (!entry.hasSubmittedInput()){
                       
                        return;
                      }

                      try {
                        String input = entry.getSubmittedInput().trim();
                       
                        if ( input.length() > 0 ){
                         
                          we.setCookies( input );
                         
                          subs.getManager().getScheduler().downloadAsync(subs, true);
                        }
                      }catch( Throwable e ){
                       
View Full Code Here

     
      engine_str = engine.getNameEx();
     
      if ( engine instanceof WebEngine ){
     
        WebEngine web_engine = (WebEngine)engine;
       
        if ( web_engine.isNeedsAuth()){
         
          auth_str = String.valueOf(true) + ": cookies=" + toString( web_engine.getRequiredCookies());
        }
      }
    }catch( Throwable e ){
     
      engine_str   = "Unknown";
View Full Code Here

                  });
              }
             
              if ( engine instanceof WebEngine ){
               
                final WebEngine we = (WebEngine)engine;
               
                if ( we.isNeedsAuth()){
                 
                  String cookies = we.getCookies();
                 
                  if ( cookies != null && cookies.length() > 0 ){
                   
                    MenuItem mi = menuManager.addMenuItem( engine_menu, "Subscription.menu.resetauth" );

                    mi.addListener(
                      new MenuItemListener()
                      {
                        public void
                        selected(
                          MenuItem menu,
                          Object target)
                        {
                          we.setCookies( null );
                        }
                      });
                  }
                }
              }
             
              if ( engine_menu.getItems().length > 0 ){
               
                MenuItem mi = menuManager.addMenuItem( engine_menu, "Subscription.menu.sep" );

                mi.setStyle( MenuItem.STYLE_SEPARATOR );
              }
             
              MenuItem mi = menuManager.addMenuItem( engine_menu, "Subscription.menu.properties" );

              mi.addListener(
                new MenuItemListener()
                {
                  public void
                  selected(
                    MenuItem menu,
                    Object target)
                  {
                    String  engine_str;
                    String  auth_str  = String.valueOf(false);
                   
                    engine_str = engine.getNameEx();
                   
                    if ( engine instanceof WebEngine ){
                   
                      WebEngine web_engine = (WebEngine)engine;
                     
                      if ( web_engine.isNeedsAuth()){
                       
                        auth_str = String.valueOf(true) + ": cookies=" + toString( web_engine.getRequiredCookies());
                      }
                    }
                   
                    String[] keys = {
                        "subs.prop.template",
View Full Code Here

TOP

Related Classes of com.aelitis.azureus.core.metasearch.impl.web.WebEngine

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.