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
* Clarify path for a simple body_text event.
It's not really clear with regard to a normal agent that this is simply the name of the field.
* updated text
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
When `cache_response` is set to `false` for completable fields the returned options will not be
cached on the client side. The default is `true`.
Clearing the cache is needed when the completable response depends on a different option of the Agent.
Usage Example:
```
form_configurable :models, roles: :completable, cache_response: false
```
* Disable the completion callback when `select2` is opened programmatically to avoid an infinite loop
* Moved the completion ajax call from `select2-open` to `select2-opening` to clear the cached results before
`completableDefaultOptions` is called (shows the "Loading ..." message instead of the previous results)
* 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 language parameter to the weather agent
* Add text forecast for Wunderground data provider
Wunderground API returns forecast for the next few days. Returned JSON response has two types of data under the "forecast" key:
- "txt_forecast": pre-formatted text representation
- "simpleforecast": raw data representation
The "period" key contains which day the node belongs to.
Currently only "simpleforecast" is available to users of the Weather agent.
This commit appends the "txt_forecast" representation to the current data set.
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
* 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