upd(codegen): enable imports with requests

This commit is contained in:
Tit Petric
2018-12-04 15:26:51 +01:00
parent d98d8be69a
commit 43554592e4
39 changed files with 172 additions and 227 deletions
+19 -1
View File
@@ -38,9 +38,27 @@ function array_change_key_case_recursive($arr) {
}, array_change_key_case($arr));
}
function imports($api) {
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$import = explode(" ", $import);
if (count($import) == 1) {
$imports[] = '"' . $import[0] . '"';
} else {
$imports[] = $import[0] . ' "' . $import[1] . '"';
}
}
}
return array_unique($imports);
}
$tpl = new Monotek\MiniTPL\Template;
$tpl->set_compile_location("/tmp", true);
$tpl->add_default("newline", "\n");
$tpl->add_default("EOL", "\n");
$generators = array();
exec("find -L " . __DIR__ . "/" . $project . " -name index.php", $generators);
@@ -81,7 +99,7 @@ $parsers = array(
"[]uint64" => "parseUInt64A",
"int" => "parseInt",
"bool" => "parseBool",
"types.JSONText" => "parseJSONText",
"sqlxTypes.JSONText" => "parseJSONTextWithErr",
);
foreach ($generators as $generator) {
+1 -8
View File
@@ -19,14 +19,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -11,14 +11,7 @@ foreach ($apis as $api) {
$tpl->assign("api", $api);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -19,14 +19,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -7
View File
@@ -22,13 +22,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -19,14 +19,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -11,14 +11,7 @@ foreach ($apis as $api) {
$tpl->assign("api", $api);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -19,14 +19,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -19,14 +19,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -11,14 +11,7 @@ foreach ($apis as $api) {
$tpl->assign("api", $api);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+1 -8
View File
@@ -19,14 +19,7 @@ foreach ($apis as $api) {
$tpl->assign("apis", $apis);
$tpl->assign("self", strtolower(substr($name, 0, 1)));
$tpl->assign("structs", $api['struct']);
$imports = array();
if (is_array($api['struct']))
foreach ($api['struct'] as $struct) {
if (isset($struct['imports']))
foreach ($struct['imports'] as $import) {
$imports[] = $import;
}
}
$imports = imports($api);
$tpl->assign("imports", $imports);
$tpl->assign("calls", $api['apis']);
$contents = str_replace("\n\n}", "\n}", $tpl->get());
+15 -15
View File
@@ -6,18 +6,18 @@ import (
"io"
"net/http"
"encoding/json"
"github.com/go-chi/chi"
"github.com/pkg/errors"
"github.com/jmoiron/sqlx/types"
"github.com/crusttech/crust/internal/rbac"
"mime/multipart"
"strings"
"github.com/go-chi/chi"
"github.com/pkg/errors"
{if !empty($imports)}{foreach ($imports as $import)}
{import}{EOL}{/foreach}{/if}
)
var _ = chi.URLParam
var _ = types.JSONText{}
var _ = multipart.FileHeader{}
var _ = rbac.Operation{}
{foreach $calls as $call}
// {name} {call.name} request parameters
@@ -68,17 +68,17 @@ func ({self} *{name|expose}{call.name|capitalize}) Fill(r *http.Request) (err er
{elseif substr($param.type, 0, 2) === '[]' && isset($parsers[$param.type])}
{self}.{param.name|expose} = {$parsers[$param.type]}({if $method === "post"}r.Form["{param.name}"]{else}urlQuery["{param.name}"]{/if})
{elseif $param.type === "*multipart.FileHeader"}
if _, {self}.{param.name|expose}, err = r.FormFile("{$param.name}"); err != nil {
return errors.Wrap(err, "error procesing uploaded file")
}
if _, {self}.{param.name|expose}, err = r.FormFile("{$param.name}"); err != nil {
return errors.Wrap(err, "error procesing uploaded file")
}
{elseif substr($param.type, 0, 2) !== '[]'}
if val, ok := {method|strtolower}["{param.name}"]; ok {
{if $param.type === "types.JSONText"}
if {self}.{param.name|expose}, err = {$parsers[$param.type]}(val); err != nil {
return err
}
if val, ok := {method|strtolower}["{param.name}"]; ok {
{if substr($parsers[$param.type], -7) === 'WithErr'}
if {self}.{param.name|expose}, err = {$parsers[$param.type]}(val); err != nil {
return err
}
{else}
{self}.{param.name|expose} = {if ($param.type !== "string")}{$parsers[$param.type]}(val){else}val{/if}
{self}.{param.name|expose} = {if ($param.type !== "string")}{$parsers[$param.type]}(val){else}val{/if}{EOL}
{/if}
}{/if}
{/foreach}
+1 -2
View File
@@ -5,8 +5,7 @@ package {package}
{if !empty($imports)}
import (
{foreach ($imports as $import)}
"{import}"
{/foreach}
{import}{EOL}{/foreach}
)
{/if}