Code Monkey home page Code Monkey logo

slack-libpurple's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slack-libpurple's Issues

Slack closed xmpp gateways

Pidgin stopped connecting me to slack xmpp geteway. Below I've pasted debug from pidgin client. Is this the end ?

(09:31:06) dnssrv: querying TXT record for xxxx.xmpp.slack.com: _xmppconnect.xxxx.xmpp.slack.com
(09:31:06) account: Disconnecting account [email protected]/ 
(09:32:50) account: Connecting to account [email protected]/.
(09:32:50) dnssrv: querying SRV record for xxxx.xmpp.slack.com: _xmpp-client._tcp.xxxx.xmpp.slack.com
(09:32:51) dnsquery: Performing DNS lookup for xxxx.xmpp.slack.com
(09:32:51) dns: Got response for 'xxxx.xmpp.slack.com'
(09:32:51) dnsquery: IP resolved for xxxx.xmpp.slack.com
(09:32:51) proxy: Connecting to xxxx.xmpp.slack.com:5222 with no proxy 
(09:34:59) proxy: Connecting to xxxx.xmpp.slack.com:5222.
(09:34:59) proxy: Error connecting to xxxx.xmpp.slack.com:5222 (Connection timed out). 

dll for windows?

Hi.

Is there any ready to use windows build available for download?

Thanks.

no more "push notifications" after suspend

When I suspend my machine and it comes back up, I have to manually enter a chat to see the messages there. It does no longer pop up by itself when there are new messages in the chat. When I disable the account and re-enable it, the correct behaviour is restored.

Usernames from shared channels not shown

The usernames from shared channels get shown as something like "U0KDV117F" or "U9E349V2T" and there user list for the shared channel is empty.

I can provide some debug information, if needed.

Can't create more than one slack account in pidgin

there is an issue with the current implementation
when I add second(different) slack account to pidgin it connects, but all contacts from the first account are doubled and none from the second are displayed

Showing images inline in messaging window

I know this is on the list of thing to do, but I'd like to up-vote it via here. Note that it is not horrible if it's not available right away, since the URLs are now showing up when the image isn't available, which is the way the Slack's XMPP bridge handles it. However, it would be great if it were implemented.

