##
sub fetchCoveragePlans
{
my @subData = @_;
my $familySize = $subData[3]; # 01001,42,42,2
my $cookie_jar = HTTP::Cookies->new(
file => 'cookies.dat',
autosave => 1,
);
trace("Fetch data for " . getFileName(@subData));
my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar, quiet => 0,);
$mech->agent_alias( 'Windows IE 6' );
# $mech->conn_cache(LWP::ConnCache->new);
# Fetch - Find Insurance Page
$mech->get($HOMEURL);
my $sessionId;
my $response = $mech->response();
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 1. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
for my $key ( $response->header_field_names() ) {
if ($key =~ /Set-Cookie/is) {
$sessionId = $response->header( $key );
if ($sessionId =~ /JSESSIONID=(.*?);/)
{
$sessionId = $1;
}
}
}
trace("Found Session Id = $sessionId");
##---------------------------------------------------------------------------------------------------##
my $savePage = "$HOMEDIR/$currDir/".getFileName(@subData);
my $html = $mech->content;
##---------------------------------------------------------------------------------------------------##
my $jsURL = "https://www.mahealthconnector.org/portal/dwr/call/plaincall/__System.pageLoaded.dwr";
my $response = $mech->post($jsURL,
[ 'callCount' => "1",
'windowName' => "",
'c0-scriptName' => "__System",
'c0-methodName' => "pageLoaded",
'c0-id' => "0",
'batchId' => "0",
'page' => "/portal/site/connector/menuitem.55b6e23ac6627f40dbef6f47d7468a0c/",
'httpSessionId' => $sessionId,
'scriptSessionId' => "",
]);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 5a. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
# dwr.engine.remote.handleNewScriptSession("71A70B8E00AB93A125F4D986E5D7B66D");
my $scriptSessionId;
if ($html =~ /handleNewScriptSession\("(.*?)"/ )
{
$scriptSessionId = $1;
}
##---------------------------------------------------------------------------------------------------##
my $jsURL4='https://www.mahealthconnector.org/portal/dwr/call/plaincall/LandingDelegate.getPovertyLevelForFamilySize.dwr';
my $response = $mech->post($jsURL4,
[ 'callCount' => "1",
'windowName' => "",
'c0-scriptName' => "LandingDelegate",
'c0-methodName' => "getPovertyLevelForFamilySize",
'c0-id' => "0",
'c0-param0' => "number:2",
'c0-param1' => "string:INDIVIDUAL",
'batchId' => "1",
'page' => "/portal/site/connector/menuitem.55b6e23ac6627f40dbef6f47d7468a0c/",
'httpSessionId' => $sessionId,
'scriptSessionId' => $scriptSessionId,
]);
##---------------------------------------------------------------------------------------------------##
#dwr.engine.remote.handleCallback("1","0",{minAnnIncome:45396.00,minMonthlyIncome:3783.00});
my $redirectConnector;
$html=$mech->{content};
if($html=~/handleCallback\(\s*["](.*?)["]\s*[,]\s*["](.*?)["]\s*[,]\s*["{](.*?)[}"]\s*\)/is)
{
$redirectConnector = $3;
}
##---------------------------------------------------------------------------------------------------##
my $url3='https://www.mahealthconnector.org/portal/site/connector/menuitem.55b6e23ac6627f40dbef6f47d7468a0c/';
$mech->get($url3);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 5a. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
#$mech->find_link( text_regex => qr/download/i );
####my $link=$mech->find_link( id_regex => qr/continue/i );
my $link= $mech->click_button( value => "Continue" );
my $continueLink='https://www.mahealthconnector.org'.$link->url;
$mech->get($continueLink);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 5a. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
my $html = $mech->content;
##---------------------------------------------------------------------------------------------------##
###$link= $mech->find_link( text_regex => qr/Browse\s+now/i );
$link= $mech->click_button( value => "Shop Now" );
my $browseLink='https://www.mahealthconnector.org'.$link->url;
$mech->get($browseLink);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 3. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
my $form1_fields = { 'js_enabled' => 'true' };
my $response = $mech->submit_form( form_name => 'js_form',
fields => $form1_fields);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 3. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
#trace("Fetching page with all family information");
my %form2_fields = getConnector2Fields(@subData);
sleep(5);
my $response = $mech->submit_form( form_name => 'connector_step2a_form',
fields => \%form2_fields);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 3. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
my $mechClone = $mech->clone();
my $jsURL3='https://www.mahealthconnector.org/portal/dwr/call/plaincall/__System.pageLoaded.dwr';
my $response = $mechClone->post($jsURL3,
[ 'callCount' => "1",
'windowName' => "",
'c0-scriptName' => "__System",
'c0-methodName' => "pageLoaded",
'c0-id' => "0",
'batchId' => "0",
###### 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a-load-rates%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken",
'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken",
'httpSessionId' => $sessionId,
'scriptSessionId' => "",
]);
##---------------------------------------------------------------------------------------------------##
# dwr.engine.remote.handleNewScriptSession("71A70B8E00AB93A125F4D986E5D7B66D");
$html=$mechClone->{content};
if($html=~/handleNewScriptSession\(\s*"(.*?)"\s*\)/is)
{
$scriptSessionId = $1;
}
##---------------------------------------------------------------------------------------------------##
my $jsURL4='https://www.mahealthconnector.org/portal/dwr/call/plaincall/NonGroupPlanPremiumsDelegate.fetchHealthPlans.dwr';
my $response = $mechClone->post($jsURL4,
[ 'callCount' => "1",
'windowName' => "",
'c0-scriptName' => "NonGroupPlanPremiumsDelegate",
'c0-methodName' => "fetchHealthPlans",
'c0-id' => "0",
'batchId' => "1",
###### 'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a-load-rates%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken",
'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step2a%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken",
'httpSessionId' => $sessionId,
'scriptSessionId' => $scriptSessionId,
]);
##---------------------------------------------------------------------------------------------------##
# dwr.engine.remote.handleCallback("1","0","connector-step3a");
my $redirectConnector;
$html=$mechClone->{content};
if($html=~/handleCallback\(\s*["](.*?)["]\s*[,]\s*["](.*?)["]\s*[,]\s*["{](.*?)[}"]\s*\)/is)
{
$redirectConnector = $3;
}
if($redirectConnector!~/connector-step3a/is)
{
trace("A network error occurred during your request. Please try again later.");
return;
}
undef($mechClone);
##---------------------------------------------------------------------------------------------------##
my $form1_fields = {
'connector_redirect_to_page' => $redirectConnector,
};
$mech->submit_form( form_name => 'loadingrates',
fields => $form1_fields);
##---------------------------------------------------------------------------------------------------##
my $form5_fields = {
'ben_pkg_choice' => 'All'
};
sleep(2);
$mech->submit_form( form_name => 'connector_step3a_form',
fields => $form5_fields);
if ($mech->response->status_line != STATUS_OK)
{
trace("Error fetching Page 5. Status = ". $mech->response->status_line .". Try after sometime.");
return;
}
##---------------------------------------------------------------------------------------------------##
my $mechClone = $mech->clone();
my $jsURL3='https://www.mahealthconnector.org/portal/dwr/call/plaincall/__System.pageLoaded.dwr';
my $response = $mechClone->post($jsURL3,
[ 'callCount' => "1",
'windowName' => "",
'c0-scriptName' => "__System",
'c0-methodName' => "pageLoaded",
'c0-id' => "0",
'batchId' => "0",
'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step4soa%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken",
'httpSessionId' => $sessionId,
'scriptSessionId' => "",
]);
##---------------------------------------------------------------------------##
# dwr.engine.remote.handleNewScriptSession("71A70B8E00AB93A125F4D986E5D7B66D");
$html=$mechClone->{content};
if($html=~/handleNewScriptSession\(\s*"(.*?)"\s*\)/is)
{
$scriptSessionId = $1;
}
##---------------------------------------------------------------------------------------------------##
my $jsURL2 = "https://www.mahealthconnector.org/portal/dwr/call/plaincall/BrowsePlansDelegate.filterAndSortHealthPlans.dwr";
my $response = $mechClone->post($jsURL2,
[ 'callCount' => "1",
'windowName' => "",
'c0-scriptName' => "BrowsePlansDelegate",
'c0-methodName' => "filterAndSortHealthPlans",
'c0-id' => "0",
'c0-param0' => "string:Bronze%7CSilver%7CGold",
'c0-param1' => "string:",
'c0-param2' => "string:",
'c0-param3' => "string:",
'c0-param4' => "string:0",
'batchId' => "1",
'page' => "/portal/site/connector/template.PAGE/menuitem.99762c230fb3e650dbef6f47d7468a0c/?javax.portlet.tpst=1dd8f1b14739404575c4c2100ce08041&javax.portlet.prp_1dd8f1b14739404575c4c2100ce08041=connector_currentstep%3Dconnector-step4soa%26viewID%3DMY_PORTAL_VIEW&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken",
'httpSessionId' => $sessionId,
'scriptSessionId' => $scriptSessionId,
]);
##---------------------------------------------------------------------------##
my $retVal = savePageData($savePage, $mechClone->content());
if ($retVal == 1) {
trace("Saved Final Page : $savePage\n");
}
else {
trace("Error retrieving data for : $savePage\n");
}
##---------------------------------------------------------------------------##
undef($mechClone);
undef($mech);
##---------------------------------------------------------------------------##
}