Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/freerange/sauron

The All Seeing Eye
https://github.com/freerange/sauron

Update the import rake task to import all messages.

Note that running this will probably take significantly longer than for a single account, becaus...

160ba208cba4a42960cb5dd90640479ef6a21e2e authored almost 13 years ago
Add an acceptance test for multiple accounts.

I probably should've written this first, but I'm not going to beat myself up about that.

c2a9710028076e15cce711278bd4acb348928223 authored almost 13 years ago
Implement `Team`, a collection of credentials.

The simplest way to do this is to continue to use environment variables. At some point this migh...

88dc5bd0fb2d904200dd2e443813c029af212430 authored almost 13 years ago
Start implementing multiple accounts.

I'm trying to explore how to do this in simple steps. The simplest extension of what we currentl...

0ca37fd842df46fd00a6d01cfab057eb44fdd3f2 authored almost 13 years ago
Add a test to justify the implementation of MailWrapper::Subject.

As per the discussion on 5c92f3235c3d4a075b921d9699ad0fb17fb75a97, this
test attempts to explain...

3cf1e423485c7a4089afeefb1c322dbe6612dd67 authored almost 13 years ago
Re-enable the import.

It looks like it currently takes 10 minutes to run an import where no messages need to be import...

e60a7c15906543d2d5e7e35ee4e5cd5b29a53158 authored almost 13 years ago
Fix broken build.

Forgot to run tests after rebasing a branch and then merging it.

85cdb612b45289efec0114512866226e7864601d authored almost 13 years ago
Merge pull request #23 from freerange/nomenclature

Use consistent naming conventions for messages.

bd3f28f4252dcd34019a7b1243f7e3428d11de24 authored almost 13 years ago
Use consistent naming conventions for messages.

As per e9f3c2c8914b0fe9365a4914dc94767f8989948d.

6f8573b28ab827c018a628a00ffdc27af3829535 authored almost 13 years ago
Use the right IMAP command.

af25c206f287a53fa65759ef79a07f78d7b61708 authored almost 13 years ago
The IMAP server sometimes responds with nil for `BODY.PEEK[]`

Normally I would assume that no message with that UID exists, but queries using `BODY[HEADERS]` ...

f6586195e29cc5bea575773ba5cda9b2c41c0b16 authored almost 13 years ago
Make our walking skeleton test more robust.

The previous implementation of the 'they should be visible on the
messages page' step wasn't doi...

e0c0e652b2356921c69d8ea7f14e06d522e264aa authored almost 13 years ago
Add launchy to the Gemfile.

I find it useful to be able to save_and_open_page from Cucumber steps.

c92d8834530e480ed57ba5cdd0a985e725440168 authored almost 13 years ago
Merge pull request #21 from freerange/import-exception

Import exception feels a bit over-engineered

d80606be4e68fe0f4df3f70ad69ec603c75014f4 authored almost 13 years ago
Don't lose text parts that are nested within multipart parts.

Each message part can itself be multipart, and so the useful text part
of the email might be nes...

31ce465888a98bb0cba0e4344e4122ce3689986b authored almost 13 years ago
Display *all* plain/text body parts.

Inline attachments can result in multipart Mail objects that have three
parts: text, attachment,...

c75104ce7606ba03ca859a67652c22a61c94baf2 authored almost 13 years ago
Show a single body part from a multipart message.

We want it to be as easy as possible to view the message body of a given
message. To that end, w...

d1950bf2a72ac37255a0daa4d0f1982201cc5fc3 authored almost 13 years ago
Add the Raw message to messages#show.

This is useful for debugging.

a3f0cb581c024953f650249241819e0e60b4d686 authored almost 13 years ago
No need for a custom exception class.

Since (a) we have no code that needs to explicitly rescue the
`MessageImporter::ImportError` cla...

7021701ed328bf413afd2a27606b67ce9fd1e62b authored almost 13 years ago
We're not using the `e` local variable so no need to assign it.