One of things I have noticed with Pidgin plugins that do inline images (i.e. https://bitbucket.org/EionRobb/purple-hangouts) is that sometimes pidgin will crash (rarely, but it happens). Maybe it would be nice to have a way to turn on or off inline images?

Channels with alias still show up as their actual name

Channels that are configured with an alias still open with their actual name.
Not being able to alias rooms makes it difficult to distinguish some channels when connecting to a lot of Slack teams. Especially since all Slack teams have a 'general' channel.

Repro:
Buddies -> Add Chat
Configure a chat room and give it an alias
Join the room and see that the tab has the actual chat room name and not the alias

Expected:
The tab / room will have the alias on it

Pidgin segfault after slack account creation

Hi. It seems it falls at purple-websocket.c:279. Here is the full stacktrace:

Thread 1 "pidgin" received signal SIGSEGV, Segmentation fault.
0x00007ffff4921d2f in _int_malloc () from /usr/lib/libc.so.6
(gdb) backtrace
#0  0x00007ffff4921d2f in _int_malloc () at /usr/lib/libc.so.6
#1  0x00007ffff4923f08 in calloc () at /usr/lib/libc.so.6
#2  0x00007ffff550f081 in g_malloc0 () at /usr/lib/libglib-2.0.so.0
#3  0x00000000004697ee in  ()
#4  0x00007fffe6df8713 in ws_input (ws=0x164a9a0) at purple-websocket.c:279
#5  0x00007fffe6df7456 in slack_rtm_send (sa=sa@entry=0x14ed990, callback=callback@entry=0x0, user_data=user_data@entry=0x0, type=type@entry=0x7fffe6df9c15 "presence_sub") at slack-rtm.c:205
#6  0x00007fffe6df556d in slack_presence_sub (sa=sa@entry=0x14ed990) at slack-im.c:29
#7  0x00007fffe6df5a7f in im_list_cb (sa=0x14ed990, data=<optimized out>, json=<optimized out>, error=<optimized out>) at slack-im.c:120
#8  0x00007fffe6df7f10 in api_cb (fetch=<optimized out>, data=0x2167580, buf=<optimized out>, len=<optimized out>, error=<optimized out>) at slack-api.c:33
#9  0x00007ffff52288f5 in  () at /usr/lib/libpurple.so.0
#10 0x000000000046987e in  ()
#11 0x00007ffff55098c5 in g_main_context_dispatch () at /usr/lib/libglib-2.0.so.0
#12 0x00007ffff5509c88 in  () at /usr/lib/libglib-2.0.so.0
#13 0x00007ffff5509fa2 in g_main_loop_run () at /usr/lib/libglib-2.0.so.0
#14 0x00007ffff67cf3a7 in gtk_main () at /usr/lib/libgtk-x11-2.0.so.0
#15 0x0000000000431e99 in main ()

"Get History" messages does not include usernames and timestamps

Open up any of the Slack channels you're participating or simply start a new chat with another member of your team, click on the Conversation menu button, then click More > Get History, type some integer and click Get. The plugin fetches older messages successfully, but they seem to lack at least usernames and timestamps. Every message starts on a new row, but there's no identifier who was the sender and when it was sent.

Werror preventing successful compile

gcc -MM -g -O2 -Wall -Werror -Wno-error=strict-aliasing -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/include/libpurple -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include slack.c slack-cmd.c slack-message.c slack-conversation.c slack-channel.c slack-im.c slack-user.c slack-rtm.c slack-blist.c slack-api.c slack-object.c slack-json.c purple-websocket.c json.c > Makefile.dep
gcc -c -g -O2 -Wall -Werror -Wno-error=strict-aliasing -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/include/libpurple -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -o slack.o slack.c
gcc -c -g -O2 -Wall -Werror -Wno-error=strict-aliasing -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/include/libpurple -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -o slack-message.o slack-message.c
In file included from slack.h:10,
                 from slack-rtm.h:5,
                 from slack-message.c:5:
In function 'slack_object_id_set',
    inlined from 'slack_object_hash_table_lookup' at slack-object.h:67:2,
    inlined from 'slack_message_to_html' at slack-message.c:136:26:
slack-object.h:25:3: error: 'strncpy' specified bound 12 equals destination size [-Werror=stringop-truncation]
   strncpy(id, s, SLACK_OBJECT_ID_SIZ);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'slack_object_id_set',
    inlined from 'slack_object_hash_table_lookup' at slack-object.h:67:2,
    inlined from 'slack_message_to_html' at slack-message.c:119:42:
slack-object.h:25:3: error: 'strncpy' specified bound 12 equals destination size [-Werror=stringop-truncation]
   strncpy(id, s, SLACK_OBJECT_ID_SIZ);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'slack_object_id_set',
    inlined from 'slack_object_hash_table_lookup' at slack-object.h:67:2,
    inlined from 'slack_handle_message' at slack-message.c:437:24:
slack-object.h:25:3: error: 'strncpy' specified bound 12 equals destination size [-Werror=stringop-truncation]
   strncpy(id, s, SLACK_OBJECT_ID_SIZ);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'slack_object_id_set',
    inlined from 'slack_object_hash_table_lookup' at slack-object.h:67:2,
    inlined from 'slack_handle_message' at slack-message.c:414:23:
slack-object.h:25:3: error: 'strncpy' specified bound 12 equals destination size [-Werror=stringop-truncation]
   strncpy(id, s, SLACK_OBJECT_ID_SIZ);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'slack_object_id_set',
    inlined from 'slack_object_hash_table_lookup' at slack-object.h:67:2,
    inlined from 'slack_user_typing' at slack-message.c:467:32:
slack-object.h:25:3: error: 'strncpy' specified bound 12 equals destination size [-Werror=stringop-truncation]
   strncpy(id, s, SLACK_OBJECT_ID_SIZ);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'slack_object_id_set',
    inlined from 'slack_object_hash_table_lookup' at slack-object.h:67:2,
    inlined from 'slack_user_typing' at slack-message.c:472:44:
slack-object.h:25:3: error: 'strncpy' specified bound 12 equals destination size [-Werror=stringop-truncation]
   strncpy(id, s, SLACK_OBJECT_ID_SIZ);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make: *** [Makefile:80: slack-message.o] Error 1
==> ERROR: A failure occurred in build().
    Aborting...

any ideas?

support Spectrum2

Hi. NIce PLugin. BUt I Try to register via Vacuum for slack but dunno how. Username and password are the for registering.

How would i archieve to register for libpurple spectrum2 ?

/me command doesn't work as expected

In the XMPP gateway with standard XMPP plugin things like "/me is going to bed" worked fine, but with this plugin you type:

/me vomits

and get

(10:37:49) channel_not_found

FWIW this works in slack web client just fine.

Eliminate/replace json-parser dependency somehow

This is a rather obscure library, although quite simple and well-suited. It would be nice to find a more standard/common (read: included in distributions) json library, or just have it internal. Could also go back to the original solution of just copying and including json-parse outright.

UI windows not refreshing

Since having installed this plugin, I have an occurrence where the UI windows, other than the main one with the buddy list in it, are not refreshing:

screenshot from 2018-03-19 11-29-52

That window under the Accounts window is the tabbed conversations window.

A stacktrace of the pidgin process. This process is still running if there is any diagnostics or debug info I can retrieve from it for you.

I've never had this problem until using this plugin.

Implement basic slash commands

I miss using /me and /topic from the IRC days. They work (somewhat) on the Slack's XMPP bridge, but not with this plugin (I keep getting "The command doesn't work with this protocol"). Is this a hard thing to implement?

Oauth support

I work at Oracle and they are unfriendly with legacy token mechanism.
The only way to use the plugin is to use the oauth token, in order to do this the plugin has to be registered as a slack official app and implement the functionality to issue a token.

https://api.slack.com/docs/oauth#flow

I understand that this is a huge peace of work, but is there any plans to have it in feasible future?

Pidgin doesn't show message from new contacts

It seems that if somebody who wasn't in your contact list writes you a message you won't see it. I may be wrong because to reproduce this I need to find someone who hasn't written me yet. But I definitely had missed messages.

Can't join group chat

Every time I try to open chat it tells me "Could not join channel, no_channel"

In logs I see request:

(12:10:56) slack: api call: https://slack.com/api/channels.join?token={...}&name=%03
(12:10:56) util: requesting to fetch a URL

and response:

(12:04:57) util: parsed 33
(12:04:57) slack: api response: {"ok":false,"error":"no_channel"}

Right after that pidgin falls with segfault.

All slack buddies are listed as offline

Don't know if this has something to do with our big roster (~2500 users), and the long connect time, but after I connect, the few people I actually have had some interaction with, and therefore are in my buddy list, are all listed as offline, which they are not. (And "offline" isn't even something slack seems to think is a thing...)

