mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-10 15:11:59 +01:00
Add useragent parameter (#17455)
Signed-off-by: Leo Siepel <leosiepel@gmail.com> Signed-off-by: Ciprian Pascu <contact@ciprianpascu.ro>
This commit is contained in:
parent
76f2a0bb48
commit
773a929d1a
@ -26,6 +26,7 @@ Each `calendar` thing requires the following configuration parameters:
|
||||
| `password` | The password for pulling the calendar. If set, the binding pulls the calendar using basic auth. Only valid in combination with `username`. | optional |
|
||||
| `maxSize` | The maximum size of the iCal-file in Mebibytes. | mandatory (default available) |
|
||||
| `authorizationCode` | The authorization code to permit the execution of embedded command tags. If set, the binding checks that the authorization code in the command tag matches before executing any commands. | optional |
|
||||
| `userAgent` | Some providers require a specific user agent header. If left empty, the default Jetty header is used. | optional |
|
||||
|
||||
### Configuration for `eventfilter`
|
||||
|
||||
|
@ -38,4 +38,6 @@ public class ICalendarConfiguration {
|
||||
public String url;
|
||||
@Nullable
|
||||
public String username;
|
||||
@Nullable
|
||||
public String userAgent;
|
||||
}
|
||||
|
@ -153,7 +153,8 @@ public class ICalendarHandler extends BaseBridgeHandler implements CalendarUpdat
|
||||
final int maxSize = maxSizeBD.intValue();
|
||||
try {
|
||||
regularPull = new PullJob(httpClient, new URI(currentConfiguration.url), currentConfiguration.username,
|
||||
currentConfiguration.password, calendarFile, maxSize * 1048576, this);
|
||||
currentConfiguration.password, calendarFile, maxSize * 1048576, this,
|
||||
currentConfiguration.userAgent);
|
||||
} catch (URISyntaxException e) {
|
||||
throw new ConfigBrokenException(String.format(
|
||||
"The URI '%s' for downloading the calendar contains syntax errors.", currentConfiguration.url));
|
||||
|
@ -61,6 +61,7 @@ class PullJob implements Runnable {
|
||||
private final Logger logger = LoggerFactory.getLogger(PullJob.class);
|
||||
private final int maxSize;
|
||||
private final URI sourceURI;
|
||||
private @Nullable final String userAgent;
|
||||
|
||||
/**
|
||||
* Constructor of PullJob for creating a single pull of a calendar.
|
||||
@ -74,7 +75,7 @@ class PullJob implements Runnable {
|
||||
* @param listener The listener that should be fired when update succeed.
|
||||
*/
|
||||
public PullJob(HttpClient httpClient, URI sourceURI, @Nullable String username, @Nullable String password,
|
||||
File destination, int maxSize, CalendarUpdateListener listener) {
|
||||
File destination, int maxSize, CalendarUpdateListener listener, @Nullable String userAgent) {
|
||||
this.httpClient = httpClient;
|
||||
this.sourceURI = sourceURI;
|
||||
if (username != null && password != null) {
|
||||
@ -85,12 +86,16 @@ class PullJob implements Runnable {
|
||||
this.destination = destination;
|
||||
this.listener = listener;
|
||||
this.maxSize = maxSize;
|
||||
this.userAgent = userAgent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
final Request request = httpClient.newRequest(sourceURI).followRedirects(true).method(HttpMethod.GET)
|
||||
.timeout(HTTP_TIMEOUT_SECS, TimeUnit.SECONDS);
|
||||
if (userAgent != null && !userAgent.isBlank()) {
|
||||
request.agent(userAgent);
|
||||
}
|
||||
final Authentication.Result currentAuthentication = authentication;
|
||||
if (currentAuthentication != null) {
|
||||
currentAuthentication.apply(request);
|
||||
|
@ -24,6 +24,8 @@ thing-type.config.icalendar.calendar.refreshTime.label = Refresh Time
|
||||
thing-type.config.icalendar.calendar.refreshTime.description = Frequency to scan for changes in minutes
|
||||
thing-type.config.icalendar.calendar.url.label = URL
|
||||
thing-type.config.icalendar.calendar.url.description = URL for downloading iCalendar events
|
||||
thing-type.config.icalendar.calendar.userAgent.label = User Agent
|
||||
thing-type.config.icalendar.calendar.userAgent.description = Some providers require a specific user agent header. If left empty, the default Jetty header is used.
|
||||
thing-type.config.icalendar.calendar.username.label = User Name
|
||||
thing-type.config.icalendar.calendar.username.description = User name for fetching the calendar (usable in combination with password in HTTP basic auth)
|
||||
thing-type.config.icalendar.eventfilter.datetimeEnd.label = End
|
||||
|
@ -54,6 +54,11 @@
|
||||
<label>Command Authorization Code</label>
|
||||
<description>Authorization Code to allow the execution of Command Tags (may be empty)</description>
|
||||
</parameter>
|
||||
<parameter name="userAgent" type="text" required="false">
|
||||
<label>User Agent</label>
|
||||
<description>Some providers require a specific user agent header. If left empty, the default Jetty header is used.</description>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
</config-description>
|
||||
|
||||
</bridge-type>
|
||||
|
Loading…
Reference in New Issue
Block a user