Logic Machine Forum
Ondilo spa/pool monitor - Printable Version

+- Logic Machine Forum (https://forum.logicmachine.net)
+-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1)
+--- Forum: Scripting (https://forum.logicmachine.net/forumdisplay.php?fid=8)
+--- Thread: Ondilo spa/pool monitor (/showthread.php?tid=2914)

Pages: 1 2


RE: Ondilo spa/pool monitor - admin - 20.06.2025

Please send your Ondilo credentials via PM.


RE: Ondilo spa/pool monitor - gjniewenhuijse - 24.06.2025

pm done


RE: Ondilo spa/pool monitor - admin - 25.06.2025

Try this:
Code:
function getAuth()
  local url = apiHost .. endpointAuth .. '?client_id=customer_api&response_type=code&redirect_uri=' .. uri .. '&scope=api&state=' .. state
  local resp, code, hdrs, stat = socket.http.request(url)

  local formtoken = resp:match('name="_token" value="([^"]+)">')
  local cookies = hdrs['set-cookie'] or ''
  local cookietoken = cookies:match('XSRF%-TOKEN=[^;]+') or ''
  local cookiesession = cookies:match('interop_new_api_session=[^;]+') or ''

  local escape = require('socket.url').escape
  local data = {
    '_token=' .. formtoken,
    'email=' .. escape(usr),
    'password=' .. escape(pwd),
    'locale=en',
    'proceed=Authorize'
  }
  local body = table.concat(data, '&')

  local resp, code, hdrs, stat = socket.http.request({
    url = url,
    method = 'POST',
    headers = {
      ['Content-Type'] = 'application/x-www-form-urlencoded',
      ['Content-Length'] = #body,
      ['Referer'] = url,
      ['Cookie'] = cookietoken .. '; ' .. cookiesession,
    },
    body = body
  })

  local location = hdrs.location
  local auth_code = location:match('code=(%w+)')

  if not auth_code then
    return
  end

  local data = {
    'code=' .. escape(auth_code),
    'grant_type=authorization_code',
    'client_id=customer_api',
    'redirect_uri=' .. escape(uri),
  }
  local body = table.concat(data, '&')

  local resp, code, hdrs, stat = socket.http.request({
    url = apiHost .. endpointToken,
    method = 'POST',
    headers = {
      ['Content-Type'] = 'application/x-www-form-urlencoded',
      ['Content-Length'] = #body,
      ['Referer'] = url,
      ['Cookie'] = cookietoken .. '; ' .. cookiesession,
    },
    body = body
  })

  if code == 200 then
    local data = json.decode(resp)
    return data.access_token
  end
end



RE: Ondilo spa/pool monitor - gjniewenhuijse - 26.06.2025

Thanks, it works again.