Skip to content

Commit

Permalink
Merge pull request #59 from hahwul/hahwul-dev
Browse files Browse the repository at this point in the history
Hahwul dev
  • Loading branch information
hahwul authored Aug 30, 2023
2 parents 2411d71 + e7a91c3 commit d742f01
Show file tree
Hide file tree
Showing 14 changed files with 60 additions and 12 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ noir -b . -u https://testapp.internal.domains -f json
"value": ""
},
{
"name": "body",
"name": "title",
"param_type": "json",
"value": ""
},
Expand Down
3 changes: 3 additions & 0 deletions spec/functional_test/fixtures/php_pure/get.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?
$param1 = $_GET['param1'];
?>
4 changes: 4 additions & 0 deletions spec/functional_test/fixtures/php_pure/header.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?
$param1 = $_GET['param1'];
$api_key = $_SERVER['HTTP_X_API_KEY'];
?>
3 changes: 3 additions & 0 deletions spec/functional_test/fixtures/php_pure/post.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?
$param1 = $_POST['param1'];
?>
3 changes: 3 additions & 0 deletions spec/functional_test/fixtures/php_pure/request.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?
$param1 = $_REQUEST['param1'];
?>
2 changes: 1 addition & 1 deletion spec/functional_test/testers/crystal_kemal_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ require "../func_spec.cr"
extected_endpoints = [
Endpoint.new("/", "GET"),
Endpoint.new("/socket", "GET"),
Endpoint.new("/query", "POST", [Param.new("query", "", "body")]),
Endpoint.new("/query", "POST", [Param.new("query", "", "form")]),
]

FunctionalTester.new("fixtures/kemal/", {
Expand Down
2 changes: 1 addition & 1 deletion spec/functional_test/testers/go_echo_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ extected_endpoints = [
Param.new("name", "", "json"),
]),
Endpoint.new("/pet_form", "POST", [
Param.new("name", "", "body"),
Param.new("name", "", "form"),
]),
Endpoint.new("/public/secret.html", "GET"),
]
Expand Down
18 changes: 18 additions & 0 deletions spec/functional_test/testers/php_pure_spec.cr
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
require "../func_spec.cr"

extected_endpoints = [
Endpoint.new("/get.php", "GET", [Param.new("param1", "", "query")]),
Endpoint.new("/header.php", "GET", [
Param.new("X-API-KEY", "", "header"),
Param.new("param1", "", "query"),
]),
Endpoint.new("/post.php", "GET"),
Endpoint.new("/post.php", "POST", [Param.new("param1", "", "form")]),
Endpoint.new("/request.php", "GET", [Param.new("param1", "", "query")]),
Endpoint.new("/request.php", "POST", [Param.new("param1", "", "form")]),
]

FunctionalTester.new("fixtures/php_pure/", {
:techs => 1,
:endpoints => 6,
}, extected_endpoints).test_all
2 changes: 1 addition & 1 deletion spec/functional_test/testers/ruby_sinatra_spec.cr
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ require "../func_spec.cr"
extected_endpoints = [
Endpoint.new("/", "GET", [Param.new("query", "", "query")]),
Endpoint.new("/update", "POST"),
Endpoint.new("/query", "POST", [Param.new("query", "", "body")]),
Endpoint.new("/query", "POST", [Param.new("query", "", "form")]),
]

FunctionalTester.new("fixtures/sinatra/", {
Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/analyzers/analyzer_go_echo.cr
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class AnalyzerGoEcho < Analyzer
param_type = "query"
end
if line.includes?("FormValue")
param_type = "body"
param_type = "form"
end

first = line.strip.split("(")
Expand Down
2 changes: 1 addition & 1 deletion src/analyzer/analyzers/analyzer_kemal.cr
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ class AnalyzerKemal < Analyzer

if content.includes? "env.params.body["
param = content.split("env.params.body[")[1].split("]")[0].gsub("\"", "").gsub("'", "")
return Param.new(param, "", "body")
return Param.new(param, "", "form")
end

if content.includes? "env.response.headers["
Expand Down
4 changes: 2 additions & 2 deletions src/analyzer/analyzers/analyzer_oas2.cr
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class AnalyzerOAS2 < Analyzer
if param_obj["in"] == "query"
param = Param.new(param_name, "", "query")
params << param
elsif param_obj["in"] == "body"
elsif param_obj["in"] == "form"
param = Param.new(param_name, "", "json")
params << param
elsif param_obj["in"] == "formData"
Expand Down Expand Up @@ -62,7 +62,7 @@ class AnalyzerOAS2 < Analyzer
if param_obj["in"] == "query"
param = Param.new(param_name, "", "query")
params << param
elsif param_obj["in"] == "body"
elsif param_obj["in"] == "form"
param = Param.new(param_name, "", "json")
params << param
elsif param_obj["in"] == "formData"
Expand Down
23 changes: 20 additions & 3 deletions src/analyzer/analyzers/analyzer_php_pure.cr
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,22 @@ class AnalyzerPhpPure < Analyzer
method = match[1]
param_name = match[2]

methods = methods | [method]
params_query << Param.new(param_name, "string", "query")
params_body << Param.new(param_name, "string", "form")
if method == "GET"
params_query << Param.new(param_name, "", "query")
elsif method == "POST"
params_body << Param.new(param_name, "", "form")
methods << "POST"
elsif method == "REQUEST"
params_query << Param.new(param_name, "", "query")
params_body << Param.new(param_name, "", "form")
methods << "POST"
elsif method == "SERVER"
if param_name.includes? "HTTP_"
param_name = param_name.sub("HTTP_", "").gsub("_", "-")
params_query << Param.new(param_name, "", "header")
params_body << Param.new(param_name, "", "header")
end
end
end
rescue
next
Expand All @@ -44,6 +57,10 @@ class AnalyzerPhpPure < Analyzer

result
end

def allow_methods
["GET", "POST", "PUT", "DELETE", "PATCH"]
end
end

def analyzer_php_pure(options : Hash(Symbol, String))
Expand Down
2 changes: 1 addition & 1 deletion src/models/noir.cr
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ class NoirRunner
end
end

if param.param_type == "body"
if param.param_type == "form"
if first_form
final_body += "#{param.name}=#{param.value}"
first_form
Expand Down

0 comments on commit d742f01

Please sign in to comment.