Skip to content

Commit

Permalink
Merge branch 'dev' into testing
Browse files Browse the repository at this point in the history
  • Loading branch information
hfedcba committed Feb 26, 2019
2 parents 03c8589 + 19ed801 commit 9b432da
Show file tree
Hide file tree
Showing 7 changed files with 268 additions and 4 deletions.
10 changes: 6 additions & 4 deletions parsers/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,19 @@ LIBS += -Wl,-Bdynamic -lhomegear-node

libdir = $(localstatedir)/lib/homegear/node-blue/nodes/parsers

lib_LTLIBRARIES = json.la xml.la
lib_LTLIBRARIES = json.la strip.la xml.la

json_la_SOURCES = json/Factory.cpp json/MyNode.cpp
json_la_LDFLAGS =-module -avoid-version -shared
strip_la_SOURCES = strip/Factory.cpp strip/MyNode.cpp
strip_la_LDFLAGS =-module -avoid-version -shared
xml_la_SOURCES = xml/Factory.cpp xml/MyNode.cpp
xml_la_LDFLAGS =-module -avoid-version -shared

parsers_ladir = $(libdir)
parsers_la_DATA = json/json.hni xml/xml.hni
parsers_la_DATA = json/json.hni strip/strip.hni xml/xml.hni
locale_en_usdir = $(libdir)/locales/en-US
locale_en_us_DATA = json/locales/en-US/json xml/locales/en-US/xml
locale_en_us_DATA = json/locales/en-US/json strip/locales/en-US/strip xml/locales/en-US/xml

install-exec-hook:
rm -f $(DESTDIR)$(libdir)/json.la $(DESTDIR)$(libdir)/xml.la
rm -f $(DESTDIR)$(libdir)/json.la $(DESTDIR)$(libdir)/strip.la $(DESTDIR)$(libdir)/xml.la
42 changes: 42 additions & 0 deletions parsers/strip/Factory.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/* Copyright 2013-2019 Homegear GmbH
*
* Homegear is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Homegear is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Homegear. If not, see <http://www.gnu.org/licenses/>.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the
* OpenSSL library under certain conditions as described in each
* individual source file, and distribute linked combinations
* including the two.
* You must obey the GNU General Public License in all respects
* for all of the code used other than OpenSSL. If you modify
* file(s) with this exception, you may extend this exception to your
* version of the file(s), but you are not obligated to do so. If you
* do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source
* files in the program, then also delete it here.
*/

#include "Factory.h"
#include "MyNode.h"
#include "../config.h"

Flows::INode* MyFactory::createNode(std::string path, std::string nodeNamespace, std::string type, const std::atomic_bool* frontendConnected)
{
return new MyNode::MyNode(path, nodeNamespace, type, frontendConnected);
}

Flows::NodeFactory* getFactory()
{
return (Flows::NodeFactory*) (new MyFactory);
}
44 changes: 44 additions & 0 deletions parsers/strip/Factory.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/* Copyright 2013-2019 Homegear GmbH
*
* Homegear is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Homegear is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Homegear. If not, see <http://www.gnu.org/licenses/>.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the
* OpenSSL library under certain conditions as described in each
* individual source file, and distribute linked combinations
* including the two.
* You must obey the GNU General Public License in all respects
* for all of the code used other than OpenSSL. If you modify
* file(s) with this exception, you may extend this exception to your
* version of the file(s), but you are not obligated to do so. If you
* do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source
* files in the program, then also delete it here.
*/

#ifndef FACTORY_H
#define FACTORY_H

#include <homegear-node/NodeFactory.h>
#include "MyNode.h"

class MyFactory : Flows::NodeFactory
{
public:
virtual Flows::INode* createNode(std::string path, std::string nodeNamespace, std::string type, const std::atomic_bool* frontendConnected);
};

extern "C" Flows::NodeFactory* getFactory();

