Baoyuantop commented on code in PR #12391:
URL: https://github.com/apache/apisix/pull/12391#discussion_r2206501304


##########
apisix/plugins/grpc-transcode/response.lua:
##########
@@ -132,6 +170,9 @@ return function(ctx, proto, service, method, pb_option, 
show_status_in_body, sta
         return err_msg
     end
 
+    local array_names = fetch_proto_array_names ( proto )

Review Comment:
   ```suggestion
       local array_names = fetch_proto_array_names( proto )
   ```



##########
apisix/plugins/grpc-transcode/response.lua:
##########
@@ -132,6 +170,9 @@ return function(ctx, proto, service, method, pb_option, 
show_status_in_body, sta
         return err_msg
     end
 
+    local array_names = fetch_proto_array_names ( proto )
+    set_default_array(decoded,array_names)

Review Comment:
   ```suggestion
       set_default_array(decoded, array_names)
   ```



##########
apisix/plugins/grpc-transcode/response.lua:
##########
@@ -16,13 +16,51 @@
 --
 local util        = require("apisix.plugins.grpc-transcode.util")
 local grpc_proto  = require("apisix.plugins.grpc-transcode.proto")
-local core   = require("apisix.core")
-local pb     = require("pb")
-local ngx    = ngx
-local string = string
+local core        = require("apisix.core")
+local pb          = require("pb")
+local ngx         = ngx
+local string      = string
 local ngx_decode_base64 = ngx.decode_base64
-local ipairs = ipairs
-local pcall  = pcall
+local ipairs      = ipairs
+local pcall       = pcall
+local type          = type
+local pairs         = pairs
+local setmetatable  = setmetatable
+
+pb.option "decode_default_array"
+local repeated_label = 3
+
+local function fetch_proto_array_names(proto_obj)
+    local names = {}
+    if type(proto_obj) == "table" then
+        for k,v in pairs(proto_obj) do
+            if type(v) == "table" then
+                local sub_names = fetch_proto_array_names(v)
+                for sub_name,_ in pairs (sub_names ) do
+                    names[sub_name]=1
+                end
+            end
+        end
+        if proto_obj["label"] == repeated_label then
+            names[proto_obj["name"]]=1
+        end
+    end
+    return names
+end
+
+local function set_default_array(tab,array_names )

Review Comment:
   ```suggestion
   local function set_default_array(tab, array_names)
   ```



##########
apisix/plugins/grpc-transcode/response.lua:
##########
@@ -16,13 +16,51 @@
 --
 local util        = require("apisix.plugins.grpc-transcode.util")
 local grpc_proto  = require("apisix.plugins.grpc-transcode.proto")
-local core   = require("apisix.core")
-local pb     = require("pb")
-local ngx    = ngx
-local string = string
+local core        = require("apisix.core")
+local pb          = require("pb")
+local ngx         = ngx
+local string      = string
 local ngx_decode_base64 = ngx.decode_base64
-local ipairs = ipairs
-local pcall  = pcall
+local ipairs      = ipairs
+local pcall       = pcall
+local type          = type
+local pairs         = pairs
+local setmetatable  = setmetatable
+
+pb.option "decode_default_array"
+local repeated_label = 3
+
+local function fetch_proto_array_names(proto_obj)
+    local names = {}
+    if type(proto_obj) == "table" then
+        for k,v in pairs(proto_obj) do
+            if type(v) == "table" then
+                local sub_names = fetch_proto_array_names(v)
+                for sub_name,_ in pairs (sub_names ) do
+                    names[sub_name]=1
+                end
+            end
+        end
+        if proto_obj["label"] == repeated_label then
+            names[proto_obj["name"]]=1
+        end
+    end
+    return names
+end
+
+local function set_default_array(tab,array_names )
+    if type(tab) ~= "table" then
+        return false
+    end
+    for k, v  in pairs(tab) do

Review Comment:
   ```suggestion
       for k, v in pairs(tab) do
   ```



##########
apisix/plugins/grpc-transcode/response.lua:
##########
@@ -6,7 +6,7 @@
 -- (the "License"); you may not use this file except in compliance with
 -- the License.  You may obtain a copy of the License at
 --
---     http://www.apache.org/licenses/LICENSE-2.0
+--      http://www.apache.org/licenses/LICENSE-2.0

Review Comment:
   Please revert these additional changes.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@apisix.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to