URLs sent/received are not visible.

When I send a URL to a group/buddy, it is not visible (but the rest of the message is). The same goes when someone sends me a URL. Is this related to #7 ?

slack-message.c:138:12: error: ‘PURPLE_MESSAGE_REMOTE_SEND’ undeclared

Hi Dylan,

when I try to build the software I get the following error. I used libpurple-dev 1:2.10.12-0ubuntu5.2.

~/bin/slack-libpurple $ make install
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/usr/include/libpurple -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -o slack-message.o slack-message.c
slack-message.c: In function ‘handle_message’:
slack-message.c:138:12: error: ‘PURPLE_MESSAGE_REMOTE_SEND’ undeclared (first use in this function)
   flags |= PURPLE_MESSAGE_REMOTE_SEND;
            ^
slack-message.c:138:12: note: each undeclared identifier is reported only once for each function it appears in
Makefile:43: recipe for target 'slack-message.o' failed
make: *** [slack-message.o] Error 1

Best,
Arne

Two clients/machines, same keys, odd behaviour, plus thanks

Not 100% sure what's going on, but either there are some bugs (understandable, it's still new), or the method/architecture is limited to behaving properly with only one instance connected, or I have no idea :-)

Use case: Desktop at home + Laptop at work, same accounts, same keys, both connected, both logging full time, 24/7, messages from one end or the other depending on where I am.

Behaviours noticed, possibly unrelated to two-client setup:

  1. When new channel created all people added including me, but excluding the channel founder appear in the channel user list twice, and have two messages, eg:
(00:50:50) Fred entered the room.
(00:50:50) @fredcooke has joined the channel

Note the first one has my local alias and the second one looks like what slack shows in web view etc. That kinda makes sense, but the duplication in the list does not. Related to my twin connections? Could one steal the messages of another, or could one kick the other out of the API session, or something?

  1. When internet connection is iffy, plugin does not appear to realise it's offline even after long periods. Sending a message results in this sequence, note timings:
(18:10:29) The account has disconnected and you are no longer in this chat. You will automatically rejoin the chat when the account reconnects.
(18:11:06) List of users:
  1. List of users on join is empty

  2. I love the edit display code, nice work, whoever wrote that. Particularly cool to see Slack's implementation for link enrichment bleeding through this plugin implementation :-) Neat. If the flag or metadata slack uses to display the edited tag or not display that tag can be used to only show the additional info for the enrichment case, that'd be slightly better, but no big deal.

  3. Connect on large accounts is quite slow, as in nearly a minute on my crappy DSL for the biggest of the accounts to which I connect. Could be related to the drop outs due to untimely messages/calls being made? For this what I want to know is, when asking for buddies or buddy details etc, is it done with some sort of bulk API call such that it's O(1)ish or is it done on an individual basis such that it's O(N)ish. If the latter, are the bulk APIs even available, and if so is there any reason why we're not using them? Or maybe it's a matter of getting the minimum before showing connected, then using a thread to get details like avatar and status after the fact and updating those pieces of data structure? Currently it's a bit annoying, especially with the need to cycle the connection to regain functionality after an instance of 2).

Maybe other stuff, but I'm pretty happy overall aside from the above. Thanks to all contributors! :-)

OS: Lubuntu 16.04 Xenial
Pidgin: 2.10.12-0ubuntu5.2
LibPurple: 2.10.12-0ubuntu5.2
Plugin: 0179b2c

Happy to patch/hack the code given some instruction and test things out. Just let me know :-)

Response too long (4194304 bytes limit)

Upon connection I get an error visible in pidgin

"
Error reading from slack.com: response too long (4194304 bytes limit)
"

Its a corporate slack account with a whole lot of users, many thousands. I can help with debugging, I was not able to find where that limit is set in the code. Sounds like it could be a pidgin issue, but I'm not sure.

No activity from channel

Hi,

I can connect to slack, and join a channel fine. Things I type in pidgin or bitlbee will show up on the server. However, I don't get any replies and such back through libpurple. It's a one-way conversation.

Possibly related: I get disconnected (perhaps due to inactivity?) periodically.

Integration attachment not displayed

When I receive a message from an integration, like a GitLab webhook, I only see the text from the root, but not the text in the attachments.

In the case of GitLab webhooks the most relevant information is in the attachments:

Commented

Text: <user> commented on merge request <MR number> in <project>: <MR name>
Attachment text: <actual comment>

Build result

Text: (none)
Attachment text: <project>: Pipeline <pipeline number> of branch <branch name> by <user> passed in <duration>

Can't compile on Ubuntu 16.04/17.10

Hi,