4b3ebd98301340b2687e045a535c5a853b7ae5d6 authored almost 13 years ago
Don't display the headers on the messages#show page.

Showing *only* the body of the message is the simplest way to hide the
headers, for now.

We've ...

097e11c1cb57179413eaa11d0aa606e2d9c8f7a0 authored almost 13 years ago
I think it's better to derive custom exceptions from StandardError.

All exceptions derived from StandardError will be caught by a default
rescue block which I think...

b5a45d2d366f0c654fb95517bc71b1f455f69b2f authored almost 13 years ago
Handle another badly-encoded character in the subject.

We discovered that the three characters we are handling are all found in
the Windows-1252 charac...

5c92f3235c3d4a075b921d9699ad0fb17fb75a97 authored almost 13 years ago
The date display was crazy-wrong.

We were using the wrong 'day' format string, and the web interface was
displaying dates like `20...

3d8e286ca76170a248291e800985ef607f7b1559 authored almost 13 years ago
Ignore incorrectly encoded Next Line unicode characters.

We're replacing the invalid Next Line control character[1] with an empty
string because we belie...

1fb53a62b059df31e901df77c91b5e330b17a520 authored almost 13 years ago
Don't try to find ASCII-8BIT strings in a UTF-8 one.

Without this change, subjects that are Unicode will raise
`Encoding::CompatibilityError: incompa...

c334e97886d7c7e80e3e4c3b6bbb6ee48ca17f9d authored almost 13 years ago
Some emails have empty subject headers.

Since we're now processing the subject more, we ought to guard against
the subject being nil. In...

4b72a42fcdbeecca434e9550e33e16e1235619b9 authored almost 13 years ago
Temporarily remove cron task to import messages.

We're expecting the message import to take longer than a minute so
having cron automatically sta...

8794d5899264c8084d8e112221137b49a0c8b001 authored almost 13 years ago
Ensure the import handles badly encoded £ symbols.

We have to force_encode our \xA3 string in MailWrapper#subject to avoid
the `RegexpError: invali...

0aaaf3d2c92ed98bd5e6def3523831532ce7c26d authored almost 13 years ago
Introduce domain specific Mail wrapper.

We've moved the responsibility for dealing with missing From: headers to
our MailWrapper object ...

25b0c3bcf8576a332fe86e6e135143b4c2cdf165 authored almost 13 years ago
A more useful error message when importing a message fails.

If the import fails, it should be easier to track down the message which prompted the failure. W...

87e94323c87fdca4f1cc56892081a0d6f468b006 authored almost 13 years ago
Fix the failing import in production.

An email didn't have a From: header, but since Gmail handles this, we
ought to as well. Since we...

640d8208818a2e953ea84d6b048ed7a31d8fd466 authored almost 13 years ago
Merge pull request #20 from freerange/run-database-migrations-on-deployment

Run database migrations (if any) during deployment.

bb4eafb88e17fab35ec5157d09b66d48a3f54ae5 authored almost 13 years ago
Remove some knowledge of ActiveRecord from the MessageRepository.

The MessageRepository shouldn't have to know how to use ActiveRecord in
order to check for the e...

a455c5711357d7cc40abbe389047bae242ed8827 authored almost 13 years ago
Run database migrations (if any) during deployment.

Previously to get the application deployed Chris and I manually ran the initial schema migration...

1778e83a02fe2040d9345e3720abdeb0b39a5ce5 authored almost 13 years ago
Merge pull request https://github.com/freerange/sauron/pull/19

* freerange-expect-commands-stub-queries:
Expectation is too strict.

ffe304480c107323599e444dd02d17ac5bbd972d authored almost 13 years ago
Ensure the test passes irrespective of source file encoding.

This test was passing for me when run from the terminal but not when run
from TextMate. This is ...

4015952e234396cd914e52ca71f339b634c981a1 authored almost 13 years ago
Fix broken build.

Looks like this was the result of a mistake in a rebase or merge.

19cfc3c68bbdc5c99be4c2a671b2533ace6adaac authored almost 13 years ago
Merge pull request #17 from freerange/nomenclature

Avoid using the word message to represent different things.

5eb021efd65d5cd6f713bad3be2104daeb1ea740 authored almost 13 years ago
Merge pull request #18 from freerange/standardize-rake-tasks

Standardize rake tasks

6de7021539cc2318d3ebb52215fe190d14bc5e13 authored almost 13 years ago
Expectation is too strict.

- I think this test overly constrains the implementation. The
expectation requires `Record.all...

