github.com/craicoverflow/tyk@v2.9.6-rc3+incompatible/coprocess/lua/bundle.lua (about)

     1  local cjson = require "cjson"
     2  
     3  -- Make the current object accessible for helpers.
     4  object = nil
     5  
     6  -- This will be generated by the bundle (request.lua):
     7  local request = {}
     8  local session = {}
     9  
    10  -- Based on: https://github.com/openresty/lua-nginx-module#ngxreqset_body_file
    11  
    12  function request.start_time()
    13  end
    14  
    15  function request.http_version()
    16  end
    17  
    18  function request.get_headers()
    19    return object['request']['headers']
    20  end
    21  
    22  function request.set_header(key, value)
    23    if object['request']['set_headers'] == nil then
    24      object['request']['set_headers'] = {}
    25    end
    26    object['request']['set_headers'][key] = value
    27  end
    28  
    29  function request.clear_header(key)
    30    if object['request']['delete_headers'] == nil then
    31      object['request']['delete_headers'] = {}
    32    end
    33    object['request']['delete_headers'] = {key}
    34  end
    35  
    36  tyk = {
    37    -- req = {},
    38    -- req=require("coprocess.lua.tyk.request"),
    39    req = request,
    40    session = session,
    41    header=nil
    42  }
    43  
    44  function dispatch(raw_object)
    45    object = cjson.decode(raw_object)
    46    raw_new_object = nil
    47  
    48    -- Environment reference to hook.
    49    hook_name = object['hook_name']
    50    hook_f = _G[hook_name]
    51    is_custom_key_auth = false
    52  
    53    -- Set a flag if this is a custom key auth hook.
    54    if object['hook_type'] == 4 then
    55      is_custom_key_auth = true
    56    end
    57  
    58    -- Call the hook and return a serialized version of the modified object.
    59    if hook_f then
    60      local new_request, new_session, metadata
    61  
    62      -- tyk.header = object['request']['headers']
    63  
    64      if custom_key_auth then
    65        new_request, new_session, metadata = hook_f(object['request'], object['session'], object['metadata'], object['spec'])
    66      else
    67        new_request, new_session = hook_f(object['request'], object['session'], object['spec'])
    68      end
    69  
    70      -- Modify the CP object.
    71      object['request'] = new_request
    72      object['session'] = new_session
    73      object['metadata'] = metadata
    74  
    75      raw_new_object = cjson.encode(object)
    76  
    77      -- return raw_new_object, #raw_new_object
    78  
    79    -- Return the original object and print an error.
    80    else
    81      return raw_object, #raw_object
    82    end
    83  
    84    return raw_new_object, #raw_new_object
    85  end
    86  
    87  function dispatch_event(raw_event)
    88    print("dispatch_event:", raw_event)
    89  end