I cloned the project and ran "make install" but I get errors.
I do have libpurple installed:
$ dpkg -l | grep purple
ii libpurple-bin 1:2.12.0-1ubuntu2 all multi-protocol instant messaging library - extra utilities
ii libpurple0 1:2.12.0-1ubuntu2 amd64 multi-protocol instant messaging library

But I get these:
$ make install
Package purple was not found in the pkg-config search path.
Perhaps you should add the directory containing purple.pc' to the PKG_CONFIG_PATH environment variable No package 'purple' found Package purple was not found in the pkg-config search path. Perhaps you should add the directory containing purple.pc'
to the PKG_CONFIG_PATH environment variable
No package 'purple' found
Makefile:117: Makefile.dep: No such file or directory
Package purple was not found in the pkg-config search path.
Perhaps you should add the directory containing purple.pc' to the PKG_CONFIG_PATH environment variable No package 'purple' found Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found
Package gobject-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gobject-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gobject-2.0' found
gcc -MM -g -O2 -Wall -Werror -Wno-error=strict-aliasing -fPIC -D_DEFAULT_SOURCE=1 -std=c99 slack.c slack-cmd.c slack-message.c slack-conversation.c slack-channel.c slack-im.c slack-user.c slack-rtm.c slack-blist.c slack-api.c slack-object.c slack-json.c purple-websocket.c json.c > Makefile.dep
slack-message.c:388:25: error: missing binary operator before token "("
#if PURPLE_VERSION_CHECK(2,12,0)
^
Makefile:115: recipe for target 'Makefile.dep' failed
make: *** [Makefile.dep] Error 1

And then if I remove the line with the PURPLE_CHECK_VERSION from the file and force the right value in the If/Else, I get these:
$ make install
Package purple was not found in the pkg-config search path.
Perhaps you should add the directory containing purple.pc' to the PKG_CONFIG_PATH environment variable No package 'purple' found Package purple was not found in the pkg-config search path. Perhaps you should add the directory containing purple.pc'
to the PKG_CONFIG_PATH environment variable
No package 'purple' found
Package purple was not found in the pkg-config search path.
Perhaps you should add the directory containing purple.pc' to the PKG_CONFIG_PATH environment variable No package 'purple' found Package glib-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing glib-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glib-2.0' found
Package gobject-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing gobject-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'gobject-2.0' found gcc -MM -g -O2 -Wall -Werror -Wno-error=strict-aliasing -fPIC -D_DEFAULT_SOURCE=1 -std=c99 slack.c slack-cmd.c slack-message.c slack-conversation.c slack-channel.c slack-im.c slack-user.c slack-rtm.c slack-blist.c slack-api.c slack-object.c slack-json.c purple-websocket.c json.c > Makefile.dep Package purple was not found in the pkg-config search path. Perhaps you should add the directory containing purple.pc'
to the PKG_CONFIG_PATH environment variable
No package 'purple' found
Package purple was not found in the pkg-config search path.
Perhaps you should add the directory containing purple.pc' to the PKG_CONFIG_PATH environment variable No package 'purple' found Package purple was not found in the pkg-config search path. Perhaps you should add the directory containing purple.pc'
to the PKG_CONFIG_PATH environment variable
No package 'purple' found
Package glib-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing glib-2.0.pc' to the PKG_CONFIG_PATH environment variable No package 'glib-2.0' found Package gobject-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing gobject-2.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gobject-2.0' found
gcc -c -g -O2 -Wall -Werror -Wno-error=strict-aliasing -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -o slack.o slack.c
slack.c:7:10: fatal error: accountopt.h: No such file or directory
#include <accountopt.h>
^~~~~~~~~~~~~~
compilation terminated.
Makefile:80: recipe for target 'slack.o' failed
make: *** [slack.o] Error 1

Any idea/tip?

spectrum2 how to?

Pidgin shows API key input field, but how can I use this as spectrum2 transport? Jabber transport registration suppose only username and password

Formatting menu not available, and copied text not plain

Regularly in pidgin I'll copy some text from the chat window into the entry box, usually by select/centre click on Linux. Often this comes with formatting of various types eg links embellished in strange ways, so I use the format menu to "reset formatting" after selecting all. Just noticed that all items are greyed out and not usable, so to fix the issue I had to paste into a plain text app and copy back out again to lose the formatting. Eg:

(03:49:47) <font size="3">rob: and with a single stage paint job you will never worry about the clear coat peeling again</font>

vs

(03:49:47) rob: and with a single stage paint job you will never worry about the clear coat peeling again

Can we at least have the reset option even if the rest is not supported by the protocol? Or maybe force the content pasted to be reset/pasted plain? Not sure what control you have, but clearly some. I've not seen that option removed in other plugins. Checked, IRC doesn't have it, but pastes plain, so I guess fixing the pasting is the way to go?

Outgoing private messages sent from slack app show up in wrong channel?

So I'm pretty sure this isn't user error, but I am using bitlbee-libpurple, and I'm new to bitlbee.

Using the slack client, if I send a private message, I get two new channels in my irc client, a private message with my username on slack, and a private message with the target of the private message.
If I respond in the channel with the target of the PM, it works fine, and if I respond to my slack username, it shows up in the private message to you channel you have in slack.