c3060f972b3517aebf2ef646f13f45db6bcb6e7d authored almost 13 years ago
Avoid using the word message to represent different things.

`raw_message` means a complete message represented as a String.
`message` means a MessageReposit...

e9f3c2c8914b0fe9365a4914dc94767f8989948d authored almost 13 years ago
Name file after namespace and not individual rake task.

This will make more sense if/when we add more tasks.

f6514782095f78a6be431e8d6cad78d02b227af5 authored almost 13 years ago
Adding a description to a rake task makes it easier for others to find.

96d77edcb8ed3cfc080002849d0eb7f8ff001202 authored almost 13 years ago
Merge pull request #15 from freerange/remove-unnecessary-directories

Remove unnecessary directories

0465165f279cb93bbf777dfe703c085a58bca8b6 authored almost 13 years ago
Limit the number of messages from the repository.

We want the web interface to render in a reasonable amount of time. We
could have used something...

16158ddf36b3c869c61a67e9a07e2d5a6f00443e authored almost 13 years ago
We don't have any integration tests at the moment.

2f973291a63b5214cf4c450b74e7e62bfe33d919 authored almost 13 years ago
We don't have any fixtures at the moment.

c443a326912afec8d35f4486f040fba173192bfe authored almost 13 years ago
Merge pull request #14 from freerange/import-all-a-single-users-messages

Import many messages from multiple accounts

Chris, James M and I reviewed Tom's changes and a...

324ec35b514a2ef96c7a1ead05356453064f382c authored almost 13 years ago
Fix minor test name style issue.

bffacfd9f484572d8450a67cc4e040d2677d9a66 authored almost 13 years ago
Travis CI needs the migrations to be run before tests will pass. It does not do this automatically.

f5ea0630b6414f677a2ce99b8e0678e124b8bc7d authored almost 13 years ago
Add the ability to show a full message.

In this case, full takes its most extreme meaning - the entire content of the original email. T...

27de04a6945c2ade1608e4c3c45401c0a70576d8 authored almost 13 years ago
Support importing messages from multiple accounts.

As the initial schema hasn't been merged into master, I didn't see any problem adding a column t...

fcd49954f48276f8a8822f23b4420f0b8def14ee authored almost 13 years ago
Use an ActiveRecord model to record each imported message.

To display a list of messages, there's no need to store them as files on disk. Only their subje...

50752c38d445efb2caef94bcf4f8b5b1c0c58285 authored almost 13 years ago
Introduced a CachedConnection, storing all cached values in an IMAP cache

6dacbae922776afe041fb63bf700a85e8bd3e3f6 authored almost 13 years ago
Return our own Message object from the repository, not a Mail object

609d06789ff71f9a1c8e3dd7fd9df9331a8b3817 authored almost 13 years ago
MessageRespository#includes? clashes with Class#includes?. Use #exists? instead.

7fc571e680ae56ca4bc98271ad2fb94e8b1c920f authored almost 13 years ago
Cucumber should use AccountMessageImporter to import an account's messages

0029d6b6e3e565323e090304df851d3b5d04f5ca authored almost 13 years ago
Only the MessageRepository itself should need to call #instance

3fff3e8b19cbd6dc23c6ab663beed951a5524dd0 authored almost 13 years ago
Let's add messages to the repository, not store them.

