local lgi = require("lgi")
local Gio = lgi.Gio

local dbus = awesome._shim_fake_class()

-- Monkeypatch away the real dbus support
Gio.bus_own_name = function() end

--HACK it used to be an internal API, which made testing easy, but now it uses
-- GDBus, so this shims a small subset of its API and use some internal APIs
-- to access "private" methods. Note that it would be cleaner to implement an
-- high level (and testable) binding and use signals again.
local ndbus = nil

local invocation = {
    return_value = function() end
}

local function parameters_miss(t, k)
    if k == "get_child_value" then
        return function(idx) return t[idx-1] end
    end
end

function dbus.notify_send(_--[[appdata]], ...)
    ndbus = ndbus or require("naughty.dbus")

    ndbus._notif_methods.Notify(
        "sender",
        "/org/freedesktop/Notifications",
        "org.freedesktop.Notifications",
        "Notify",
        setmetatable({value={...}}, {__index=parameters_miss}),
        invocation
    )

    -- Legacy API
    dbus.emit_signal("org.freedesktop.Notifications", ...)
end

function dbus.request_name()
    -- Ignore
end

return dbus

-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80