requests / index.php /
Yanik Cawidrone First commit
5fca519 2 years ago
1 contributor
214 lines | 6.022kb
<?php
function dumpPost($listPost) {
  $retString='<table>'.PHP_EOL;
  foreach ($listPost as $key => $value) {
    $retString.="  <tr><td>$key</td><td>$value</td></tr>".PHP_EOL;
  }
  $retString.='</table>'.PHP_EOL;
  $retString.='<hr>'.PHP_EOL;
  return $retString;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Requests</title>
<style>
html {font-family: arial, verdana, sans-serif;}
h1 { font-size:20px; font-weight:bold; padding-left: 4px; }
h2 { font-size:16px; font-weight:bold; }
h3 { font-size:14px; font-weight:bold; }
.header { background-color: #5b7e96; color: #ffffff; padding-top: 2px; padding-bottom: 2px;}
.subheader { background-color: #5b7eaa; color: #ffffff; padding-top: 0px; padding-bottom: 0px; font-size: 0.8em;}
.pre {font-family: monospace;line-height:100%;font-size: 0.8em;}
input[type=submit] {
  display: inline;
  margin-left: 10px;
  padding-top: 2px;
  padding-bottom: 2px;
  padding-left: 10px;
  padding-right: 10px;
  height: 24px;
  width: 64px;
  background: #4080c0; 
  color: #fff; 
  font-weight: bold;
  border: 0 none;
  cursor: pointer;
  -webkit-border-radius: 5px;
  border-radius: 5px; 
}
#body {
  display: block;
}
#headers {
  display: block;
}
#code::before {
  content: "Response Code: ";
}
#code {
  font-weight: bold;
}
.column {
  float: left;
  width: 50%;
}
.colleft {
  float:left;
  width: 75%;
}
.colright {
  float: left;
  width: 25%;
background: #aaaaaa;
}
.row:after {
  content: "";
  display: table;
  clear: both;
}
xmp {
  max-width:99%;
  font-size: 0.8em;
  word-wrap: break-word;
  overflow-wrap: break-word;
  overflow: hidden;
  text-overflow: ellipsis;
}
pre {
  max-width:99%;
  font-size: 0.8em;
  word-wrap: break-word;
  overflow-wrap: break-word;
  overflow: hidden;
  text-overflow: ellipsis;
}
</style>
</head>
<body>
<div class="header"><h1>Requests</h1></div>
<?php
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
?>
  <!-- GET part -->
  <form action="." method="post">
  <label for="method">Method:</label>

  <select name="method" id="method">
    <option value="GET" selected>GET</option>
    <option value="POST">POST</option>
  </select>
  URL: <input type="text" id="url" name="url" value="https://www.google.com"><br>
  <div class="row">
  <div class="column">
  <span id="headers">Headers:</span>
  <textarea id="headers" name="headers" rows="8" cols="100">
  [{"name": "Authentication", "value": "Bearer 123"},
  {"name": "MyHeader", "value": "MyValue"}]
  </textarea>
  </div>
  <div class="column">
  <span id="body">Body:</span>
  <textarea id="body" name="body" rows="8" cols="100">
  {"keyInt": 2, "keyString": "value"}
  </textarea>
  </div>
  </div>
  <input id="submit" class="submit" type="submit">
  </form>
  <hr>

<?php
} else {
  $url = $_POST['url'];
  $method = $_POST['method'];
  $body = $_POST['body'];
  $reqHeaders = json_decode($_POST['headers']);
  $formString='<form action="." method="post">'.PHP_EOL;
  $formString.='<label for="method">Method:</label>'.PHP_EOL;
  $formString.='<select name="method" id="method">'.PHP_EOL;

  if( $method == "POST" ) {
    $formString.='<option value="GET">GET</option>'.PHP_EOL;
    $formString.='<option value="POST" selected>POST</option>'.PHP_EOL;
  } else {
    $formString.='<option value="GET" selected>GET</option>'.PHP_EOL;
    $formString.='<option value="POST">POST</option>'.PHP_EOL;
  }

  $formString.='</select>'.PHP_EOL;
  $formString.='URL: <input type="text" id="url" name="url" value="'.$url.'"><br>'.PHP_EOL;
  
  $formString.='<div class="row">'.PHP_EOL;
  $formString.='  <div class="column">'.PHP_EOL;
  $formString.='    <span id="headers">Headers:</span>'.PHP_EOL;
  $formString.='    <textarea id="headers" name="headers" rows="8" cols="100">'.PHP_EOL;
  $formString.=$_POST['headers'];
  $formString.='    </textarea>'.PHP_EOL;
  $formString.='  </div>'.PHP_EOL;
  $formString.='  <div class="column">'.PHP_EOL;
  $formString.='    <span id="body">Body:</span>'.PHP_EOL;
  $formString.='    <textarea id="body" name="body" rows="8" cols="100">'.PHP_EOL;
  $formString.=$body;
  $formString.='    </textarea>'.PHP_EOL;
  $formString.='  </div>'.PHP_EOL;
  $formString.='</div>'.PHP_EOL;
  $formString.='<input id="submit" class="submit" type="submit">'.PHP_EOL;
  $formString.='</form>'.PHP_EOL;
  $formString.='<hr>'.PHP_EOL;
  
  
  $formString.=dumpPost($_POST);
  
  echo $formString;

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $headers = array();
  if( $method === 'POST' ) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body); 
    curl_setopt($ch, CURLOPT_POST, 1);
    $headers[] = "Content-Type: application/x-www-form-urlencoded";
  }
  foreach ( $reqHeaders as $reqHeader ) {
    array_push($headers,$reqHeader->name.": ".$reqHeader->value);
  }

  curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

  $result = curl_exec($ch);
  $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  $info = curl_getinfo($ch);
  $jsonResult=json_decode($result);
  
  $resultString='<div class="subheader"><h2>Results</h2></div>'.PHP_EOL;
  if (curl_errno($ch)) {
      echo 'Error:' . curl_error($ch);
  }
  $resultString.='<div class="row">'.PHP_EOL;
  $resultString.='  <div class="colleft">'.PHP_EOL;
  $resultString.='    <h3>Response Code: '.$httpcode.'<h3>'.PHP_EOL;
  if( null == $jsonResult ) {
    $resultString.='    <xmp>'.$result.'</xmp>'.PHP_EOL;
  } else {
    $resultString.='    JSON'.PHP_EOL;
    $jsonString = json_encode($jsonResult, JSON_PRETTY_PRINT);
    $resultString.='    <pre>'.$jsonString.'</pre>'.PHP_EOL;
  }
  $resultString.='  </div>'.PHP_EOL;
  $resultString.='  <div class="colright">'.PHP_EOL;
  $resultString.='    <h3>Details:<h3>'.PHP_EOL;
  $resultString.='    <table>'.PHP_EOL;
  foreach ($info as $key => $value) {
    $resultString.='<tr><td>'.$key.'</td><td>'.$value.'</td></tr>'.PHP_EOL;
  }
  $resultString.='    </table>'.PHP_EOL;
  $resultString.='  </div>'.PHP_EOL;
  $resultString.='</div>'.PHP_EOL;
  curl_close ($ch);
  echo $resultString;
} 
?>