mirror of
https://github.com/mtan93/SmartThingsPublic.git
synced 2026-03-28 13:23:07 +00:00
switched from using state to using atomicState in preparation of event buffering; using atomicState exclusively per important tip found here: http://docs.smartthings.com/en/latest/smartapp-developers-guide/state.html#atomic-state
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
* for the specific language governing permissions and limitations under the License.
|
* for the specific language governing permissions and limitations under the License.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
definition(
|
definition(
|
||||||
name: "Initial State Event Streamer",
|
name: "Initial State Event Streamer",
|
||||||
namespace: "initialstate.events",
|
namespace: "initialstate.events",
|
||||||
@@ -173,24 +174,24 @@ def subscribeToEvents() {
|
|||||||
|
|
||||||
def getAccessKey() {
|
def getAccessKey() {
|
||||||
log.trace "get access key"
|
log.trace "get access key"
|
||||||
if (state.accessKey == null) {
|
if (atomicState.accessKey == null) {
|
||||||
httpError(404, "Access Key Not Found")
|
httpError(404, "Access Key Not Found")
|
||||||
} else {
|
} else {
|
||||||
[
|
[
|
||||||
grokerRootUrl: state.grokerRootUrl,
|
grokerRootUrl: atomicState.grokerRootUrl,
|
||||||
accessKey: state.accessKey
|
accessKey: atomicState.accessKey
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def getBucketKey() {
|
def getBucketKey() {
|
||||||
log.trace "get bucket key"
|
log.trace "get bucket key"
|
||||||
if (state.bucketKey == null) {
|
if (atomicState.bucketKey == null) {
|
||||||
httpError(404, "Bucket key Not Found")
|
httpError(404, "Bucket key Not Found")
|
||||||
} else {
|
} else {
|
||||||
[
|
[
|
||||||
bucketKey: state.bucketKey,
|
bucketKey: atomicState.bucketKey,
|
||||||
bucketName: state.bucketName
|
bucketName: atomicState.bucketName
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -203,10 +204,10 @@ def setBucketKey() {
|
|||||||
log.debug "bucket name: $newBucketName"
|
log.debug "bucket name: $newBucketName"
|
||||||
log.debug "bucket key: $newBucketKey"
|
log.debug "bucket key: $newBucketKey"
|
||||||
|
|
||||||
if (newBucketKey && (newBucketKey != state.bucketKey || newBucketName != state.bucketName)) {
|
if (newBucketKey && (newBucketKey != atomicState.bucketKey || newBucketName != atomicState.bucketName)) {
|
||||||
state.bucketKey = "$newBucketKey"
|
atomicState.bucketKey = "$newBucketKey"
|
||||||
state.bucketName = "$newBucketName"
|
atomicState.bucketName = "$newBucketName"
|
||||||
state.isBucketCreated = false
|
atomicState.isBucketCreated = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,14 +216,14 @@ def setAccessKey() {
|
|||||||
def newAccessKey = request.JSON?.accessKey
|
def newAccessKey = request.JSON?.accessKey
|
||||||
def newGrokerRootUrl = request.JSON?.grokerRootUrl
|
def newGrokerRootUrl = request.JSON?.grokerRootUrl
|
||||||
|
|
||||||
if (newGrokerRootUrl && newGrokerRootUrl != "" && newGrokerRootUrl != state.grokerRootUrl) {
|
if (newGrokerRootUrl && newGrokerRootUrl != "" && newGrokerRootUrl != atomicState.grokerRootUrl) {
|
||||||
state.grokerRootUrl = "$newGrokerRootUrl"
|
atomicState.grokerRootUrl = "$newGrokerRootUrl"
|
||||||
state.isBucketCreated = false
|
atomicState.isBucketCreated = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newAccessKey && newAccessKey != state.accessKey) {
|
if (newAccessKey && newAccessKey != atomicState.accessKey) {
|
||||||
state.accessKey = "$newAccessKey"
|
atomicState.accessKey = "$newAccessKey"
|
||||||
state.isBucketCreated = false
|
atomicState.isBucketCreated = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,15 +231,15 @@ def installed() {
|
|||||||
|
|
||||||
subscribeToEvents()
|
subscribeToEvents()
|
||||||
|
|
||||||
state.isBucketCreated = false
|
atomicState.isBucketCreated = false
|
||||||
state.grookerRootUrl = "https://groker.initialstate.com"
|
atomicState.grookerRootUrl = "https://groker.initialstate.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
def updated() {
|
def updated() {
|
||||||
unsubscribe()
|
unsubscribe()
|
||||||
|
|
||||||
if (state.bucketKey != null && state.accessKey != null) {
|
if (atomicState.bucketKey != null && atomicState.accessKey != null) {
|
||||||
state.isBucketCreated = false
|
atomicState.isBucketCreated = false
|
||||||
}
|
}
|
||||||
|
|
||||||
subscribeToEvents()
|
subscribeToEvents()
|
||||||
@@ -246,17 +247,17 @@ def updated() {
|
|||||||
|
|
||||||
def createBucket() {
|
def createBucket() {
|
||||||
|
|
||||||
if (!state.bucketName) {
|
if (!atomicState.bucketName) {
|
||||||
state.bucketName = state.bucketKey
|
atomicState.bucketName = atomicState.bucketKey
|
||||||
}
|
}
|
||||||
def bucketName = "${state.bucketName}"
|
def bucketName = "${atomicState.bucketName}"
|
||||||
def bucketKey = "${state.bucketKey}"
|
def bucketKey = "${atomicState.bucketKey}"
|
||||||
def accessKey = "${state.accessKey}"
|
def accessKey = "${atomicState.accessKey}"
|
||||||
|
|
||||||
def bucketCreateBody = new JsonSlurper().parseText("{\"bucketKey\": \"$bucketKey\", \"bucketName\": \"$bucketName\"}")
|
def bucketCreateBody = new JsonSlurper().parseText("{\"bucketKey\": \"$bucketKey\", \"bucketName\": \"$bucketName\"}")
|
||||||
|
|
||||||
def bucketCreatePost = [
|
def bucketCreatePost = [
|
||||||
uri: '${state.grokerRootUrl}/api/buckets',
|
uri: '${atomicState.grokerRootUrl}/api/buckets',
|
||||||
headers: [
|
headers: [
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"X-IS-AccessKey": accessKey,
|
"X-IS-AccessKey": accessKey,
|
||||||
@@ -269,7 +270,7 @@ def createBucket() {
|
|||||||
|
|
||||||
httpPostJson(bucketCreatePost) {
|
httpPostJson(bucketCreatePost) {
|
||||||
log.debug "bucket posted"
|
log.debug "bucket posted"
|
||||||
state.isBucketCreated = true
|
atomicState.isBucketCreated = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -287,21 +288,21 @@ def genericHandler(evt) {
|
|||||||
|
|
||||||
def eventHandler(name, value) {
|
def eventHandler(name, value) {
|
||||||
|
|
||||||
if (state.accessKey == null || state.bucketKey == null) {
|
if (atomicState.accessKey == null || atomicState.bucketKey == null) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!state.isBucketCreated) {
|
if (!atomicState.isBucketCreated) {
|
||||||
createBucket()
|
createBucket()
|
||||||
}
|
}
|
||||||
|
|
||||||
def eventBody = new JsonSlurper().parseText("[{\"key\": \"$name\", \"value\": \"$value\"}]")
|
def eventBody = new JsonSlurper().parseText("[{\"key\": \"$name\", \"value\": \"$value\"}]")
|
||||||
def eventPost = [
|
def eventPost = [
|
||||||
uri: '${state.grokerRootUrl}/api/events',
|
uri: '${atomicState.grokerRootUrl}/api/events',
|
||||||
headers: [
|
headers: [
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
"X-IS-BucketKey": "${state.bucketKey}",
|
"X-IS-BucketKey": "${atomicState.bucketKey}",
|
||||||
"X-IS-AccessKey": "${state.accessKey}",
|
"X-IS-AccessKey": "${atomicState.accessKey}",
|
||||||
"Accept-Version": "0.0.2"
|
"Accept-Version": "0.0.2"
|
||||||
],
|
],
|
||||||
body: eventBody
|
body: eventBody
|
||||||
|
|||||||
Reference in New Issue
Block a user