* Update accept header for browser compatibility
Allows browser to display content as xml instead of plain text
Ref: https://stackoverflow.com/a/7001617/4397001
* Updated specs
* `delayed_job` 4.1.4 added a syntax fix for ruby 2.5
* `devise` 4.4.0` added a syntax fix for ruby 2.5
* `rufus-scheduler` 3.3.3 fixed Fixnum deprecation warnings
* `erector` was forked to fix a Fixnum deprecation warning
Fix exception in MQTT::FakeServer, when stopping the server kill the
thread before closing the socket to avoid calling `@socket.accept` on a
closed socket.
The Agent did not use `interpolate_with` in it's `receive` method,
which lead to `interpolated[...]` calls in `send_message` and
`make_call` always returning empty strings.
The new `interpolate_with_each` helper iterates over an array of
objects and yields each object in a `interpolated_with(object)`
context.
Fixes#2186
Setting `array` to `true` for an extractor allows the extraction of list
elements into an array or when working with websites that have varying
amount of elements matching a specific selector:
Response A:
```html
<h1>header</h1>
<div id="content">
<div></div>
<div></div>
<div class="bogus"></div>
<div>
```
Response B:
```html
<h1>header</h1>
<div id="content">
<div></div>
<div></div>
<div class="bogus"></div>
<div></div>
<div>
```
The goal is to extract the header and all `div`s inside `#content` that
are not `.bogus` into one Event. Having the `array` option makes this
possible with `css: '#content div:not(.bogus) ', array: true` which
would otherwise fail with an uneven amount of matches exception.
Currently the work around would be the extract the header and `#content`
in one WebsiteAgent and extract the `div`s in a second Agent. This does
not work in my use case because the HTML inside `#content` is
malformatted and leads to Nokogiri paring errors.
Makes the Agent easier to use and to debug. It now verifies the API
token and auto completes the `chat_id`.
Log entries are only created on failure to avoid cluttering the Agent
log.
#2135
tl;dr: By using `e.currentTarget` instead of `e.target` we ensure to always
pass the `button` element to `Utils.handleDryRunButton`.
`target` refers to the actual element the user clicked on, we then
passed the glyphicon span to `Utils.handleDryRunButton` which requested
`window.location` via ajax because `$(button).data('action-url')` returned
`undefined`.
Evaluating the whole page then triggered
`Error: rails-ujs has already been loaded!`, as a result the user can not
interact with anything that requires `rails-ujs`, `jquery` or bootstrap
javascript.
The `select_agent_type` helper is waiting for the options editor to be
initialized, which will never happen for Agents that are
FormConfigurable. The GrowlAgent was recently changed to
FormConfigurable which mean the spec should always have failed.
I have no idea how it passes on CI in some cases but this should fix the
'random' failures.
The to_xml method encodes `{ "category": ["a", "b"] }` as follows:
```xml
<item>
<category>
<category>a</category>
<category>b</category>
</category>
</item>
```
Instead of this:
```xml
<item>
<category>a</category>
<category>b</category>
</item>
```
Even if `category` is a singular noun. This feature prevents
DataOutputAgent from emitting multiple `<category>` elements (or
`<enclosure>`, etc.) properly, so I've added a tweak to fix the
resulted XML document.
I know the code in the current form is far from optimal, so I think
we'll have to revisit here soon or later...
The Agent expects the data in its memory groups to be castable to a
float. By attempting the type cast when receiving events we prevent the
memory from being corrupted with invalid data which lead exceptions
while trying to access it.
#2101