| Age | Commit message (Collapse) | Author |
|
|
|
worker
|
|
|
|
thread-safely
fix
|
|
|
|
|
|
|
|
- wrap-defaults middleware should be placed outside of
wrap-json-response, otherwise Content-Type would be in correct
- remove unused static resources
|
|
|
|
|
|
|
|
- microformats type inferring is more accurate
- before: check if microformats h-entry has a type key (:like-of,
:in-reply-to...)
- now: check if such key's value equals to target URL, so it makes
sure this like/reply/repost/rsvp is sent to this target
- use ring.util.http-response to simplify response
- `?mftype=` filter no longer depends on microformats reduction
- retriever.clj is overall cleaner
|
|
|
|
|
|
also remove post-conditional assertion from edn-storage/use-store, since
tests have that covered
|
|
|
|
microformats type in original response body (not converted to string by
middleware) is a keyword, not a string. comparing a keyword to a string
is always false.
|
|
- print clear stack trace using timbre when capturing exceptions
- don't pass nil to url/normalize; if url/normalize gets a nil, instead
of NPE, it now returns an empty string
- capture exceptions in processor pipeline to keep it from dying
- http.downloader now checks response status instead of blindly
downloading anything
|
|
|
|
|
|
|
|
- fix page partitioning function not handling Long as a valid page
number
- better error handling when partitioning API page frames
this is a temporary fix. retriever needs refactoring.
|
|
|
|
|
|
|
|
- test loading and merging config
- test start-system and graceful shutdown
- test /endpoint and /api/send
- test receiver handling nil input
- test webserver startup and graceful shutdown
|
|
- config/load-config now accepts one arg, which is the config file path
- core uses WEEPINBELL_CONFIG env, fallback to "config.edn"
|
|
if source or target is nil, it would not return an error message but
will throw an uncaught exception
java.lang.NullPointerException: Cannot invoke "String.length()" because
"this.input" is null
this is fixed by nil-guarding normalize function call
|
|
- handler and core no longer care if storage is a valid vtable
- use-store assert storage is valid before it was returned
- AssertionError should be spotted while testing
|
|
SNAPSHOT because it's not fully tested yet.
|
|
add recursive find-type tests
|
|
|
|
- add weepinbell.http.client/with-retry macro
- retry only requests that returns :error with type TimeoutException
- retry is done asynchronously
- with-retry should return a Future
- retry verifier requesting source and target, 3 times with 5 seconds
backoff
|
|
|
|
frontend uses /api/send instead of configurable /endpoint
|
|
- initialize NPM, ignore node_modules
- initialize squint project, remove Leiningen and cljsbuild
- migrate ClojureScript code to Squint
- add NPM scripts and bb tasks for squint development
- update README.md
|
|
|
|
|
|
- add a bb task that uses PurgeCSS to treeshake pico.min.css
- add a bb task that cleanly builds Bellsprout
- use purged pico css in Bellsprout
- write docs about Bellsprout
|
|
|
|
|
|
- some namespaces tests require did not get renamed
- url/extract might throw AssertionError if input contains non-HTTP(S)
urls. it should not check schemes.
- verifier doesn't need to filter non-HTTP(S) urls since they will
return false anyway, and plus it makes localhost urls in tests fail
|
|
|
|
add docstrings
format code
|
|
- URISyntaxException was not caught in url/normalize, causing
normalization failure which leads to verification failure when there is
one invalid URL, even though valid URL exists
- skip non-HTTP(S) urls when verifying
|
|
utils: add url utilities for accurate comparison
- add url/normalize taht reconstructs URL, strips unnecessary
components, reorders query string and ensures determinism
- add url/url= that uses url/normalize
receiver: normalize URLs before checking and putting in queue
- use url= and normalize from utils.url
- rename verify-request to check-request to avoid confusion with
verifier.clj
verifier: check if source includes target URL more accurately
- implement url/extract with robinst/autolink-java, which extracts a
vector a URLs from string
- check if source includes target by
1. extracting all links from source body
2. normalizing all links before comparing with target link (with url=
func)
- refactor verify-headers -> match-content-types, with a higher order
function and clearer description
retriever, storage: use url= instead of = when comparing urls
|
|
- add start/stop/restart/watch functions in 'user namespace (dev
profile)
- add lein alias `dev` that starts file watcher and REPL
- every time source code is changed, `lein dev` reloads modified
namespaces and restarts system
- add `lein dev` to Contributors' Guide
|
|
- implement a functional rewrite of core.clj, no more `def`, no more
states. callable from an REPL
- handle SIGINT/SIGTERM and perform graceful shutdown
- print clear logs when starting up and shutting down
|
|
|
|
- /api/likes removed
- /api/replies removed
- /api/reposts removed
|