Commit Graph

47 Commits

Author SHA1 Message Date
Anna Schumaker 5d4cab62e5 Display links as footnotes
Rather than including them in the text that gets wrapped.  This prevents
links from getting split, potentially breaking them.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2016-11-16 14:18:18 -05:00
Anna Schumaker c8c40f1682 Parse channel tags to make them easier to read
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2016-11-16 10:35:23 -05:00
Anna Schumaker 2779e13692 Add channel url to slack email
This gives us a link directly to the channel to read messages there.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-11-16 09:39:46 -05:00
Anna Schumaker adbfd6d2d6 Filter out empty messages
It's not enough to check for None, we also need to check that there is
actually text in the message.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2016-11-16 09:14:31 -05:00
Anna Schumaker 3c264554d8 Message handling fixes
Don't create a message object for posts without text.  Additionally, use
the accepted character replacements for unicode characters.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-09-04 14:19:13 -04:00
Anna Schumaker 673bac86bc slackpost: Decode reply as quoted-printable text
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-16 11:42:16 -04:00
Anna Schumaker 14e44c1734 Post to thread object, not channel object.
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-16 11:22:52 -04:00
Anna Schumaker c5e15161bd slackpost: Updates for current email formatting
- Look for thread= lines
- Support posting to both channels and private groups

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-16 11:06:03 -04:00
Anna Schumaker 19496e737c slackmail: Support emailing channels and private groups
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-09 10:38:02 -04:00
Anna Schumaker ca89d98e3a Add support for reading messages through the Thread class
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-09 10:22:58 -04:00
Anna Schumaker 6859f8c3ec Add Group class
And pull more things out of the Channel class and into the Thread class.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-09 09:57:25 -04:00
Anna Schumaker fcd2789c29 Create a new Thread class
I want to create a generic class to represent (public) channels and
(private) groups.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-09 09:34:33 -04:00
Anna Schumaker c10fff756c Replace <@UID> strings with the target user's username
This makes it easier to know who is being spoken to.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-08 19:03:49 -04:00
Anna Schumaker 8d38fffaf4 Fixes for merging messages
I noticed that a merged message reversed all the lines.  This is due to
how slack returns messages in the history() call, so let's parse replies
in two steps to keep everything chronological.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-06-08 16:55:21 -04:00
Anna Schumaker e80b200a31 slackmail: Remove newline at beginning of message
It's not really needed for anything, and may make parsing more
difficult.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-29 08:46:29 -04:00
Anna Schumaker 1bc6d1064f Put channel id on same line as "Reply above this line"
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-28 14:05:43 -04:00
Anna Schumaker 65e5403165 Merge consecutive messages with the same author
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-28 13:51:23 -04:00
Anna Schumaker 7b78e9d785 Move Message class into the chat namespace
It makes more sense to put it here, since it's related to chatting.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-28 13:24:36 -04:00
Anna Schumaker dcd8650e1a Message display improvements
- Put time and poster information on one line
- Wrap message text to 70 characters

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-28 13:21:38 -04:00
Anna Schumaker 193107574f Simplify hour:minute:second display
Now it's a bit easier to read!

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-28 12:31:29 -04:00
Anna Schumaker d905ebd375 Remove X-Slack-Channel from email headers
Turns out, gmail doesn't preserve this when replying to messages.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-28 12:25:30 -04:00
Anna Schumaker 5fe26ca0e5 Send email with X-Slack-Header to specify channel
This is slightly more accurate than using channel names to lookup where
to post.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 16:37:37 -04:00
Anna Schumaker d43f0e52d8 Update reply handler
What we really want to do is look for the first line beginning with ">"
and discard everything after it (and the line immediately before it,
just to be safe)

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 16:18:50 -04:00
Anna Schumaker 29815fc28b slackpost: Properly strip out reply markers
Remove all lines beginning with ">", and the line immediately before
them.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 11:11:35 -04:00
Anna Schumaker d07bf33f44 Use the python url parser for encoding arguments
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 10:36:23 -04:00
Anna Schumaker e0d1c85259 Prefer real names for users
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 09:15:22 -04:00
Anna Schumaker b30600b066 Email should show up as the team name
And not as "SlackMail"

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 09:13:00 -04:00
Anna Schumaker ea0eeeb46c Send email to the authenticated user's email address
This is better than hardcoding in my address.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-27 09:12:05 -04:00
Anna Schumaker bbe14fa88d slack: change directory before running
To help find the tokens file, mostly

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 21:32:00 -04:00
Anna Schumaker 6110e5ff3b slackpost.py: Write a script for posting to slack
The idea is that postfix will pipe an email message into this script,
which will then post the reply to slack.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 21:21:46 -04:00
Anna Schumaker d9a6858be8 Mark channels read when updated
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 21:21:45 -04:00
Anna Schumaker 253e0374f0 Mark channels read when updated
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 17:04:56 -04:00
Anna Schumaker b5d715096e Prepare text as an email message
Right now it's hardcoded to send to me.  This should be made
configurable eventually ...

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 16:52:55 -04:00
Anna Schumaker 80706b18c9 Make a list of strings to hold the text
This will be the body of the email message.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 16:42:40 -04:00
Anna Schumaker 776ad5b1fa slack: Add users.info support and a User class
For finding information about users.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 16:36:46 -04:00
Anna Schumaker 48baf65574 slack: Add the channels.history() function and a Message class
For finding unread messages.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 16:02:36 -04:00
Anna Schumaker 4eb177cd8f slack: Find extra channel information if needed
This is mostly to find unread count and timestamp

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 15:44:52 -04:00
Anna Schumaker 23ac359ad7 slack: Add channels module and Channel class
This patch begins a new main loop using the new Channel class.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 15:21:13 -04:00
Anna Schumaker 02b610e671 slack: Add a wrapper for the auth API call
This module sets up the token to be used for most API calls.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 15:15:36 -04:00
Anna Schumaker f5af3107d5 slack: Begin API wrapper directory
I think this will make things easier to work with overall

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 14:40:01 -04:00
Anna Schumaker 0892ec28e7 Use team name instead of [SlackMail] for temporary file paths
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 14:00:36 -04:00
Anna Schumaker fdc2c9970e Write unread messages to a temporary file
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 12:41:34 -04:00
Anna Schumaker 11a777cb76 Add timestamps to message output
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 12:26:39 -04:00
Anna Schumaker a6ccb45f83 Fetch all unread messages from slack, along with user names
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 11:39:26 -04:00
Anna Schumaker 9065d67acb Find channel info and print unread messages
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 11:14:18 -04:00
Anna Schumaker 883504da38 Decode reply from slack into a python dictionary structure
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 09:44:55 -04:00
Anna Schumaker 13050a1486 Initial commit
Call the api.test and auth.test methods using a token from the file
"token" in the current directory.

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
2015-05-26 09:25:29 -04:00