mirror of
https://github.com/usetrmnl/byos_laravel.git
synced 2026-03-14 20:33:40 +00:00
Compare commits
2 commits
b96a96155d
...
0aa38428f6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0aa38428f6 | ||
|
|
344286a5d3 |
4 changed files with 28 additions and 19 deletions
|
|
@ -192,8 +192,12 @@ class Plugin extends Model
|
||||||
$httpRequest = Http::withHeaders($headers);
|
$httpRequest = Http::withHeaders($headers);
|
||||||
|
|
||||||
if ($this->polling_verb === 'post' && $this->polling_body) {
|
if ($this->polling_verb === 'post' && $this->polling_body) {
|
||||||
|
$contentType = (array_key_exists('Content-Type', $headers))
|
||||||
|
? $headers['Content-Type']
|
||||||
|
: 'application/json';
|
||||||
|
|
||||||
$resolvedBody = $this->resolveLiquidVariables($this->polling_body);
|
$resolvedBody = $this->resolveLiquidVariables($this->polling_body);
|
||||||
$httpRequest = $httpRequest->withBody($resolvedBody);
|
$httpRequest = $httpRequest->withBody($resolvedBody, $contentType);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,6 @@
|
||||||
var data = trmnl.getSettings();
|
var data = trmnl.getSettings();
|
||||||
trmnl.ui.apiKeyInput.value = data.api_key || "";
|
trmnl.ui.apiKeyInput.value = data.api_key || "";
|
||||||
trmnl.ui.baseURLInput.value = data.base_url || "";
|
trmnl.ui.baseURLInput.value = data.base_url || "";
|
||||||
trmnl.ui.macAddressInput.value = data.mac_address || "";
|
|
||||||
trmnl.ui.displayModeSelect.value = data.display_mode || "";
|
trmnl.ui.displayModeSelect.value = data.display_mode || "";
|
||||||
|
|
||||||
trmnl.ui.setup.style.display = "flex";
|
trmnl.ui.setup.style.display = "flex";
|
||||||
|
|
@ -50,7 +49,6 @@
|
||||||
|
|
||||||
var apiKey = trmnl.ui.apiKeyInput.value;
|
var apiKey = trmnl.ui.apiKeyInput.value;
|
||||||
var baseURL = trmnl.ui.baseURLInput.value;
|
var baseURL = trmnl.ui.baseURLInput.value;
|
||||||
var macAddress = trmnl.ui.macAddressInput.value;
|
|
||||||
var displayMode = trmnl.ui.displayModeSelect.value;
|
var displayMode = trmnl.ui.displayModeSelect.value;
|
||||||
|
|
||||||
if (!apiKey) {
|
if (!apiKey) {
|
||||||
|
|
@ -60,7 +58,6 @@
|
||||||
trmnl.saveSettings({
|
trmnl.saveSettings({
|
||||||
api_key: apiKey,
|
api_key: apiKey,
|
||||||
base_url: baseURL,
|
base_url: baseURL,
|
||||||
mac_address: macAddress,
|
|
||||||
display_mode: displayMode
|
display_mode: displayMode
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -84,7 +81,6 @@
|
||||||
var apiKey = setup.api_key;
|
var apiKey = setup.api_key;
|
||||||
var displayMode = setup.display_mode;
|
var displayMode = setup.display_mode;
|
||||||
var baseURL = setup.base_url || "https://your-byos-trmnl.com";
|
var baseURL = setup.base_url || "https://your-byos-trmnl.com";
|
||||||
var macAddress = setup.mac_address || "00:00:00:00:00:01";
|
|
||||||
|
|
||||||
document.body.classList.remove("dark", "night")
|
document.body.classList.remove("dark", "night")
|
||||||
if (displayMode) {
|
if (displayMode) {
|
||||||
|
|
@ -92,8 +88,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
var headers = {
|
var headers = {
|
||||||
"Access-Token": apiKey,
|
"Access-Token": apiKey
|
||||||
"id": macAddress
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var url = baseURL + "/api/display";
|
var url = baseURL + "/api/display";
|
||||||
|
|
@ -210,10 +205,6 @@
|
||||||
hasOverrides = true;
|
hasOverrides = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key === "mac_address" && value) {
|
|
||||||
newSettings.mac_address = value;
|
|
||||||
hasOverrides = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasOverrides) {
|
if (hasOverrides) {
|
||||||
|
|
@ -274,7 +265,6 @@
|
||||||
// settings
|
// settings
|
||||||
trmnl.ui.apiKeyInput = document.getElementById("api_key");
|
trmnl.ui.apiKeyInput = document.getElementById("api_key");
|
||||||
trmnl.ui.baseURLInput = document.getElementById("base_url");
|
trmnl.ui.baseURLInput = document.getElementById("base_url");
|
||||||
trmnl.ui.macAddressInput = document.getElementById("mac_address");
|
|
||||||
trmnl.ui.displayModeSelect = document.getElementById("display_mode");
|
trmnl.ui.displayModeSelect = document.getElementById("display_mode");
|
||||||
trmnl.ui.setup = document.getElementById("setup");
|
trmnl.ui.setup = document.getElementById("setup");
|
||||||
|
|
||||||
|
|
@ -469,12 +459,6 @@
|
||||||
<img src="/mirror/assets/logo--brand.svg" alt="TRMNL Logo" />
|
<img src="/mirror/assets/logo--brand.svg" alt="TRMNL Logo" />
|
||||||
|
|
||||||
<form onsubmit="return trmnl.saveSetup(event)">
|
<form onsubmit="return trmnl.saveSetup(event)">
|
||||||
<fieldset>
|
|
||||||
<label for="mac_address">Device MAC Address</label>
|
|
||||||
<input name="mac_address" id="mac_address" type="text" placeholder="00:00:00:00:00:01" class="form-control"
|
|
||||||
required />
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<label for="api_key">Device API Key</label>
|
<label for="api_key">Device API Key</label>
|
||||||
<input name="api_key" id="api_key" type="text" placeholder="API Key" class="form-control" required />
|
<input name="api_key" id="api_key" type="text" placeholder="API Key" class="form-control" required />
|
||||||
|
|
|
||||||
|
|
@ -559,7 +559,7 @@ new class extends Component
|
||||||
|
|
||||||
<flux:modal name="mirror-url" class="md:w-96">
|
<flux:modal name="mirror-url" class="md:w-96">
|
||||||
@php
|
@php
|
||||||
$mirrorUrl = url('/mirror/index.html') . '?mac_address=' . urlencode($device->mac_address) . '&api_key=' . urlencode($device->api_key);
|
$mirrorUrl = url('/mirror/index.html') . '?api_key=' . urlencode($device->api_key);
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
<div class="space-y-6">
|
<div class="space-y-6">
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,27 @@ test('updateDataPayload sends POST request with body when polling_verb is post',
|
||||||
$request->body() === '{"query": "query { user { id name } }"}');
|
$request->body() === '{"query": "query { user { id name } }"}');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('updateDataPayload sends POST request with body with correct content type when not JSON content', function (): void {
|
||||||
|
Http::fake([
|
||||||
|
'https://example.com/api' => Http::response(['success' => true], 200),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$plugin = Plugin::factory()->create([
|
||||||
|
'data_strategy' => 'polling',
|
||||||
|
'polling_url' => 'https://example.com/api',
|
||||||
|
'polling_verb' => 'post',
|
||||||
|
'polling_body' => '<query><user id="123" name="John Doe"/></query>',
|
||||||
|
'polling_header' => 'Content-Type: text/xml'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$plugin->updateDataPayload();
|
||||||
|
|
||||||
|
Http::assertSent(fn ($request): bool => $request->url() === 'https://example.com/api' &&
|
||||||
|
$request->method() === 'POST' &&
|
||||||
|
$request->hasHeader('Content-Type', 'text/xml') &&
|
||||||
|
$request->body() === '<query><user id="123" name="John Doe"/></query>');
|
||||||
|
});
|
||||||
|
|
||||||
test('updateDataPayload handles multiple URLs with IDX_ prefixes', function (): void {
|
test('updateDataPayload handles multiple URLs with IDX_ prefixes', function (): void {
|
||||||
$plugin = Plugin::factory()->create([
|
$plugin = Plugin::factory()->create([
|
||||||
'data_strategy' => 'polling',
|
'data_strategy' => 'polling',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue