mirror of https://github.com/bqv/weechat-xmpp
skel
parent
8a8ad87012
commit
6d8af6ed0f
@ -1,31 +0,0 @@
|
||||
weechat-slack (0.1.5) sid; urgency=medium
|
||||
|
||||
[ Tony Olagbaiye ]
|
||||
* Initial release.
|
||||
* Bot messages
|
||||
* Slackbot responses
|
||||
* CTags
|
||||
* Fix channel mentions. Closes #2
|
||||
* License headers
|
||||
* Administration
|
||||
* Add TODO to readme
|
||||
* Fix makefile to find libwebsockets.h
|
||||
* Build libwebsockets first
|
||||
* Revert libwebsockets header change
|
||||
* Build libjson-c before too
|
||||
* Typo
|
||||
* Move sanitizers to debug build
|
||||
* Fix make install
|
||||
* Fix install finally
|
||||
* Just remove `make install` from travis
|
||||
* Update README.org
|
||||
* Handle message.me_message (ref #5)
|
||||
* Monkeypatch message.bot_message for undoc'd slackbot msgs. Fixes #6
|
||||
* Implement chat.meMessage for /me (closes #5)
|
||||
* Update README.org
|
||||
* Update README.org
|
||||
* Describe debug process
|
||||
|
||||
[ Bao ]
|
||||
|
||||
-- Bao <bao@mail.fron.io> Thu, 10 May 2018 15:18:26 +0100
|
@ -1 +0,0 @@
|
||||
11
|
@ -1,26 +0,0 @@
|
||||
Source: weechat-slack
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: Tony Olagbaiye <frony0@gmail.com>
|
||||
Build-Depends:
|
||||
cmake, pkg-config,
|
||||
debhelper (>= 11),
|
||||
libssl-dev,
|
||||
libgnutls28-dev,
|
||||
perl
|
||||
Standards-Version: 4.0.0
|
||||
Homepage: https://weechat.org/
|
||||
Vcs-Git: https://github.com/bqv/weechat-slack.git
|
||||
Vcs-Browser: https://github.com/bqv/weechat-slack
|
||||
|
||||
Package: weechat-slack
|
||||
Architecture: any
|
||||
Depends:
|
||||
weechat (>= 1.7),
|
||||
${shlibs:Depends},
|
||||
${misc:Depends}
|
||||
Description: Fast, light and extensible chat client - Slack plugin
|
||||
WeeChat (Wee Enhanced Environment for Chat) is a fast and light chat client
|
||||
for many operating systems. Everything can be done with a keyboard.
|
||||
.
|
||||
This package provides the Slack API plugin.
|
File diff suppressed because it is too large
Load Diff
@ -1,17 +0,0 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
|
||||
#export DH_VERBOSE = 1
|
||||
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
|
||||
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
|
||||
|
||||
%:
|
||||
dh $@ --without autoreconf
|
||||
|
||||
override_dh_auto_install:
|
||||
dh_auto_install -- LIBDIR=/usr/lib/$(DEB_HOST_MULTIARCH)
|
||||
|
||||
override_dh_install:
|
||||
dh_install
|
@ -1,6 +0,0 @@
|
||||
# This is an override for the following lintian errors:
|
||||
# E: weechat-slack source: source-is-missing libwebsockets/plugins/generic-sessions/assets/lwsgs.js
|
||||
# E: weechat-slack source: source-is-missing libwebsockets/plugins/generic-sessions/assets/md5.min.js
|
||||
# The source is not missing, all sources are included.
|
||||
# This is a lintian false-positive.
|
||||
weechat-slack source: source-is-missing
|
@ -1 +0,0 @@
|
||||
Subproject commit f1c56bc233a5f05c01c93a5c250a31b4d309ecac
|
@ -1,97 +0,0 @@
|
||||
#!/usr/bin/perl -l
|
||||
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, version 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use LWP::Simple;
|
||||
use Data::Dumper;
|
||||
use JSON qw (decode_json);
|
||||
use List::Util qw (max);
|
||||
|
||||
our ($json, @array);
|
||||
|
||||
$json = get('https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json');
|
||||
@array = @{ decode_json($json) };
|
||||
|
||||
my $maxtexts = max (map { 1 + @{$_} } (grep defined, map { $_->{'texts'} } @array));
|
||||
my $maxnames = max (map { 1 + @{$_} } (grep defined, map { $_->{'short_names'} } @array));
|
||||
|
||||
print "
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, version 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAX_TEXTS $maxtexts
|
||||
#define MAX_NAMES $maxnames
|
||||
|
||||
struct t_slack_emoji_by_name {
|
||||
const char *name;
|
||||
const char *unicode;
|
||||
const char *text_to;
|
||||
const char *text_from[MAX_TEXTS];
|
||||
};
|
||||
|
||||
struct t_slack_emoji_by_text {
|
||||
const char *text;
|
||||
const char *unicode;
|
||||
const char *name_to;
|
||||
const char *name_from[MAX_NAMES];
|
||||
};
|
||||
";
|
||||
|
||||
print "static struct t_slack_emoji_by_name slack_emoji_by_name[] =";
|
||||
my $c = '{';
|
||||
my %byname = map { my $o = $_; map {($_, $o)} @{$o->{'short_names'}} } @array;
|
||||
my @sortedbyname = sort { $a cmp $b } keys %byname;
|
||||
foreach my $name (@sortedbyname)
|
||||
{
|
||||
my $_0 = "\":$name:\"";
|
||||
my @_1 = split /-/, $byname{$name}->{'unified'};
|
||||
my $_1 = "\"";
|
||||
foreach my $codepoint (@_1) {
|
||||
if (hex $codepoint < 0xA0) { $_1 .= chr hex $codepoint } else { $_1 .= "\\u$codepoint" }
|
||||
};
|
||||
$_1 .= "\"";
|
||||
$_1 =~ tr/A-Za-z/a-za-z/;
|
||||
my $_2 = $byname{$name}->{'text'};
|
||||
if (defined $_2) { $_2 = "\"$_2\"" } else { $_2 = "NULL" };
|
||||
$_2 =~ s/\\/\\\\/g;
|
||||
my $_3 = "{";
|
||||
foreach my $text (@{$byname{$name}->{'texts'}}) { if (defined $text) { $_3 .= "\"$text\", " } };
|
||||
$_3 .= "NULL}";
|
||||
$_3 =~ s/\\/\\\\/g;
|
||||
print "$c { $_0, $_1, $_2, $_3 }";
|
||||
$c = ',';
|
||||
}
|
||||
print "};";
|
||||
print "";
|
||||
print "static struct t_slack_emoji_by_text slack_emoji_by_text[] =";
|
||||
$c = '{';
|
||||
my %bytext = map { my $o = $_; map {($_, $o)} @{$o->{'texts'}} } @array;
|
||||
my @sortedbytext = sort { $a cmp $b } keys %bytext;
|
||||
foreach my $text (@sortedbytext)
|
||||
{
|
||||
my $_0 = "\"$text\"";
|
||||
$_0 =~ s/\\/\\\\/g;
|
||||
my @_1 = split /-/, $bytext{$text}->{'unified'};
|
||||
my $_1 = "\"";
|
||||
foreach my $codepoint (@_1) {
|
||||
if (hex $codepoint < 0xA0) { $_1 .= chr hex $codepoint } else { $_1 .= "\\u$codepoint" }
|
||||
};
|
||||
$_1 .= "\"";
|
||||
$_1 =~ tr/A-Za-z/a-za-z/;
|
||||
my $_2 = $bytext{$text}->{'short_name'};
|
||||
if (defined $_2) { $_2 = "\":$_2:\"" } else { $_2 = "NULL" };
|
||||
my $_3 = "{";
|
||||
foreach my $name (@{$bytext{$text}->{'short_names'}}) { if (defined $name) { $_3 .= "\":$name:\", " } };
|
||||
$_3 .= "NULL}";
|
||||
print "$c { $_0, $_1, $_2, $_3 }";
|
||||
$c = ',';
|
||||
}
|
||||
print "};";
|
@ -1,59 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, version 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
import requests
|
||||
import json
|
||||
import ast
|
||||
|
||||
emoji = requests.get("https://raw.githubusercontent.com/iamcal/emoji-data/master/emoji.json").json()
|
||||
|
||||
print("""
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, version 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#define MAX_TEXTS %d
|
||||
#define MAX_NAMES %d
|
||||
|
||||
struct t_slack_emoji_by_name {
|
||||
const char *name;
|
||||
const char *unicode;
|
||||
const char *text_to;
|
||||
const char *text_from[MAX_TEXTS];
|
||||
};
|
||||
|
||||
struct t_slack_emoji_by_text {
|
||||
const char *text;
|
||||
const char *unicode;
|
||||
const char *name_to;
|
||||
const char *name_from[MAX_NAMES];
|
||||
};
|
||||
"""%(max(len(o['texts'] if o['texts'] else []) for o in emoji) + 1,
|
||||
max(len(o['short_names'] if o['short_names'] else []) for o in emoji) + 1))
|
||||
print("static struct t_slack_emoji_by_name slack_emoji_by_name[] =")
|
||||
print("{"+"\n".join(", {{ {0}, {1}, {2}, {3} }}".format(
|
||||
json.dumps(":"+name+":"),
|
||||
json.dumps(ast.parse("\"\\u"+"\\u".join(o['unified'].split('-'))+"\"", mode='eval').body.s),
|
||||
json.dumps(o['text']),
|
||||
"{"+json.dumps(o['texts']+[None] if o['texts'] else [None])[1:-1]+"}")
|
||||
for o,name in sorted(((o,name) for o in emoji for name in o['short_names']),
|
||||
key=lambda x: x[1])
|
||||
).replace("null", "NULL")[1:])
|
||||
print("};")
|
||||
print("")
|
||||
print("static struct t_slack_emoji_by_text slack_emoji_by_text[] =")
|
||||
print("{"+"\n".join(", {{ {0}, {1}, {2}, {3} }}".format(
|
||||
json.dumps(text),
|
||||
json.dumps(ast.parse("\"\\u"+"\\u".join(o['unified'].split('-'))+"\"", mode='eval').body.s),
|
||||
json.dumps(":"+o['short_name']+":"),
|
||||
"{"+json.dumps(list(map(lambda name: ":"+name+":", o['short_names']))+[None]
|
||||
if o['short_names'] else [None])[1:-1]+"}")
|
||||
for o,text in sorted(((o,text) for o in emoji if o['texts'] for text in o['texts']),
|
||||
key=lambda x:x[1])
|
||||
).replace("null", "NULL")[1:])
|
||||
print("};")
|
@ -0,0 +1,106 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, version 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <strophe.h>
|
||||
#include <json.h>
|
||||
|
||||
#include "weechat-plugin.h"
|
||||
#include "xmpp.h"
|
||||
//#include "slack-config.h"
|
||||
//#include "slack-command.h"
|
||||
//#include "slack-workspace.h"
|
||||
//#include "slack-api.h"
|
||||
//#include "slack-buffer.h"
|
||||
//#include "slack-completion.h"
|
||||
|
||||
|
||||
WEECHAT_PLUGIN_NAME(XMPP_PLUGIN_NAME);
|
||||
WEECHAT_PLUGIN_DESCRIPTION(N_("XMPP protocol"));
|
||||
WEECHAT_PLUGIN_AUTHOR("bqv <weechat@fron.io>");
|
||||
WEECHAT_PLUGIN_VERSION(XMPP_PLUGIN_VERSION);
|
||||
WEECHAT_PLUGIN_LICENSE("MPL2");
|
||||
WEECHAT_PLUGIN_PRIORITY(5500);
|
||||
|
||||
struct t_weechat_plugin *weechat_xmpp_plugin = NULL;
|
||||
|
||||
struct t_hook *xmpp_hook_timer = NULL;
|
||||
|
||||
struct t_gui_bar_item *xmpp_typing_bar_item = NULL;
|
||||
|
||||
void xmpp_lwsl_emit_weechat(int level, const char *line)
|
||||
{
|
||||
char buf[50];
|
||||
//lwsl_timestamp(level, buf, sizeof(buf));
|
||||
|
||||
weechat_printf(
|
||||
NULL,
|
||||
_("%s%s: %s%s"),
|
||||
weechat_prefix("error"), XMPP_PLUGIN_NAME,
|
||||
buf, line);
|
||||
}
|
||||
|
||||
int weechat_plugin_init(struct t_weechat_plugin *plugin, int argc, char *argv[])
|
||||
{
|
||||
(void) argc;
|
||||
(void) argv;
|
||||
|
||||
weechat_plugin = plugin;
|
||||
|
||||
//lws_set_log_level(LLL_ERR | LLL_WARN /*| LLL_NOTICE | LLL_INFO | LLL_DEBUG
|
||||
// | LLL_PARSER | LLL_HEADER | LLL_EXT | LLL_CLIENT
|
||||
// | LLL_LATENCY | LLL_USER | LLL_COUNT*/,
|
||||
// xmpp_lwsl_emit_weechat);
|
||||
|
||||
//if (!xmpp_config_init())
|
||||
// return WEECHAT_RC_ERROR;
|
||||
|
||||
//xmpp_config_read();
|
||||
|
||||
//xmpp_command_init();
|
||||
|
||||
//xmpp_api_init();
|
||||
|
||||
//xmpp_completion_init();
|
||||
|
||||
//xmpp_hook_timer = weechat_hook_timer(0.1 * 1000, 0, 0,
|
||||
// &xmpp_workspace_timer_cb,
|
||||
// NULL, NULL);
|
||||
|
||||
if (!weechat_bar_search("typing"))
|
||||
{
|
||||
weechat_bar_new("typing", "off", "400", "window", "${typing}",
|
||||
"bottom", "horizontal", "vertical",
|
||||
"1", "1", "default", "default", "default",
|
||||
"off", "xmpp_typing");
|
||||
}
|
||||
|
||||
//xmpp_typing_bar_item = weechat_bar_item_new("xmpp_typing",
|
||||
// &xmpp_buffer_typing_bar_cb,
|
||||
// NULL, NULL);
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
||||
|
||||
int weechat_plugin_end(struct t_weechat_plugin *plugin)
|
||||
{
|
||||
/* make C compiler happy */
|
||||
(void) plugin;
|
||||
|
||||
if (xmpp_typing_bar_item)
|
||||
weechat_bar_item_remove(xmpp_typing_bar_item);
|
||||
|
||||
if (xmpp_hook_timer)
|
||||
weechat_unhook(xmpp_hook_timer);
|
||||
|
||||
//xmpp_config_write();
|
||||
|
||||
//xmpp_workspace_disconnect_all();
|
||||
|
||||
//xmpp_workspace_free_all();
|
||||
|
||||
return WEECHAT_RC_OK;
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, version 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
#ifndef _XMPP_H_
|
||||
#define _XMPP_H_
|
||||
|
||||
#define weechat_plugin weechat_xmpp_plugin
|
||||
#define XMPP_PLUGIN_NAME "xmpp"
|
||||
#define XMPP_PLUGIN_VERSION "0.1"
|
||||
|
||||
extern struct t_weechat_plugin *weechat_xmpp_plugin;
|
||||
|
||||
#endif /*XMPP_H*/
|
Loading…
Reference in New Issue