mparticle-roku-sdk 2.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/build.yml +26 -0
- package/.gitmodules +3 -0
- package/LICENSE +191 -0
- package/README.md +24 -0
- package/example-legacy-sdk/images/MainMenu_Icon_Center_HD.png +0 -0
- package/example-legacy-sdk/images/MainMenu_Icon_Center_SD43.png +0 -0
- package/example-legacy-sdk/images/MainMenu_Icon_Side_HD.png +0 -0
- package/example-legacy-sdk/images/MainMenu_Icon_Side_SD43.png +0 -0
- package/example-legacy-sdk/images/splash_fhd.jpg +0 -0
- package/example-legacy-sdk/images/splash_hd.jpg +0 -0
- package/example-legacy-sdk/images/splash_sd.jpg +0 -0
- package/example-legacy-sdk/manifest +26 -0
- package/example-legacy-sdk/source/main.brs +45 -0
- package/example-scenegraph-sdk/LICENSE +1 -0
- package/example-scenegraph-sdk/README.md +2 -0
- package/example-scenegraph-sdk/source/Makefile +6 -0
- package/example-scenegraph-sdk/source/app.mk +675 -0
- package/example-scenegraph-sdk/source/components/helloworld.brs +300 -0
- package/example-scenegraph-sdk/source/components/helloworld.xml +66 -0
- package/example-scenegraph-sdk/source/images/channel-poster_fhd.png +0 -0
- package/example-scenegraph-sdk/source/images/channel-poster_hd.png +0 -0
- package/example-scenegraph-sdk/source/images/channel-poster_sd.png +0 -0
- package/example-scenegraph-sdk/source/images/splash-screen_fhd.jpg +0 -0
- package/example-scenegraph-sdk/source/images/splash-screen_hd.jpg +0 -0
- package/example-scenegraph-sdk/source/images/splash-screen_sd.jpg +0 -0
- package/example-scenegraph-sdk/source/manifest +12 -0
- package/example-scenegraph-sdk/source/source/Main.brs +46 -0
- package/example-scenegraph-sdk/source/testFramework/UnitTestFramework.brs +2867 -0
- package/example-scenegraph-sdk/source/tests/TestBasics.brs +266 -0
- package/mParticleBundle.crt +68 -0
- package/mParticleCore.brs +2301 -0
- package/mParticleTask.brs +78 -0
- package/mParticleTask.xml +12 -0
- package/package.json +5 -0
- package/testing/tests/Test__mParticle.brs +88 -0
@@ -0,0 +1,78 @@
|
|
1
|
+
'*************************************************************
|
2
|
+
' mParticle Roku SDK - mParticle Task Node for Scene Graph
|
3
|
+
' Copyright 2019 mParticle, Inc.
|
4
|
+
'*************************************************************
|
5
|
+
|
6
|
+
sub init()
|
7
|
+
m.port = createObject("roMessagePort")
|
8
|
+
m.top.observeField("mParticleApiCall", m.port)
|
9
|
+
m.top.functionName = "setupRunLoop"
|
10
|
+
m.top.control = "RUN"
|
11
|
+
end sub
|
12
|
+
|
13
|
+
sub setupRunLoop()
|
14
|
+
options = m.global.mparticleOptions
|
15
|
+
options.addReplace("batchUploads", true)
|
16
|
+
mParticleStart(options, m.port)
|
17
|
+
m.mparticle = mparticle()
|
18
|
+
m.top[mParticleConstants().SCENEGRAPH_NODES.CURRENT_USER_NODE] = m.mparticle.identity.getCurrentUser()
|
19
|
+
while true
|
20
|
+
msg = wait(15 * 1000, m.port)
|
21
|
+
if (msg = invalid) then
|
22
|
+
m.mparticle._internal.sessionManager.updateLastEventTime(m.mparticle._internal.utils.unixTimeMillis())
|
23
|
+
m.mparticle._internal.networking.queueUpload()
|
24
|
+
m.mparticle._internal.networking.processUploads()
|
25
|
+
else
|
26
|
+
mt = type(msg)
|
27
|
+
|
28
|
+
if mt = "roSGNodeEvent"
|
29
|
+
if msg.getField() = mParticleConstants().SCENEGRAPH_NODES.API_CALL_NODE
|
30
|
+
executeApiCall(msg.getData())
|
31
|
+
end if
|
32
|
+
else if (mt = "roUrlEvent")
|
33
|
+
if m.mparticle.isMparticleEvent(msg.getSourceIdentity())
|
34
|
+
identityResult = m.mparticle.onUrlEvent(msg)
|
35
|
+
if (identityResult <> invalid) then
|
36
|
+
m.top[mParticleConstants().SCENEGRAPH_NODES.IDENTITY_RESULT_NODE] = identityResult
|
37
|
+
if (identityResult.httpcode = 200) then
|
38
|
+
m.top[mParticleConstants().SCENEGRAPH_NODES.CURRENT_USER_NODE] = m.mparticle.identity.getCurrentUser()
|
39
|
+
end if
|
40
|
+
end if
|
41
|
+
end if
|
42
|
+
else
|
43
|
+
print "Error: unrecognized event type '"; mt ; "'"
|
44
|
+
end if
|
45
|
+
end if
|
46
|
+
end while
|
47
|
+
end sub
|
48
|
+
|
49
|
+
function executeApiCall(apiCall as object)
|
50
|
+
args = apiCall.args
|
51
|
+
length = args.count()
|
52
|
+
if (apiCall.methodName.Instr("identity/") = 0) then
|
53
|
+
target = m.mparticle.identity
|
54
|
+
methodName = apiCall.methodName.Replace("identity/", "")
|
55
|
+
else if (apiCall.methodName.Instr("media/") = 0) then
|
56
|
+
target = m.mparticle.media
|
57
|
+
methodName = apiCall.methodName.Replace("media/", "")
|
58
|
+
else
|
59
|
+
target = m.mparticle
|
60
|
+
methodName = apiCall.methodName
|
61
|
+
end if
|
62
|
+
|
63
|
+
if (length = 0) then
|
64
|
+
target[methodName]()
|
65
|
+
else if (length = 1) then
|
66
|
+
target[methodName](args[0])
|
67
|
+
else if (length = 2) then
|
68
|
+
target[methodName](args[0], args[1])
|
69
|
+
else if (length = 3) then
|
70
|
+
target[methodName](args[0], args[1], args[2])
|
71
|
+
else if (length = 4) then
|
72
|
+
target[methodName](args[0], args[1], args[2], args[3])
|
73
|
+
else if (length = 5) then
|
74
|
+
target[methodName](args[0], args[1], args[2], args[3], args[4])
|
75
|
+
else if (length = 6) then
|
76
|
+
target[methodName](args[0], args[1], args[2], args[3], args[4], args[5])
|
77
|
+
end if
|
78
|
+
end function
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8" ?>
|
2
|
+
<component name="mParticleTask" extends="Task">
|
3
|
+
<interface>
|
4
|
+
<field id="mParticleApiCall" type="assocarray"/>
|
5
|
+
<field id="mParticleIdentityResult" type="assocarray"/>
|
6
|
+
<field id="mParticleCurrentUser" type="assocarray"/>
|
7
|
+
</interface>
|
8
|
+
<!-- Replace with correct path if necessary -->
|
9
|
+
<script type="text/brightscript" uri="pkg:/components/mParticleTask.brs"/>
|
10
|
+
<!-- Replace with correct path if necessary -->
|
11
|
+
<script type="text/brightscript" uri="pkg:/source/mparticle/mParticleCore.brs"/>
|
12
|
+
</component>
|
package/package.json
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
function TestSuite__mParticle() as object
|
2
|
+
this = BaseTestSuite()
|
3
|
+
this.Name = "mParticleTestSuite"
|
4
|
+
this.addTest("TestCase__mParticle_CheckConfiguration", TestCase__mParticle_CheckConfiguration)
|
5
|
+
this.addTest("TestCase__mParticle_CheckDefaultEnvironment", TestCase__mParticle_CheckDefaultEnvironment)
|
6
|
+
this.addTest("TestCase__mParticle_CheckSetEnvironment", TestCase__mParticle_CheckSetEnvironment)
|
7
|
+
this.addTest("TestCase__mParticle_TestSetUserIdentity", TestCase__mParticle_TestSetUserIdentity)
|
8
|
+
|
9
|
+
this.SetUp = mParticleTestSuite__SetUp
|
10
|
+
this.TearDown = mParticleTestSuite__TearDown
|
11
|
+
return this
|
12
|
+
end function
|
13
|
+
|
14
|
+
sub mParticleTestSuite__SetUp()
|
15
|
+
end sub
|
16
|
+
|
17
|
+
sub mParticleTestSuite__TearDown()
|
18
|
+
end sub
|
19
|
+
|
20
|
+
function reset()
|
21
|
+
getGlobalAA().mparticleInstance = invalid
|
22
|
+
end function
|
23
|
+
|
24
|
+
function TestCase__mParticle_CheckConfiguration() as string
|
25
|
+
reset()
|
26
|
+
options = {}
|
27
|
+
options.logLevel = mparticleConstants().LOG_LEVEL.DEBUG
|
28
|
+
options.apiKey = "fookey"
|
29
|
+
options.apiSecret = "foosecret"
|
30
|
+
option.dataPlanId = "fooId"
|
31
|
+
options.dataPlanVersion = 1
|
32
|
+
options.isscenegraph = true
|
33
|
+
mparticlestart(options)
|
34
|
+
msgs = []
|
35
|
+
msgs.push(m.assertEqual(mparticle()._internal.configuration.apiKey, "fookey"))
|
36
|
+
msgs.push(m.assertEqual(mparticle()._internal.configuration.apiSecret, "foosecret"))
|
37
|
+
msgs.push(m.assertEqual(mparticle()._internal.configuration.dataPlanId, "fooId"))
|
38
|
+
msgs.push(m.assertEqual(mparticle()._internal.configuration.dataPlanVersion, 1))
|
39
|
+
msgs.push(m.assertEqual(mparticle()._internal.configuration.logLevel, mparticleConstants().LOG_LEVEL.DEBUG))
|
40
|
+
msgs.push(m.assertTrue(mparticle()._internal.configuration.isscenegraph))
|
41
|
+
return testResult(msgs)
|
42
|
+
end function
|
43
|
+
|
44
|
+
function TestCase__mParticle_CheckDefaultEnvironment() as string
|
45
|
+
reset()
|
46
|
+
options = {}
|
47
|
+
mparticlestart(options)
|
48
|
+
msgs = []
|
49
|
+
msgs.push(m.assertTrue(mparticle()._internal.configuration.development))
|
50
|
+
return testResult(msgs)
|
51
|
+
end function
|
52
|
+
|
53
|
+
function TestCase__mParticle_CheckSetEnvironment() as string
|
54
|
+
reset()
|
55
|
+
options = {}
|
56
|
+
options.environment = mParticleConstants().ENVIRONMENT.FORCE_DEVELOPMENT
|
57
|
+
mparticlestart(options)
|
58
|
+
msgs = []
|
59
|
+
msgs.push(m.assertTrue(mparticle()._internal.configuration.development))
|
60
|
+
return testResult(msgs)
|
61
|
+
end function
|
62
|
+
|
63
|
+
function TestCase__mParticle_TestSetUserIdentity() as string
|
64
|
+
reset()
|
65
|
+
options = {}
|
66
|
+
mparticlestart({})
|
67
|
+
mp = mparticle()
|
68
|
+
mp._internal.storage.clear()
|
69
|
+
mp.setuseridentity(mparticleConstants().IDENTITY_TYPE.CUSTOMER_ID, "foo-customer-id")
|
70
|
+
identity = mparticle()._internal.storage.getUserIdentities().lookup(mparticleConstants().IDENTITY_TYPE.CUSTOMER_ID)
|
71
|
+
msgs = []
|
72
|
+
msgs.push(m.assertEqual(identity.n, mparticleConstants().IDENTITY_TYPE.CUSTOMER_ID))
|
73
|
+
msgs.push(m.assertEqual(identity.i, "foo-customer-id"))
|
74
|
+
return testResult(msgs)
|
75
|
+
end function
|
76
|
+
|
77
|
+
function testResult(msgs as object) as string
|
78
|
+
endMessage = []
|
79
|
+
for each msg in msgs
|
80
|
+
if (len(msg) > 0)
|
81
|
+
endMessage.push(msg)
|
82
|
+
end if
|
83
|
+
end for
|
84
|
+
if (endMessage.count() > 0)
|
85
|
+
return formatjson(endmessage)
|
86
|
+
end if
|
87
|
+
return ""
|
88
|
+
end function
|