From 2e32296dfc9dc1fd190d17626b40b0fd098452b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C5=99emysl=20Janouch?= Date: Wed, 13 May 2015 06:08:49 +0200 Subject: [PATCH] Add an MPD service detection plugin --- plugins/mpd.lua | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 plugins/mpd.lua diff --git a/plugins/mpd.lua b/plugins/mpd.lua new file mode 100644 index 0000000..b513723 --- /dev/null +++ b/plugins/mpd.lua @@ -0,0 +1,45 @@ +-- +-- mpd.lua: Music Player Daemon service detection plugin +-- +-- Copyright (c) 2015, Přemysl Janouch +-- +-- Permission to use, copy, modify, and/or distribute this software for any +-- purpose with or without fee is hereby granted, provided that the above +-- copyright notice and this permission notice appear in all copies. +-- +-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +-- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +-- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY +-- SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +-- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION +-- OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +-- CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-- + +ponymap.check_api_version (1) + +local MPD = {} +MPD.__index = MPD + +function MPD.new (unit) + return setmetatable ({ unit = unit, buf = "" }, MPD) +end + +function MPD:on_data (data) + self.buf = self.buf .. data + local line = string.match (self.buf, "([^\n]*)\n") + if line then + local version = string.match (line, "OK MPD (.*)") + if version then + self.unit:add_info ("version " .. version) + self.unit:set_success (true) + end + self.unit:abort () + end +end + +ponymap.register_service ({ + name = "MPD", + flags = 0, + new_scan = MPD.new +})