Ensures the TRMNL Recipe ID is mapped as an external ID in case we need to reference this information. This also ensures the extension's ID will be dynamically sequenced via PostgreSQL when the record is created instead of letting the TRMNL Recipe ID override this value.
Milestone: patch
Necessary to capture this information when creating a screen now that a screen can be associated with an extension. The key order was updated to list model, device, extension, and then template.
The screen updater spec was updated to reflect this change as well (for completeness).
Issue: 360
Milestone: minor
Necessary to prevent automatic bricking of devices due to unreliable firmware updates. I have a couple issues, via the Core and Firmware projects, to address this but the root cause stems from unreliable and inconsistent firmware version releases.
Milestone: minor
Ensures deeply nested values are properly rendered. This cropped up in ed2997a (Added extension exchange request builder) which also added support for HTTP POST bodies. The complication is with the bodies since they can be deeply nested while headers and the template are less so. This fix applies to both headers and bodies while the template can be ignored because it needs a URL per line (no nesting).
In hindsight, the `curler` spec altercation was the give away (which is also why it needed to be updated with this change too) because the value should be `10`, not `"10"`.
Reek has been updated to ignore duplicate method calls because it can't distinguish between different case branches. The too many statements is because of the blocks used in the case statement but, in this case, is acceptable.
Issue: 358
Milestone: patch
This is being done in order to remove the `URIBuilder` by using the request builder instead. This reduceds duplication across all objects while allowing all objects to use Liquid syntax for headers, URIs, and bodies.
Issue: 352
Milestone: patch
Naming of these objects continues to be challenging but this refactors the renderers as generators because they are producing HTML content for building images. The actual rendering of content to HTML is handled by the Liquid renderer.
Issue: 352
Milestone: patch
This is a partial revert of 06e1819 (Added extension importer remote extractor failure spec) now that the Core server is fixed to properly handle Cloudflare SSL certificates. Due to the Core issue, this was also causing issues with Recipe imports (which is also working now as well).
Milestone: patch
This tests the failure case but also adds a pending failure for the success path because there is a Cloudflare HTTP 525 status error when downloading content. This definitely isn't ideal but will allow the test suite to pass until issues with the Core server are addressed.
Milestone: patch
Necessary to capture the command used as command in the database and in the UI instead of previously using: `special_function`. The API request payload terminology doesn't change since the Firmware would need to be updated to account for that.
Issue: 345
Milestone: minor