If I'm in a channel, and I send a message on slack, it does not show up in the channel in my irc client, but if I send a message in the irc client it shows up fine.

So is this a problem with bitlbee-libpurple, slack-libpurple, or something between chair and keyboard?

unread messages include already notified ones

When "retrieve unread history on open" is set, there are messages printed that have already been shown. I.e. "unread history" refers only to unread on slack, but it should include messages in pidgin/client. Maybe messages could be marked as read on slack, when displayed in a window that has focus?

Handle message edit as new message

It's very inconvenient when you can't see message changes so you can miss some important information. Other protocols handle edits like new message.

Compilation issue under OSX

First -- thanks for picking this up! I'm excited to getting slack working on pidgin without XMPP. :-)

The issue I am having is compilation under OSX. Things compile to a point, but when it gets to the linking phase, I get an bunch of errors listed under Undefined symbols for architecture x86_6. From the info it gives, it seems like it can't find something to do with gtk, but I am not sure. Am I missing a dependency?

Here is the result of my make command:

Makefile:74: Makefile.dep: No such file or directory
pkg-config --modversion purple json-parser 
2.11.0
1.1
gcc -MM -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include slack.c slack-message.c slack-channel.c slack-im.c slack-user.c slack-rtm.c slack-blist.c slack-api.c slack-object.c slack-json.c purple-websocket.c > Makefile.dep
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack.o slack.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-message.o slack-message.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-channel.o slack-channel.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-im.o slack-im.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-user.o slack-user.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-rtm.o slack-rtm.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-blist.o slack-blist.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-api.o slack-api.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-object.o slack-object.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o slack-json.o slack-json.c
gcc -c -g -O2 -Wall -Werror -fPIC -D_DEFAULT_SOURCE=1 -std=c99 -I/usr/local/include/json-parser -I/opt/local/include/libpurple -I/opt/local/include/glib-2.0 -I/opt/local/lib/glib-2.0/include -I/opt/local/include -o purple-websocket.o purple-websocket.c
gcc -shared -o libslack.so slack.o slack-message.o slack-channel.o slack-im.o slack-user.o slack-rtm.o slack-blist.o slack-api.o slack-object.o slack-json.o purple-websocket.o -L/usr/local/lib -L/opt/local/lib -lpurple -lglib-2.0 -lintl -ljsonparser
Undefined symbols for architecture x86_64:
  "_g_object_new", referenced from:
      _channel_update in slack-channel.o
      _slack_user_update in slack-user.o
  "_g_object_ref", referenced from:
      _slack_get_history in slack-message.o
      _slack_join_chat in slack-channel.o
      _slack_chat_send in slack-channel.o
      _slack_send_im in slack-im.o
      _rtm_connect_cb in slack-rtm.o
  "_g_object_unref", referenced from:
      _slack_login in slack.o
      _slack_close in slack.o
      _get_history_cb in slack-message.o
      _channels_join_cb in slack-channel.o
      _send_chat_cb in slack-channel.o
      _send_im_open_cb in slack-im.o
      _send_im_cb in slack-im.o
      ...
  "_g_type_check_class_cast", referenced from:
      _slack_channel_class_intern_init in slack-channel.o
      _slack_channel_finalize in slack-channel.o
      _slack_user_class_intern_init in slack-user.o
      _slack_user_finalize in slack-user.o
  "_g_type_check_instance_cast", referenced from:
      _slack_channel_finalize in slack-channel.o
      _slack_user_finalize in slack-user.o
  "_g_type_check_instance_is_a", referenced from:
      _handle_message in slack-message.o
      _slack_get_history in slack-message.o
      _slack_status_text in slack-user.o
  "_g_type_class_adjust_private_offset", referenced from:
      _slack_channel_class_intern_init in slack-channel.o
      _slack_user_class_intern_init in slack-user.o
      _slack_object_class_intern_init in slack-object.o
  "_g_type_class_peek_parent", referenced from:
      _slack_channel_class_intern_init in slack-channel.o
      _slack_user_class_intern_init in slack-user.o
      _slack_object_class_intern_init in slack-object.o
  "_g_type_register_static_simple", referenced from:
      _slack_channel_get_type in slack-channel.o
      _slack_user_get_type in slack-user.o
      _slack_object_get_type in slack-object.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [libslack.so] Error 1

Just in case you need the contents of Makefile.dep, I also include it here:

slack.o: slack.c /opt/local/include/libpurple/accountopt.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h \
  /opt/local/include/libpurple/debug.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/version.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h slack-api.h \
  /usr/local/include/json-parser/json.h slack-rtm.h slack-user.h \
  slack-object.h slack-im.h slack-channel.h slack-blist.h \
  slack-message.h
slack-message.o: slack-message.c /opt/local/include/libpurple/debug.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h \
  /opt/local/include/libpurple/version.h slack-json.h \
  /usr/local/include/json-parser/json.h slack-rtm.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h slack-api.h \
  slack-user.h slack-object.h slack-channel.h slack-message.h
slack-channel.o: slack-channel.c /opt/local/include/libpurple/debug.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h slack-json.h \
  /usr/local/include/json-parser/json.h slack-api.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h \
  slack-blist.h slack-object.h slack-rtm.h slack-message.h slack-user.h \
  slack-channel.h