af73267cce92250e84bbd767bafdfccda7bb6753 authored almost 13 years ago
Change MessageRepository to use a FileBasedMessageStore by default

06443e1a71c60309b65bcbcebb13daa6d6baddf8 authored almost 13 years ago
Give the FileBasedMessageStore a default root path

b1499b4541beea377b43d380547a603fba9f2268 authored almost 13 years ago
GmailImapClient => GoogleMail::Mailbox

What was previously the client only provides access to a single mailbox, so can be called Mailbo...

de4866670111b3961d599aeeb0d62e382c6203bd authored almost 13 years ago
The GoogleMail::Mailbox#messages method might be useful one day, but is not currently used

05305ccbc4b6f93855e842284817c2b9b7d204a7 authored almost 13 years ago
Store messages in the repository against a given key, using the message UID

This will allow us to check whether the repository already contains the given key, allowing us i...

a9d3348e0b74a53aa62de2cf6da5045ae4900766 authored almost 13 years ago
Sometimes it's nice to fetch a single message given a UID

101af5116f5bc2d6cb01ddb717da336e90f1defd authored almost 13 years ago
Don't reimport messages already in the repository

e7e4be6b2ff9d3b05863306a03e88b1804ccf048 authored almost 13 years ago
Use Mail to bypass encoding issues

Attempting to import all the emails from [email protected] I encountered some nasty encod...

26cfc0934a91c12c08a28ab047542e31dfe1f54b authored almost 13 years ago
Move MD5 key generation right down to the message store.

If we're storing messages in the repository with a given id, key generation is redundant as far ...

49f79ad1956e29fc6f1b010448cf381bdae91edb authored almost 13 years ago
Select the INBOX when initialising the Gmail client

As we never operate on any other mailboxes, there's no need to select a mailbox before each oper...

ca81eda187bd5cd98da7e238c7b0ace6d23a7ee4 authored almost 13 years ago
Split searching for message uids from loading the messages.

This will allow more flexible message loading strategies, such as loading messages in batches or...

2a44d4c3984227a32ca2f119a41b970420be5ce9 authored almost 13 years ago
Import ALL the email from a user's account, not just their inbox messages

I've been testing against my tom.ward account and sauron-test, neither of which have enough mess...

8c9bf02c591ef5e4d46d3a204a920c49fba3df39 authored almost 13 years ago
Use Base64 encoding when storing messages to avoid encoding issues.

Passing messages through Mail.new(message).to_s worked for about 1,100 of my messages, but not a...

28c73579243cb491e03a1926b6a0edf2337bad1a authored almost 13 years ago
Merge pull request #12 from freerange/wip-introduce-a-message-repository

Introduce a message repository

08ea10964e376c35af805080dbf0241ee31700cc authored almost 13 years ago
Add `whenever` tasks to Capfile.

We've taken these `whenever` tasks from Harmonia, which in turn took them (albeit in a stripped ...

9f3ea3d275808b9d929b3616d1cbad31fc04e4d0 authored almost 13 years ago
Fix the build!

Disabling the asset pipeline broke three of our controller tests. It
would appear that the asset...

bcc61d095c4372eb968c50df5fd17bfadbf1ab75 authored almost 13 years ago
Disable Rails' asset pipeline.

We want to run the app in the production environment on linode but the
asset pipeline is causing...

dd3a56af7c64a19db0d4ddb39baf1b342a893a07 authored almost 13 years ago
Fix the build!

Disabling the asset pipeline broke three of our controller tests. It
would appear that the asset...

748e1001a3e22edbd974c1c5fbb4a58847adc9d2 authored almost 13 years ago
Disable Rails' asset pipeline.

We want to run the app in the production environment on linode but the
asset pipeline is causing...

11ea529bd17c4c8180e81367737e07c1be35ac2c authored almost 13 years ago
Updated recap to try and prevent \r characters appearing in .env files

