Rest запрос с json в Lua

В Lua я новичок, поэтому не кидайтесь тапками. Да и в написании скриптов тоже. Необходимо отправить Rest запрос с json через lua. Но почему то при запуске скрипта через lua выдает ошибку "stdin:1 ''expected near '\'", Возможно ли, что он ругается на то, что не заданы данные для авторизации? И как задать эту саму авторизацию?

local http = require("socket.http")
local ltn12 = require("ltn12")

function sendRequest()
local path = "http://server:8080/assystREST/v2/events?customDefinition=PROBLEMTS"
  local payload = [[ {
"eventTypeEnum": "PROBLEM",
    "remarks": "test123",
    "affectedUser": {
        "resolvingParameters": [
            {
                "parameterName": "shortCode",
                "parameterValue": "00005017"
            },
            {
                "parameterName": "CSGId",
                "parameterValue": "2"
            }
        ]
    },
    "itemA": {
        "resolvingParameters": [
            {
                "parameterName": "shortCode",
                "parameterValue": "ASSYST SERVICEDESK"
            },
            {
                "parameterName": "CSGId",
                "parameterValue": "14"
            }
        ]
    },
    "category": {
        "resolvingParameters": [
            {
                "parameterName": "shortCode",
                "parameterValue": "СБОЙ СИСТЕМНОГО ПО"
            }
        ]
    }
 } ]]
  local response_body = { }

  local res, code, response_headers, status = http.request
  {
    url = path,
    method = "POST",
    headers =
    {
      ["Content-Type"] = "application/json",
      ["Content-Length"] = payload:len()
    },
    source = ltn12.source.string(payload),
    sink = ltn12.sink.table(response_body)
  }
  luup.task('Response: = ' .. table.concat(response_body) .. ' code = ' .. code .. '   status = ' .. status,1,'Sample POST request with JSON data',-1)
end

Дополнение: Раньше я парсил информацию из БД и передавал ее на RestAPI теперь мне надо передавать такие же параметры на Rest с json через lua. При этом на Rest есть авторизация, а на restapi нет.

EVENT_ID = arg[1]  


require "assyst"

assyst {
    dbtype = "SQLServer",
    interface = "ado",
    server = "server",
    name = "database",
    user = "usr",
    password = "pass",
}

USR_ID = nil
KROPISANIE = nil
OPISANIE = nil
ITEMID = nil
CATID = nil
TYPETS = nil
OPRICH = nil
SPOSOB = nil
PRICHTS = nil
MERY = nil
VINOV = nil
PRIOR = nil
success, err = ASSYST:connect()
result, err = ASSYST:sql(string.format([[
with assyst_test_bc (USR_ID,KROPISANIE,OPISANIE,ITEMID,CATID,TYPETS,OPRICH,SPOSOB,PRICHTS,MERY,VINOV,PRIOR) AS (
SELECT   i.aff_usr_id AS 'USR_ID',
REPLACE(case when i.short_desc='' then 'Технический сбой' else i.short_desc end, ' ', '+') AS 'KROPISANIE',
REPLACE(SUBSTRING(id.remarks, -4, CHARINDEX('<==#', id.remarks)), ' ', '+') as 'OPISANIE',
i.item_id as 'ITEMID',
i.inc_cat_id as 'CATID',
REPLACE(MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 3945 THEN ikd.jptsys_web_lkup_data_sc END), ' ', '+') AS 'TYPETS',  
REPLACE(MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 3946 THEN ikd.jptsys_web_lkup_data_sc END), ' ', '+') AS 'OPRICH',  
REPLACE(MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 4048 THEN (case when pc.string_value ='' then ' ' else pc.string_value end) END), ' ', '+') AS 'SPOSOB', 


REPLACE(MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 4051 THEN (case when pc.string_value  ='' then ' ' else pc.string_value end) END), ' ', '+') AS 'PRICHTS', 
REPLACE(MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 4052 THEN (case when pc.string_value  ='' then ' ' else pc.string_value end) END), ' ', '+') AS 'MERY', 
MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 4053 THEN CONVERT(varchar, pc.LOOKUP_VAL_Id) else 1 END) AS 'VINOV'
,MAX(CASE WHEN cp.jptsys_web_cust_prop_id = 3925 THEN ikd.jptsys_web_lkup_data_sc END) as 'PRIOR'

FROM         jptsys_web_cust_prop_cont as pc INNER JOIN
                      jptsys_web_cust_prop as cp ON pc.jptsys_web_cust_prop_id = cp.jptsys_web_cust_prop_id INNER JOIN
                      jptsys_web_lkup_data as ikd ON pc.single_sel_val_id = ikd.jptsys_web_lkup_data_id INNER JOIN
                      incident as i ON pc.entity_id = i.incident_id INNER JOIN
                      inc_data as id ON i.incident_id = id.incident_id
 WHERE  i.incident_id = ']] .. EVENT_ID .. [['
 and ikd.jptsys_web_lkup_data_sc not in ('NTC','3TC')
group by i.aff_usr_id,i.short_desc,id.remarks,i.item_id,i.inc_cat_id,i.incident_id 
 )

select *
from assyst_test_bc
where PRIOR IS NOT NULL ]]))
if not result then
    USR_ID = " "
    KROPISANIE = " "
    OPISANIE = " "
    ITEMID = " "
    CATID = " "
    TYPETS = " "
    OPRICH = " "
    SPOSOB = " "
    PRICHTS = " "
    MERY = " "
    VINOV = " "
    PRIOR = " "
elseif result.n == 1 then
    USR_ID = result.USR_ID
    KROPISANIE = result.KROPISANIE
    OPISANIE = result.OPISANIE
    ITEMID = result.ITEMID
    CATID = result.CATID
    TYPETS = result.TYPETS
    OPRICH = result.OPRICH
    SPOSOB = result.SPOSOB
    PRICHTS = result.PRICHTS
    MERY = result.MERY
    VINOV = result.VINOV
    PRIOR = result.PRIOR
else 
    USR_ID = " "
    KROPISANIE = " "
    OPISANIE = " "
    ITEMID = " "
    CATID = " "
    TYPETS = " "
    OPRICH = " "
    SPOSOB = " "
    PRICHTS = " "
    MERY = " "
    VINOV = " "
    PRIOR = " "
end
ASSYST:disconnect()

local http = require("socket.http")
local http_url = require("socket.url")
local RESULT_URL = 'http://127.0.0.1:8989/assyst/assystEJB/Event/new?eventType=problem&entityDefinitionId=339&affectedUserId=' .. USR_ID .. "&itemAId=" .. ITEMID .. "&categoryId=" .. CATID .. "&assignedServDeptId=1704&remarks=%22" .. OPISANIE .. "%22&shortDescription=%22" .. KROPISANIE .. "%22&custom.field.4075=%22" .. SPOSOB .. "%22&custom.field.4073=%22" .. TYPETS .. "%22&custom.field.4074=%22" .. OPRICH .. "%22&custom.field.4077=%22" .. PRICHTS .. "%22&custom.field.4078=%22" .. MERY .. "%22&custom.field.4081=" .. VINOV .. "&custom.field.4098=%22" .. EVENT_ID .. "%22&fields=formattedReference,dateLogged"

local RESULT_REQUEST = http.request(RESULT_URL)

При этом есть описание заполнения json от разработчика. Параметры из SQL запроса должны передаваться в json, но я не могу понять, как в lua передать json и задать авторизацию в REST запросе.


Ответы (0 шт):