slack-im.o: slack-im.c /opt/local/include/libpurple/debug.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h slack-json.h \
  /usr/local/include/json-parser/json.h slack-api.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h slack-rtm.h \
  slack-blist.h slack-object.h slack-message.h slack-user.h \
  slack-channel.h slack-im.h
slack-user.o: slack-user.c /opt/local/include/libpurple/debug.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h slack-json.h \
  /usr/local/include/json-parser/json.h slack-api.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h \
  slack-blist.h slack-object.h slack-user.h slack-im.h
slack-rtm.o: slack-rtm.c /opt/local/include/libpurple/debug.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h slack-json.h \
  /usr/local/include/json-parser/json.h slack-api.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h slack-user.h \
  slack-object.h slack-im.h slack-blist.h slack-message.h \
  slack-channel.h slack-rtm.h
slack-blist.o: slack-blist.c /opt/local/include/libpurple/request.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h \
  /opt/local/include/libpurple/debug.h slack-json.h \
  /usr/local/include/json-parser/json.h slack-channel.h slack-object.h \
  slack.h purple-websocket.h slack-user.h slack-api.h slack-message.h \
  slack-blist.h
slack-api.o: slack-api.c /opt/local/include/libpurple/debug.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h slack-api.h \
  /usr/local/include/json-parser/json.h slack.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h slack-json.h
slack-object.o: slack-object.c slack-object.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h
slack-json.o: slack-json.c slack-json.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h \
  /usr/local/include/json-parser/json.h
purple-websocket.o: purple-websocket.c \
  /opt/local/include/libpurple/cipher.h \
  /opt/local/include/glib-2.0/glib.h \
  /opt/local/include/glib-2.0/glib/galloca.h \
  /opt/local/include/glib-2.0/glib/gtypes.h \
  /opt/local/lib/glib-2.0/include/glibconfig.h \
  /opt/local/include/glib-2.0/glib/gmacros.h \
  /opt/local/include/glib-2.0/glib/gversionmacros.h \
  /opt/local/include/glib-2.0/glib/garray.h \
  /opt/local/include/glib-2.0/glib/gasyncqueue.h \
  /opt/local/include/glib-2.0/glib/gthread.h \
  /opt/local/include/glib-2.0/glib/gatomic.h \
  /opt/local/include/glib-2.0/glib/gerror.h \
  /opt/local/include/glib-2.0/glib/gquark.h \
  /opt/local/include/glib-2.0/glib/gutils.h \
  /opt/local/include/glib-2.0/glib/gbacktrace.h \
  /opt/local/include/glib-2.0/glib/gbase64.h \
  /opt/local/include/glib-2.0/glib/gbitlock.h \
  /opt/local/include/glib-2.0/glib/gbookmarkfile.h \
  /opt/local/include/glib-2.0/glib/gbytes.h \
  /opt/local/include/glib-2.0/glib/gcharset.h \
  /opt/local/include/glib-2.0/glib/gchecksum.h \
  /opt/local/include/glib-2.0/glib/gconvert.h \
  /opt/local/include/glib-2.0/glib/gdataset.h \
  /opt/local/include/glib-2.0/glib/gdate.h \
  /opt/local/include/glib-2.0/glib/gdatetime.h \
  /opt/local/include/glib-2.0/glib/gtimezone.h \
  /opt/local/include/glib-2.0/glib/gdir.h \
  /opt/local/include/glib-2.0/glib/genviron.h \
  /opt/local/include/glib-2.0/glib/gfileutils.h \
  /opt/local/include/glib-2.0/glib/ggettext.h \
  /opt/local/include/glib-2.0/glib/ghash.h \
  /opt/local/include/glib-2.0/glib/glist.h \
  /opt/local/include/glib-2.0/glib/gmem.h \
  /opt/local/include/glib-2.0/glib/gnode.h \
  /opt/local/include/glib-2.0/glib/ghmac.h \
  /opt/local/include/glib-2.0/glib/ghook.h \
  /opt/local/include/glib-2.0/glib/ghostutils.h \
  /opt/local/include/glib-2.0/glib/giochannel.h \
  /opt/local/include/glib-2.0/glib/gmain.h \
  /opt/local/include/glib-2.0/glib/gpoll.h \
  /opt/local/include/glib-2.0/glib/gslist.h \
  /opt/local/include/glib-2.0/glib/gstring.h \
  /opt/local/include/glib-2.0/glib/gunicode.h \
  /opt/local/include/glib-2.0/glib/gkeyfile.h \
  /opt/local/include/glib-2.0/glib/gmappedfile.h \
  /opt/local/include/glib-2.0/glib/gmarkup.h \
  /opt/local/include/glib-2.0/glib/gmessages.h \
  /opt/local/include/glib-2.0/glib/gvariant.h \
  /opt/local/include/glib-2.0/glib/gvarianttype.h \
  /opt/local/include/glib-2.0/glib/goption.h \
  /opt/local/include/glib-2.0/glib/gpattern.h \
  /opt/local/include/glib-2.0/glib/gprimes.h \
  /opt/local/include/glib-2.0/glib/gqsort.h \
  /opt/local/include/glib-2.0/glib/gqueue.h \
  /opt/local/include/glib-2.0/glib/grand.h \
  /opt/local/include/glib-2.0/glib/gregex.h \
  /opt/local/include/glib-2.0/glib/gscanner.h \
  /opt/local/include/glib-2.0/glib/gsequence.h \
  /opt/local/include/glib-2.0/glib/gshell.h \
  /opt/local/include/glib-2.0/glib/gslice.h \
  /opt/local/include/glib-2.0/glib/gspawn.h \
  /opt/local/include/glib-2.0/glib/gstrfuncs.h \
  /opt/local/include/glib-2.0/glib/gstringchunk.h \
  /opt/local/include/glib-2.0/glib/gtestutils.h \
  /opt/local/include/glib-2.0/glib/gthreadpool.h \
  /opt/local/include/glib-2.0/glib/gtimer.h \
  /opt/local/include/glib-2.0/glib/gtrashstack.h \
  /opt/local/include/glib-2.0/glib/gtree.h \
  /opt/local/include/glib-2.0/glib/gurifuncs.h \
  /opt/local/include/glib-2.0/glib/gversion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gallocator.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcache.h \
  /opt/local/include/glib-2.0/glib/deprecated/gcompletion.h \
  /opt/local/include/glib-2.0/glib/deprecated/gmain.h \
  /opt/local/include/glib-2.0/glib/deprecated/grel.h \
  /opt/local/include/glib-2.0/glib/deprecated/gthread.h \
  /opt/local/include/glib-2.0/glib/glib-autocleanups.h \
  /opt/local/include/libpurple/debug.h \
  /opt/local/include/libpurple/sslconn.h \
  /opt/local/include/libpurple/certificate.h \
  /opt/local/include/libpurple/proxy.h \
  /opt/local/include/libpurple/eventloop.h \
  /opt/local/include/libpurple/account.h \
  /opt/local/include/glib-2.0/glib-object.h \
  /opt/local/include/glib-2.0/gobject/gbinding.h \
  /opt/local/include/glib-2.0/gobject/gobject.h \
  /opt/local/include/glib-2.0/gobject/gtype.h \
  /opt/local/include/glib-2.0/gobject/gvalue.h \
  /opt/local/include/glib-2.0/gobject/gparam.h \
  /opt/local/include/glib-2.0/gobject/gclosure.h \
  /opt/local/include/glib-2.0/gobject/gsignal.h \
  /opt/local/include/glib-2.0/gobject/gmarshal.h \
  /opt/local/include/glib-2.0/gobject/gboxed.h \
  /opt/local/include/glib-2.0/gobject/glib-types.h \
  /opt/local/include/glib-2.0/gobject/genums.h \
  /opt/local/include/glib-2.0/gobject/gparamspecs.h \
  /opt/local/include/glib-2.0/gobject/gsourceclosure.h \
  /opt/local/include/glib-2.0/gobject/gtypemodule.h \
  /opt/local/include/glib-2.0/gobject/gtypeplugin.h \
  /opt/local/include/glib-2.0/gobject/gvaluearray.h \
  /opt/local/include/glib-2.0/gobject/gvaluetypes.h \
  /opt/local/include/glib-2.0/gobject/gobject-autocleanups.h \
  /opt/local/include/libpurple/connection.h \
  /opt/local/include/libpurple/plugin.h \
  /opt/local/include/glib-2.0/gmodule.h \
  /opt/local/include/libpurple/signals.h \
  /opt/local/include/libpurple/value.h \
  /opt/local/include/libpurple/pluginpref.h \
  /opt/local/include/libpurple/prefs.h \
  /opt/local/include/libpurple/status.h \
  /opt/local/include/libpurple/blist.h \
  /opt/local/include/libpurple/buddyicon.h \
  /opt/local/include/libpurple/imgstore.h \
  /opt/local/include/libpurple/prpl.h \
  /opt/local/include/libpurple/conversation.h \
  /opt/local/include/libpurple/log.h \
  /opt/local/include/libpurple/server.h \
  /opt/local/include/libpurple/ft.h /opt/local/include/libpurple/media.h \
  /opt/local/include/libpurple/media/candidate.h \
  /opt/local/include/libpurple/media/enum-types.h \
  /opt/local/include/libpurple/media/codec.h \
  /opt/local/include/libpurple/media/../util.h \
  /opt/local/include/libpurple/xmlnode.h \
  /opt/local/include/libpurple/notify.h \
  /opt/local/include/libpurple/roomlist.h \
  /opt/local/include/libpurple/whiteboard.h \
  /opt/local/include/libpurple/privacy.h purple-websocket.h

Please let me know what I should be looking into to fix this issue. Any changes that will fix the problem I would love to contribute back to this project.

Thanks in advance,
Zoltan.

ARM Support

I don't know how much detail or debug info I can provide, but there might be an issue with the plugin on ARM processors. I have a SheevaPlug with an ARM9 processor on which I compiled the slack-libpurple plugin. When I logged in using Finch, it connected successfully but constantly disconnected and reconnected, making it practically unusable. I then tried the same thing on my desktop running an AMD x86-64 processor and it worked perfectly.

Both computers were running Debian Stretch and were on the same Internet connection, so as many variables as possible were the same. I'd been running Finch on the SheevaPlug successfully for ages with other types of account, so it doesn't seem to be a Finch problem. My best guess is that slack-libpurple makes some assumptions or does something that causes it to bork on the wrong processors.

