Created
June 22, 2017 23:59
-
-
Save shofetim/d6d90196a19acc15588af4e5545aab6f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
#exit; | |
#$ua=$_SERVER['HTTP_USER_AGENT']; | |
#if ($ua == 'GuzzleHttp/6.2.0 curl/7.35.0 PHP/5.5.9-1ubuntu4.17') { | |
#header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); | |
#header("Status: 404 Not Found"); | |
#$_SERVER['REDIRECT_STATUS'] = 404; | |
#exit; | |
#} | |
#$randResult=rand(1,10); | |
#if ($randResult>8) { | |
#exit; | |
#} | |
#exit; | |
# Rate limiting | |
$server = getenv('DATABASE_HOST'); | |
$user = getenv('DATABASE_USERNAME'); | |
$pass = getenv('DATABASE_PASSWORD'); | |
$database = getenv('DATABASE_NAME'); | |
//die(var_dump([$server, $user, $pass])); | |
mysql_connect($server, $user, $pass) or die(mysql_error()); | |
mysql_select_db($database) or die(mysql_error()); | |
$row = mysql_fetch_row(mysql_query('select count(id) from api_slots')); | |
if ($row[0] > 23) { # set the max request rate here | |
exit; | |
} else { | |
mysql_query('insert into api_slots'); | |
$lockId = mysql_insert_id(); | |
} | |
ob_start(); | |
header('Content-type: text/xml'); | |
echo '<?xml version="1.0" ?><pricing>' ; | |
$documentPath=__DIR__.'/../'; | |
require_once($documentPath.'/wp-load.php'); | |
#error_reporting(E_ALL | E_WARNING | E_NOTICE); | |
error_reporting(0); | |
ini_set('display_errors', false); | |
$product=isset($_GET['isbn']) ? $_GET['isbn']:'9781119056393'; | |
if(!isset($_SESSION['api_log'])){ | |
$_SESSION['api_log']=session_id(); | |
}else{ | |
$_SESSION['api_log']=''; | |
} | |
$hash= isset($_GET['hash']) ? $_GET['hash'] :'null'; | |
if(empty($_SESSION['api_logs']) || session_id() != $_SESSION['api_logs']['session_id']) { | |
setApiUser($hash); | |
} | |
$product=isset($_GET['isbn']) ? $_GET['isbn']:'9781119056393'; | |
if (isset($_SESSION['api_logs']['api_user_id']) && $_SESSION['api_logs']['api_user_id'] != '') { | |
global $wpdb; | |
$api_user_id = $_SESSION['api_logs']['api_user_id']; | |
$ip = userIpAddress(); | |
$request_date = $date_created = date('Y-m-d h:i:s',time()); | |
$wpdb->insert("api_log", array( | |
'api_user_id' => $api_user_id, | |
'ip' => $ip, | |
'query' => $product, | |
'request_date' => $request_date, | |
),array('%s','%s','%s','%s')); | |
$wpdb->update("api_user", array( | |
'date_updated' => $request_date, | |
), | |
array('id' => $api_user_id), | |
array('%s'), | |
array('%s') | |
); | |
} | |
$isbn10=''; | |
$isbn12=''; | |
$isbn13=''; | |
$product = checkisbnformate($product); | |
if(isset($product['isbn13']) && !empty($product['isbn13'])) | |
{ | |
$isbn10=$product['isbn10']; | |
$isbn13=$product['isbn13']; | |
}else{ | |
$isbn12=$product['isbn12']; | |
} | |
if ($product['invalid_product'] != 1) { | |
if ($product['isbn12']) { | |
$productAsin = mwsLookup('upc', $product['isbn12']); | |
} | |
if ($product['isbn10']) { | |
$productAsin = mwsLookup('asin', $product['isbn10']); | |
} | |
if(!isset($productAsin['GetMatchingProductForIdResponse'])){ | |
#sleep(1); | |
if($product['isbn12']) { | |
$productAsin = mwsLookup('upc', $product['isbn12']); | |
} | |
if ($product['isbn10']) { | |
$productAsin = mwsLookup('asin', $product['isbn10']); | |
} | |
} | |
$productBinding = isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Binding']) ? ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Binding']) : ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:Binding']);; | |
$productGroup = isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:ProductGroup']) ? ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:ProductGroup']) : ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:ProductGroup']); | |
if($productBinding=='Audio CD' || $productGroup=='Audio CD'){ | |
$author=isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Artist']) ? implode(',',$productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Artist']) : ''; | |
}else{ | |
if (isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Author'])) { | |
$author = $productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Author']; | |
} elseif (isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Publisher'])) { | |
$author = $productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Publisher']; | |
} elseif (isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:Author'])) { | |
$author = $productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:Author']; | |
} else if (isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:Publisher'])) { | |
$author = $productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:Publisher']; | |
} else { | |
$author = ''; | |
} | |
} | |
if (is_array($author)) { | |
$author = implode(' & ', $author); | |
} | |
$title = isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Title']) ? ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['AttributeSets']['ns2:ItemAttributes']['ns2:Title'] ) : ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['AttributeSets']['ns2:ItemAttributes']['ns2:Title']); | |
$asin_no = isset($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['Identifiers']['MarketplaceASIN']['ASIN']) ? ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product']['Identifiers']['MarketplaceASIN']['ASIN'] ) : ($productAsin['GetMatchingProductForIdResponse']['GetMatchingProductForIdResult']['Products']['Product'][0]['Identifiers']['MarketplaceASIN']['ASIN']); | |
$isbn = isset($isbn12) ? $asin_no : $isbn10; | |
$productData = mwsLookupWithOfferPrice($asin_no); | |
$xml = inventory_evaluator_mws($productData, $productGroup); | |
$details = pricingDetailsMWS($isbn, $productData, $xml, $productGroup); | |
$_qty = $details['qty']; | |
$_price = $details['price']; | |
$_rank = $details['rank']; | |
$_type = $details['type']; | |
$abs_min = $details['abs_min']; | |
$max_rank = $details['pricing']['max_rank']; | |
$on_the_way_multi = $details['pricing']['on_the_way_multi']; | |
$data_qty = checkout_quote(0,$isbn10,$isbn13,$asin_no); | |
#$onTheWay = checkout_onTheWay($max_rank,$on_the_way_multi,$isbn10,$isbn13,$asin_no); | |
$onTheWay=0; | |
$onTheWay += $data_qty; | |
$total_stock = $onTheWay; | |
$azPriceByQty = azPriceByQty($xml, $_qty, $_price, $_rank, $_type, $abs_min, $total_stock); | |
$price=0.00; | |
if($azPriceByQty[0]) { | |
$price = $azPriceByQty[0]; | |
} | |
if($isbn12 && empty($isbn10) && empty($isbn13)){ | |
$isbn= $isbn12; | |
}else if(empty($isbn12) && empty($isbn10) && empty($isbn13)){ | |
$isbn= $asin_no; | |
}else if(empty($isbn12) && (!empty($isbn10) || !empty($isbn13))) { | |
$isbn= $isbn10; | |
}else{ | |
$isbn= $isbn12; | |
} | |
echo " <price isbn='".$isbn."'>".number_format((float)$price, 2, '.', '')."</price>"; | |
}else{ | |
echo "A valid ISBN parameter is required or invalid ISBN / UPC code"; | |
} | |
echo "</pricing>\n"; | |
#mysql_close(); | |
mysql_query('delete from from api_slots where id = ' . $lockId); # cleanup of rate limiting |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment