post static method
Create a new resource.
bridgeIpAddr
is the IP address of the target bridge.
If a specific resource is being queried, include pathToResource
. This is
most likely the resource's ID.
applicationKey
is the key associated with this devices in the bridge's
whitelist.
The resourceType
is used to let the bridge know what type of resource is
being queried.
body
is the actual content being sent to the bridge.
decrypter
When the old tokens are read from local storage, they are
decrypted. This parameter allows you to provide your own decryption
method. This will be used in addition to the default decryption method.
This will be performed after the default decryption method.
May throw ExpiredAccessTokenException if trying to connect to the bridge remotely and the token is expired. If this happens, refresh the token with TokenRepo.refreshRemoteToken.
Implementation
static Future<Map<String, dynamic>?> post({
required String bridgeIpAddr,
String? pathToResource,
required String applicationKey,
required ResourceType? resourceType,
required String body,
String Function(String ciphertext)? decrypter,
}) async {
return await HueHttpClient.post(
url: getTargetUrl(
bridgeIpAddr: bridgeIpAddr,
resourceType: resourceType,
pathToResource: pathToResource,
isRemote: false,
),
applicationKey: applicationKey,
token: null,
body: body,
).timeout(
const Duration(seconds: 1),
onTimeout: () async {
String? token = await TokenRepo.fetchToken(decrypter: decrypter);
return await HueHttpClient.post(
url: getTargetUrl(
bridgeIpAddr: bridgeIpAddr,
resourceType: resourceType,
pathToResource: pathToResource,
isRemote: true,
),
applicationKey: applicationKey,
token: token,
body: body,
);
},
);
}