65cb9433da72fbc822daf6163c5809d0d7e6dd2f authored almost 13 years ago
Add 'whenever' to the Gemfile.

We're planning to use the whenever gem to generate a crontab that
schedules the execution of our...

4b2af9a7506c10d09d22876f80fc90d47bb658ca authored almost 13 years ago
Remove .powrc from .gitignore.

It should be up to an individual developer to ignore .powrc, as @tomafro
points out[1]

[1]
http...

266d21ddf1e4654344e88caab7b4d086aafed4cb authored almost 13 years ago
Introduce messages:import rake task.

We've questioned whether loading the Rails environment is sensible,
given the overhead of doing ...

b73aec8bb285d00544277ce076ecc4eb80f62cbf authored almost 13 years ago
Introduce AccountMessageImporter.

As mentioned in 623566, we don't think that the MessageImporter should
be responsible for instan...

439b544e59baf8948eca06bf3d1c018e90efba8c authored almost 13 years ago
Introduce a method to import messages given credentials.

We need to be able to import messages from an account via a high-level
method that's suitable fo...

623566548a543023fdfa0a471f96aac0fbca4b16 authored almost 13 years ago
Remove GmailAccount.

Since we've removed the downloading of emails from the request cycle
this object is no longer re...

244e28edf356365cdc105662bfa049c462e62197 authored almost 13 years ago
Re-animate the walking skeleton.

Introducing a singletonish MessageRespository makes me feel a little uneasy but it was the simpl...

f41bf2c1804e9c333be4492c0e69d69a25b90764 authored almost 13 years ago
Add a very basic FileBasedMessageStore

18f0199c72095eabfd28ed28418ca9fa75c8e182 authored almost 13 years ago
MessageImporter deserves its own file

b9b93f611fb77f97a643a4c8509792511198ef33 authored almost 13 years ago
WIP towards introduction of a message repository

Using the driver of disconnecting HTTP requests from IMAP, Chris, James and I have been working ...

9310ce09860deb4e4eca5a8749b2f5e3b8c17cdf authored almost 13 years ago
Introduce Guard to watch for changes and automatically run tests

For now just using the most basic guard configuration, so some files may not yet trigger the cor...

b489084795ff217ba688b138920ad2442930b859 authored almost 13 years ago
Mail should be required in GmailAccount where it is a dependency

d4a673cdd4e94c8325699ae6bd941da08825c350 authored almost 13 years ago
It's not just a Connection, it's an AuthenticatedConnection!

Also cleaned up the delegation a tiny bit.

38d4b1be49c6e23acb76f0057615a72f3e877611 authored almost 13 years ago
There's no need to name an IMAP parameter

f43c2f51ce403255cd81a488873ba917f713d7e1 authored almost 13 years ago
The controller doesn't need to know about the email address or password.

Also 'cleaned up' some of the GmailAccount code, building the connection before instantiating, r...

de0f08a3ee921155c8a732e3650f4f338c29aa96 authored almost 13 years ago
It's easier to change things when lib is on the load path

4a747a34dd933a031f54445c8164721e7313be51 authored almost 13 years ago
Fix the build on Travis.

These environment variables aren't set on Travis CI so the build breaks.

ae01354489066230ec866d7296f01dc0deb3455c authored almost 13 years ago
Remove errant carriage-return characters.

Looks like recap might be causing these to appear at the end of ENV variables.

4f4456974ab95c532106486b015e9b32e9621458 authored almost 13 years ago
Protect messages from prying eyes.

Before we can use our actual message data, we need some way of restricting viewing messages so p...

5eafd731a948beb53c019d1a7749556311758c9c authored almost 13 years ago
Use read-only access to IMAP mailboxes until otherwise required.

EXAMINE selects a mailbox for read-only access, giving us some protection against accidentally c...

92d4fc1a28ac6c6ee30d46b217f4d4b69a8446bc authored almost 13 years ago