Commit Graph

387 Commits

Author SHA1 Message Date
Paul Melnikow
64e9d13e76 Disallow unused variables and turn on a few recommended rules 2017-04-12 23:55:13 +02:00
Paul Melnikow
de18dce94a Add more test helpers
While working on some tests, I was having a tricky problem in a test suite. Eventually I tracked it down to an interaction between tests. I suspected the test library, but once I tried to make an isolated test case, I realized the test library was working fine. It turns out it was the server’s request cache. The fix is to clear the cache between tests.

Not needed for this PR, though I’m adding it to this branch because it conflicts with this change.
2017-04-12 23:13:16 +02:00
Paul Melnikow
5a45003bc3 Test server logic for img2svg error, and run the server in-process
Running the server in process is necessary for the mock to work. This is an approach I’ve taken in the past. I experimented with this setup quite a bit when I was playing around with a test suite, and it seemed to work well enough. Setting `process.argv` is a admitedly a bit gross, though a cleaner approach would require more involved changes to `server.js`.
2017-04-12 23:13:16 +02:00
Paul Melnikow
8b77d16a72 Always call the callback + reliable erroring
Fixes #914
2017-04-12 23:13:16 +02:00
Paul Melnikow
0760d17d82 Return data from svg2img via callback
Given the chunks coming from imagemagick are getting stored memory and
then tucked into a cache, this function could as easily return a buffer
via callback. Streaming is just making it more complex. (And trickier to
test!)
2017-04-12 23:13:16 +02:00
Paul Melnikow
ad1e419d42 Add tests for svgToImg 2017-04-12 23:13:16 +02:00
Thaddee Tyl
2d71e844a2 Store raster badges in the LRU cache
In ef1a5159, the switch to using imagemagick made a faulty use of the library by
listening for an 'end' event that is never raised. As a result, the cache was
never populated.

In d985f81f, a fix that takes care of the fact that the previously mentioned
dead code relies on a non-existent variable caused it to kill the server when a
raster badge is requested twice, as what it stored in the cache was the pipe
transmitting chunks, not the chunks themselves, and the pipe (a Socket object)
cannot be subsequently sent through a pipe. The following error occured instead:

    events.js:163
          throw er; // Unhandled 'error' event
          ^

    TypeError: Invalid non-string/buffer chunk
        at chunkInvalid (_stream_readable.js:395:10)
        at readableAddChunk (_stream_readable.js:150:12)
        at DataStream.Readable.push (_stream_readable.js:136:10)
        at DataStream._read (/home/m/shields/lib/svg-to-img.js:45:21)
        at DataStream.Readable.read (_stream_readable.js:350:10)
        at resume_ (_stream_readable.js:739:12)
        at _combinedTickCallback (internal/process/next_tick.js:80:11)
        at process._tickDomainCallback (internal/process/next_tick.js:128:9)
2017-04-12 23:13:16 +02:00
Thaddee Tyl
a0e6a6aeba Use new Buffer() instead of Buffer()
The following warning is emitted by Node.js:

> DeprecationWarning: Using Buffer without `new` will soon stop working. Use `new
> Buffer()`, or preferably `Buffer.from()`, `Buffer.allocUnsafe()` or
> `Buffer.alloc()` instead.

This patch removes this warning.
2017-03-29 18:28:48 -04:00
Paul Melnikow
d985f81f8e Disallow undefined variables 2017-03-29 20:09:30 +02:00
Frode Knutsen
2133ff9d1f fix default value for githubUserTokens 2017-03-27 16:56:58 -04:00
Thaddee Tyl
5dd58142cb Fix LRU cache index stalling
The old LRU implementation stored a list's indices to reference items in that
list, but deletions from the list made indices point to the wrong slot.

Functionally, it meant that deleted slots were not guaranteed to be the oldest
slot.

Using a linked list fixes that.
2017-03-26 23:00:31 +02:00
Thaddee Tyl
11b6e06f2f Organize local modules in lib 2017-03-26 22:57:55 +02:00
Paul Melnikow
47a8bf51dc First pass for linting on PRs 2017-03-20 16:54:27 -04:00
Thaddee Tyl
076cb14b3b Perform constant equal comparison for shared Shields secret
This should prevent timing attacks.
2017-02-25 18:20:07 +01:00
Thaddee Tyl
7c8b0e3d32 Contain all private files in private/ 2017-02-05 16:24:35 +01:00
Thaddee Tyl
0684c25b94 Remove todo for GitHub auth documentation
It was accidentally done by 56746d4a38.
2016-07-02 12:14:34 +02:00
Thaddee Tyl
71bb291f40 Remove verbose logs for GitHub auth 2016-07-02 10:39:57 +02:00
Thaddee Tyl
a7cfac6e93 GitHub auth: use token with the most remaining requests
Part of #529.
2016-06-27 20:07:15 +02:00
Thaddee Tyl
bfc6e7d863 GitHub auth: use up to 3/4 of the user's rate limit 2016-06-27 19:38:01 +02:00
Thaddee Tyl
56746d4a38 GitHub auth: rely on cache if no tokens remain 2016-06-27 19:37:19 +02:00
Thaddee Tyl
12b0ded4a3 GitHub auth: use UTC epoch seconds instead of milliseconds 2016-06-26 18:41:32 +02:00
Thaddee Tyl
63e25b29eb GitHub auth: no longer rely on buggy rate limit cache 2016-06-26 18:30:27 +02:00
Thaddee Tyl
a3ba53a0d8 GitHub auth: user token selection supports remaining requests 2016-06-26 18:01:48 +02:00
Thaddee Tyl
2b849b2b7f GitHub auth: log token requests 2016-06-26 17:21:00 +02:00
Thaddee Tyl
014753a736 GitHub auth: better messages 2016-06-26 16:45:44 +02:00
Thaddee Tyl
14d436084b GitHub auth: log token rate limits and unauthorization 2016-06-25 20:32:30 +02:00
Thaddee Tyl
997e6a6f43 GitHub auth: maintain rate limit reset information, track token with highest remaining requests 2016-06-23 19:28:56 +02:00
Thaddee Tyl
fe279e4a75 GitHub auth: removal of unauthorized user tokens 2016-06-22 10:12:07 +02:00
Thaddee Tyl
a54a247f16 GitHub auth: only use user tokens if over rate limit 2016-06-21 09:26:52 +02:00
Thaddee Tyl
58cbb18c1d GitHub auth: query parameter, don't shadow request() 2016-06-20 22:30:51 +02:00
Thaddee Tyl
3564e4474b GitHub auth: set up lowest available rate limit 2016-06-19 23:30:21 +02:00
Thaddee Tyl
b3e8ab9556 Custom GitHub requests 2016-06-18 23:28:43 +02:00
Thaddee Tyl
ec2a35266b Hide GitHub user tokens 2016-06-15 23:57:59 +02:00
Thaddee Tyl
fc223c9f86 Put GitHub user token synchronization in the background
Issue #529.
2016-06-01 23:55:17 +02:00
Thaddee Tyl
c403e367f7 Synchronize saved GitHub user tokens
Issue #529.

Having a server down breaks the process currently. That will be addressed in a
later commit.
2016-06-01 00:15:45 +02:00
Thaddee Tyl
419483f24e Transmit and save GitHub user tokens
Issue #529.
2016-05-28 22:33:34 +02:00
Thaddee Tyl
ccaacfc408 Support GitHub OAuth user authentication
Issue #529.
2016-05-21 21:34:35 +02:00