#endif
69 changes: 69 additions & 0 deletions parsers/strip/MyNode.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/* Copyright 2013-2019 Homegear GmbH
*
* Homegear is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Homegear is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Homegear. If not, see <http://www.gnu.org/licenses/>.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the
* OpenSSL library under certain conditions as described in each
* individual source file, and distribute linked combinations
* including the two.
* You must obey the GNU General Public License in all respects
* for all of the code used other than OpenSSL. If you modify
* file(s) with this exception, you may extend this exception to your
* version of the file(s), but you are not obligated to do so. If you
* do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source
* files in the program, then also delete it here.
*/

#include <homegear-base/Variable.h>
#include "MyNode.h"

namespace MyNode
{

MyNode::MyNode(std::string path, std::string nodeNamespace, std::string type, const std::atomic_bool* frontendConnected) : Flows::INode(path, nodeNamespace, type, frontendConnected)
{
}

MyNode::~MyNode()
{
}

bool MyNode::init(Flows::PNodeInfo info)
{
return true;
}

void MyNode::input(const Flows::PNodeInfo info, uint32_t index, const Flows::PVariable message)
{
try
{
Flows::PVariable outputMessage = std::make_shared<Flows::Variable>(Flows::VariableType::tStruct);
Flows::PVariable payload = std::make_shared<Flows::Variable>();
*payload = *(message->structValue->at("payload"));
outputMessage->structValue->emplace("payload", std::move(payload));
output(0, outputMessage);
}
catch(const std::exception& ex)
{
_out->printEx(__FILE__, __LINE__, __PRETTY_FUNCTION__, ex.what());
}
catch(...)
{
_out->printEx(__FILE__, __LINE__, __PRETTY_FUNCTION__);
}
}

}
51 changes: 51 additions & 0 deletions parsers/strip/MyNode.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/* Copyright 2013-2019 Homegear GmbH
*
* Homegear is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Homegear is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Homegear. If not, see <http://www.gnu.org/licenses/>.
*
* In addition, as a special exception, the copyright holders give
* permission to link the code of portions of this program with the
* OpenSSL library under certain conditions as described in each
* individual source file, and distribute linked combinations
* including the two.
* You must obey the GNU General Public License in all respects
* for all of the code used other than OpenSSL. If you modify
* file(s) with this exception, you may extend this exception to your
* version of the file(s), but you are not obligated to do so. If you
* do not wish to do so, delete this exception statement from your
* version. If you delete this exception statement from all source
* files in the program, then also delete it here.
*/

#ifndef MYNODE_H_
#define MYNODE_H_

#include <homegear-node/INode.h>

namespace MyNode
{

class MyNode: public Flows::INode
{
public:
MyNode(std::string path, std::string nodeNamespace, std::string type, const std::atomic_bool* frontendConnected);
virtual ~MyNode();

virtual bool init(Flows::PNodeInfo info);
private:
virtual void input(const Flows::PNodeInfo info, uint32_t index, const Flows::PVariable message);
};

}

#endif
13 changes: 13 additions & 0 deletions parsers/strip/locales/en-US/strip
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"parsers/strip.hni": {
"strip": {
"label": {
"name": "Name"
},
"paletteHelp": "<p>Creates a copy of the <code>$message</code> object only keeping the <code>payload</code>.</p>",
"help": "This node creates a copy of the <code>$message</code> object only keeping the <code>payload</code>.",
"input1Description": "Any message object.",
"output1Description": "A copy of the input message object only containing <code>payload</code>."
}
}
}
43 changes: 43 additions & 0 deletions parsers/strip/strip.hni
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<script type="text/x-homegear">
{
"name": "strip",
"readableName": "Strip",
"version": "0.0.1",
"maxThreadCount": 0
}
</script>
<script type="text/x-red" data-template-name="strip">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="strip.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]strip.label.name">
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('strip', {
category: 'parsers',
namespace: 'parsers',
color:"#DEBD5C",
defaults: {
name: {value:""}
},
inputs:1,
inputInfo: [
{
types: ["any"]
}
],
outputs:1,
outputInfo: [
{
types: ["any"]
}
],
icon: "join.png",
label: function() {
return this.name||"strip";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
}
});
</script>

0 comments on commit 9b432da

Please sign in to comment.