FeedNormalizer is no longer maintained, and its Atom support has flaws
in that it throws away what RSS::Parser returns and falls back to using
SimpleRSS which is not capable of handling XML entities, resulting in
getting ususable URLs such as ones including `&`.
Feedjira is highly customizable as it implements parsers for various
feed formats on its own using sax-machine.
The `clean` option is reimplemented using the loofah gem.
`Feedjira::FeedUtilities#sanitize_entries!` is not used because it
tries to sanitize non-HTML properties too.
A new option `include_feed_info` is added, with which turned on feed
information is added to each event payload.
A new key `links` is added, which lists all `link` elements.
A new key `enclosure` is added.
* Improve Utils.normalize_uri
Globally replacing generally unsafe characters in a URL would not fix
invalid authorities and paths, so use Addressable::URI to normalize them
when necessary.
This should fix#1701.
* Remove an unused function
* Fix the test case to make sure an IPv6 address is supported
JSONEditor double escapes escape characters to properly display them in the UI, however when dry running Agents we
actually need to send the Event's characters as they were.
Before an event containing new lines like this `Line A\nLineB` would be send as `Line A\\nLineB` to the backend. By
replacing the double escaped slashes we ensure the event is handled as it would be when not dry running.
#1677
Especially when using Agent gems it happens that an Agent was deleted from the gem or the user removed a gem from the
configuration. Instead of failing with an Internal Server Error the user now is offered to delete all undefined agents.
`type.constantize` is needed to invoke the Rails auto_loader in development since not all Agent classes are loaded when
the application boots.
The old serializeObject function serialized checked checkboxes as an array which was not correct and with
strong_parameters enabled it triggered a `UnpermittedParameters` error.
In the AgentEditPage javascript we only need to initialize `select2` when then `#agent_type` field is a select
box (trying to call `select2` on normal text fields caused a javascript error in the feature specs)
* Ensure admin attribute can not be set at sign up and the agents user_id is not changeable
* Remove ACCESSIBLE_ATTRIBUTES from the User model
* Remove side effect on agent_params from AgentsController#build_agent
* Extract option prviders for non-standard Omniauth payloads
- should enable huginn_agent gem developers to add their own providers
- devs would reopen OmniauthCallbacksController and define their specific action, supplying their own option provider
* Creates a registry for option providers on the Service class
- enables huginn_agent gem developers to register their own omniauth option interpreters
* Cleans up changes to the global Service class after the spec
Add new `emit_error_events` option which is set to `false` for all new `TwitterActionAgent`s. This will ensure the Agent
is retried when the action failed by raising an exception.
For all existing `TwitterUserAgent`s the option is set to `true` to keep the previous behavior.
* EmailDigestAgent relies on received events, rather than storing them in memory
- Addressing a problem where 40,000+ events were stored in one agent's memory, and the agent never loaded from the database
* Cleans up references to memory["queue"]
- incorporates suggested style and safeguards
* Adds clarification on event inclusion in email
* Use `reorder` rather than stripping away all scoping
* Update dependencies to fix deprecation warnings
* Fix BoxcarAgent specs (found by rspec warning about expecting `raise_error` without specifying the exception)
* Added `api_key` option to UserLocationAgent
The `api_key` is used on the summary page of the UserLocationAgent
as well as the event detail page to display a location on a Google
Map which requires an API key. Closes#1612
* added link to Google API key documentation
* Start with a stripped copy of the data output agent.
* Run the data from the last event through a liquid template.
* Flatten the secret logic to allow for an easier switch to FormConfigurable.
* Switch to form configurable, and allow the content of the page to be configured.
* Allow the mime type to be changed.
* Cleanup.
* Write how this template works.
* Better default values.
* Cleanup.
* Refactor.
* Start testing.
* Test the validation.
* Test receive.
* Test the happy path through the receive web events.
* Test the authentication.
* This is actually a match.
* Refactor.
* Refactor.
* Refactor for better testing.
* Create a mode that lets the logic change. Start with a merge behavior.
* Refactor.
* Create a form configurable setting to change the mode.
* Document how the modes work.
* Wording change.
* Go with a singular secret.
* Fix typo.
* Fix the tests.
* Test cleanup.
* If not one of two types that receive events, ignore all received events.
* Set up these tests for the next set of changes.
* Isolate the method that gets the data for the liquid template.
* Look up past events to render through the liquid template.
* Implement a limit of 2 events.
* Extract a method.
* Hook the limit to options.
* Implement a limit of X events.
* Implement a date limit.
* Refactor the count limit.
* Limit by date with sql, not in-memory objects.
* This ordering is already built into the scope.
* Refactor the dates a bit.
* Put in a few checks around the date limits.
* Add the last X event options to the form and the documentation.
* Missed one bit of documentation.
* Add a view for a liquid output agent that makes it easy to retrieve the generated URL.
* This agent cannot accept events.
* Hardcode the possibilities instead of inspecting the integer.
* Do not be case sensitive on the date filter.
* Hardcode a limit of 5000, just in case no limit was provided.
* Better checks around the time period parsing.
* Test the hardcodes, and rename for consistency.
* Nevermind on that rename.
* Do not be case sensitive on this mode.
* Test that it works even when the casing on the mode is wrong.
* Here is more descriptive default content.
* Text change.
* The if is no longer necessary.
* Refactor.
* Move the limit down to 1000.
* Put a hard limit of 1000.
* Note the new event limit... limit.
* Validate for a valid event limit.
* Do not throw an error if someone types in a non-integer into this field.
* Text update.
* Typo.
* Add a link to the Liquid Templating engine.
* Add WIP support for HTTP headers
* Actually pass the header to check_this_url
* Fix an unmerged hunk
* Fix some syntax errors
* Fix an outdated variable name
* Comment on which sections do what
* Get rid of (another) unmerged hunk
* Show a form element for the header field
* Fix event emitter conditional
* Adjust tests for header logic
* Test for not returning a header
* Refactor payload generation
* Rename 'header' to 'headers'
* Add multiple header support
* Update HttpStatusAgent docs
* Fix (some) failing tests
* Fix remaining tests
* Add specs for HttpStatusAgent's header code
* Super tiny cleanups
* checking in work for glyph upload
* checking in icon selections
* added more icon options
* work on upload icon
* fix issue
* switched to options for select
* removed wrapper and removed commment
* add migration to support icon
* remove right floating
* rm params session add it to model
* rebuilt the menu
* rm extra div
* converted js to coffee
* quick change in indentation
* using the view helper
* submitting icons and loading into form
* added icon to both scenario export and import
* added icon to spec
* low level caching the icons
* tentative work in making a new coffee class
* renamed js page
* switched to cache in memory and worked on coffee class
* made pathsmatching compatible for all scenarios
* switched to rails root
* fixed all rubocop stylings
* fixed line is too long styling
* rm private method definition
* patch to avoid having no icon
* blank or nil?
* reordering the lines
* tentative work on enable disable all agents within a scenario
* more work with pr
* more work
* better names and save a line of code
* coffeescript to change modal text and hidden disabled value
* redoing coffeescript class to save some code
* initing the function
* updated coffeescript
* change text from specific modal, made names more specific
* updates disabled test and rubocop bug
* improved test and refactored method per rubocop warnings
* switched from 0 to false
* switched from 0 to false and 1 to true
* fixed null bug in postgresql database
* fixed ruby boolean bug
* moved instances into let lazy load and use proper agent fixture
* putting in a different fix
* using existing membership and agent and another version of test
* switch back to 2 not 3 after rm an agent in yml
* made test passed locally
* forgot to remove debuging pp
* small spacing bug
* trying to get rid of newline in file
* typo not agent but scenario
* minor changes to syntax and naming
* rm potential failure and changed update_all statement
* fixing new line issue
* removed unnecessary if else statement from method