<?php // There may be a bug in IE(... lol) that would require the next two lines. //header('Cache-Control: no-cache, must-revalidate'); //header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // JSON plz. header('Content-type: application/json'); //error_reporting(E_ALL); //ini_set('display_errors', '1'); require_once '../db.php'; $rtn = array(); if (isset($_GET['id'])) { $rtn['annotation'] = getAnnotation(mongoIdSanitize($_GET['id'])); $rtn['contig'] = getContig($rtn['annotation']['contig_id']); $rtn['valid'] = $rtn['annotation'] && $rtn['contig']; } else { $rtn['valid'] = false; } echo json_encode($rtn);
function getFullGeneInfo($geneName) { $db = getDB(); $rtn = array(); $rtn['annotations'] = array(); $rtn['expertAannotations'] = array(); $rtn['contigs'] = array(); $annotationsToExpand = array(); $cursor = $db->contigs->find(array('isoform_names.' . $geneName => array('$exists' => true)), array('sequence' => 0)); foreach ($cursor as $contig) { $rtn['contigs'][] = $contig; foreach ($contig['isoform_names'][$geneName] as $annotationId) { $annotationsToExpand[] = $annotationId->{'$id'}; } } foreach ($annotationsToExpand as $annotationId) { $annotationInfo = getAnnotation($annotationId); if (!$annotationInfo['partial']) { if ($annotationInfo['expert']) { $rtn['expertAnnotations'][] = $annotationInfo; } else { $rtn['annotations'][] = $annotationInfo; } } } return $rtn; }
} } } array_push($params, $param_class); } } elseif (isset($_REQUEST[$param_key])) { array_push($params, $_REQUEST[$param_key]); } elseif ($param->isDefaultValueAvailable()) { array_push($params, $param->getDefaultValue()); } else { header("status: 403 Forbidden"); die("Missing {$param_key} parameter."); } } //查找方法标注 $annotations = getAnnotation($obj_ref); //只允许执行标注UserFunction if (!array_key_exists('UserFunction', $annotations)) { header("status: 404 Not Found"); die("Not allowed to execute the {$func} "); } //执行function try { array_walk($annotations, function ($value) use($params) { if ($value instanceof Dependency && method_exists($value, 'excuting')) { $value->excuting($params); } }); $result = call_user_func_array($func, $params); header("Access-Control-Allow-Origin: *"); if (isset($result)) {
public function generate_api_doc() { // mt_mark('start'); // $res = getApiInstance('/v1.3.1/redpacket/register'); // dmt_mark('start','end'); // edump($res); // return View::make('localtest.doc'); // $res = getReturnInLogFile('logs','ReqLogs',9,''); // $res = getReturnInLogFile('logs','ReqLogs',10); // $Route = new \Illuminate\Routing\Route(); // $Route->getPrefix() $routes = Route::getRoutes(); // $returns = getReturnInLogFile('logs','Return'); $showData = []; $routes_select = array(); $all_params = array(); foreach ($routes as $v) { $data = array(); $method = array(); $methods = $v->getMethods(); // array(1) {[0] => string(4) "POST"} $uri = $v->getPath(); //string(15) "get_create_code" $action = $v->getActionName(); //string(29) "GeneralTestController@getCode" //获取filters $filter = $v->beforeFilters(); //分割action $action = $this->compileAction($action); if (!method_exists($action[0], $action[1])) { continue; } in_array('GET', $methods) and $method[] = 'GET'; in_array('POST', $methods) and $method[] = 'POST'; //生成method和uri $uri = '/' . ltrim($uri, '/'); !empty($method) and $data = array('method' => '[' . implode('/', $method) . ']', 'uri' => '/' . ltrim($uri, '/')); //获取action指向的方法内的参数 $data and $action and $data['params'] = $this->getInputParams($action); //获取filter内部所需参数 if ($data && $filter) { $params = array(); foreach ($filter as $key => $value) { $p = $this->getFilterParams($key); $p && ($params += $p); } $params && $data['params'] && (is_array($params) && ($data['params'] += $params)); } if (isset($data['params']) && !is_array($data['params'])) { edump($data['params']); } isset($data['params']) && is_array($data['params']) && ($all_params += $data['params']); $rrr = getAnnotation($action); if (isset($rrr['function'])) { $function = $rrr['function'][0]; $dt = getApiInvokingLog($uri); $dt && ($showData[$uri] = ['title' => $function, 'data' => current($dt)]); } // if(isset($returns['/'.$uri]) && $rrr ){ // dump($rrr); // dump($returns['/'.$uri]); // } $data && ($routes_select[] = $data); } return View::make('localtest.doc')->with('list', $showData); edump($showData); }