Please let me know if there's any way I can give you debug info, but right now I'm not sure if/where any of this stuff gets logged.

#general channel disappears from pidgin

I've seen this for the #general channel in our org, where is_general=true and (for some strange reason) is_member=false as seen in the debug snippet below.
I've got no problem accessing this channel if I use Slack in a browser, and I'm in the member list (also checked in the browser). According to doc, everyone is implicitly a member of the #general channel, so maybe is_general just trumps is_member?

Debug snippet:

(10:43:30) slack: api response: {"ok":true,"channel":{"id":"XXXXXXXX","name":"general","is_channel":true,"created":1516374023,"is_archived":false,"is_general":true,"unlinked":0,"creator":"XXXXXXXX","name_normalized":"general","is_read_only":true,"is_shared":false,"is_org_shared":false,"is_member":false,"is_private":false,"is_mpim":false,"members":

Doc:
The #general channel

Add releases

Would be great if there is periodical tags in the repository that are considered stable and available in the releases section.

Missing nicks/names in some messages

Messages sent by some Slack integration (like the Twitter stuff) sends messages correctly prefixed with the marker set in the account setup. But it lacks a "name".

Same for scrollback messages when they're replayed after reconnecting. There are no nick/names attached to those messages, just the core message.

Rate limited during paged requests

Thanks a bunch for your help!

It looks like the paging of requests was working, then I the next request got ratelimited.
Here is the debug output starting after it looped through getting paged user info successfully a few times.

Also, here is some info on ratelimits for slack api https://api.slack.com/docs/rate-limits

Thanks again

(23:39:30) slack: api call: https://slack.com/api/users.list?token=REMOVED&presence=false&limit=100&cursor=REMOVED
(23:39:30) util: requesting to fetch a URL
(23:39:30) dnsquery: Performing DNS lookup for slack.com
(23:39:30) dns: Successfully sent DNS request to child 22416
(23:39:30) dns: Got response for 'slack.com'
(23:39:30) dnsquery: IP resolved for slack.com
(23:39:30) proxy: Attempting connection to 13.33.224.10
(23:39:30) proxy: Connecting to slack.com:443 with no proxy
(23:39:30) proxy: Connection in progress
(23:39:30) proxy: Connecting to slack.com:443.
(23:39:30) proxy: Connected to slack.com:443.
(23:39:30) nss: SSL version 3.3 using 128-bit AES-GCM with 128-bit AEAD MAC
Server Auth: 2048-bit RSA, Key Exchange: 256-bit ECDHE, Compression: NULL
Cipher Suite Name: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(23:39:30) nss: subject=CN=slack.com,O="Slack Technologies, Inc.",L=San Francisco,ST=CA,C=US issuer=CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US
(23:39:30) nss: subject=CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US issuer=CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
(23:39:30) nss: subject=CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US issuer=CN=DigiCert Global Root CA,OU=www.digicert.com,O=DigiCert Inc,C=US
(23:39:30) certificate/x509/tls_cached: Starting verify for slack.com
(23:39:30) certificate/x509/tls_cached: Checking for cached cert...
(23:39:30) certificate/x509/tls_cached: ...Found cached cert
(23:39:30) nss/x509: Loading certificate from /home/justin/.purple/certificates/x509/tls_peers/slack.com
(23:39:30) certificate/x509/tls_cached: Peer cert matched cached
(23:39:30) nss/x509: Exporting certificate to /home/justin/.purple/certificates/x509/tls_peers/slack.com
(23:39:30) util: Writing file /home/justin/.purple/certificates/x509/tls_peers/slack.com
(23:39:30) nss: Trusting CN=slack.com,O="Slack Technologies, Inc.",L=San Francisco,ST=CA,C=US
(23:39:30) certificate: Successfully verified certificate for slack.com
(23:39:30) util: request constructed
(23:39:30) util: Response headers: 'HTTP/1.1 429 Too Many Requests
Content-Type: application/json; charset=utf-8
Content-Length: 34
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: private, no-cache, no-store, must-revalidate
Date: Tue, 20 Feb 2018 07:39:30 GMT
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Pragma: no-cache
Referrer-Policy: no-referrer
Retry-After: 7
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-OAuth-Scopes: read,client,identify,post,apps
X-Slack-Backend: h
X-Slack-Req-Id: 4f04a68f-4967-4fbc-92ca-468dec095bb4
X-XSS-Protection: 0
X-Cache: Error from cloudfront
Via: 1.1 6ed623541a1487ecd1bc71b49417e87c.cloudfront.net (CloudFront)
X-Amz-Cf-Id: 9bQmr5sX9mbCCiJ8ySBHhncjpDCa8UWzkte5bnC-4yl8kFyEatGHdA==

'
(23:39:30) util: parsed 34
(23:39:30) slack: api response: {"ok":false,"error":"ratelimited"}
(23:39:30) connection: Connection error on 0x5616fdb0e940 (reason: 0 description: ratelimited)
(23:39:30) account: Disconnecting account [email protected] (0x5616fb8499e0)
(23:39:30) connection: Disconnecting connection 0x5616fdb0e940
(23:39:30) websocket: removing input 0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.