rhoconnect-client 5.5.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +9 -0
- data/CREDITS +0 -0
- data/LICENSE +9 -0
- data/README.md +47 -0
- data/ext/rhoconnect-client/RhoConnectClient.rb +190 -0
- data/ext/rhoconnect-client/ext/RhoConnectClient.xml +726 -0
- data/ext/rhoconnect-client/ext/build +26 -0
- data/ext/rhoconnect-client/ext/build.bat +30 -0
- data/ext/rhoconnect-client/ext/platform/android/ext_java.files +1 -0
- data/ext/rhoconnect-client/ext/platform/android/ext_native.files +14 -0
- data/ext/rhoconnect-client/ext/platform/android/src/com/rhoconnectclient/RhoconnectClient.java +1 -0
- data/ext/rhoconnect-client/ext/platform/iphone/.gitignore +1 -0
- data/ext/rhoconnect-client/ext/platform/iphone/Rakefile +74 -0
- data/ext/rhoconnect-client/ext/platform/iphone/RhoconnectClient.xcodeproj/project.pbxproj +390 -0
- data/ext/rhoconnect-client/ext/platform/iphone/RhoconnectClient_Prefix.pch +7 -0
- data/ext/rhoconnect-client/ext/platform/iphone/impl/readme.txt +7 -0
- data/ext/rhoconnect-client/ext/platform/qt/Rakefile +35 -0
- data/ext/rhoconnect-client/ext/platform/qt/rhoconnect-client.pro +88 -0
- data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.sln +36 -0
- data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.vcproj +774 -0
- data/ext/rhoconnect-client/ext/platform/wm/Rhoconnect-client.vsprops +15 -0
- data/ext/rhoconnect-client/ext/platform/wm/src/rhoconnectclient_wm.cpp +40 -0
- data/ext/rhoconnect-client/ext/platform/wm/src/rhoconnectclient_wm.h +2 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.props +22 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.sln +32 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.vcxproj +220 -0
- data/ext/rhoconnect-client/ext/platform/wp8/Rhoconnect-client.vcxproj.filters +103 -0
- data/ext/rhoconnect-client/ext/shared/RhoConnectClientImpl.cpp +273 -0
- data/ext/rhoconnect-client/ext/shared/RhoConnectClientImpl.h +60 -0
- data/ext/rhoconnect-client/ext/shared/RhoConnectClientSingletonImpl.h +53 -0
- data/ext/rhoconnect-client/ext/shared/initRhoconnectClient.cpp +207 -0
- data/ext/rhoconnect-client/ext/shared/rhoconnectclient.c +18 -0
- data/ext/rhoconnect-client/ext/shared/sync/ClientRegister.cpp +398 -0
- data/ext/rhoconnect-client/ext/shared/sync/ClientRegister.h +147 -0
- data/ext/rhoconnect-client/ext/shared/sync/ISyncProtocol.h +91 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncEngine.cpp +1245 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncEngine.h +213 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncNotify.cpp +737 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncNotify.h +209 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncProtocol_3.h +220 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncProtocol_4.h +259 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncSource.cpp +1694 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncSource.h +212 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncThread.cpp +583 -0
- data/ext/rhoconnect-client/ext/shared/sync/SyncThread.h +250 -0
- data/ext/rhoconnect-client/ext.yml +12 -0
- data/lib/build/run_rhoconnect_spec.rb +135 -0
- data/lib/rhoconnect-client.rb +3 -0
- data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +1673 -0
- data/platform/shared/RhoConnectClient/RhoConnectClient.h +181 -0
- data/platform/shared/RhoConnectClient/RhoError.h +77 -0
- data/rhoconnect-client/C++/Tests/RhoConnectClientTest.cpp +830 -0
- data/rhoconnect-client/C++/Tests/win32/.gitignore +3 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClient.sln +65 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClient.vcproj +634 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClientTest/RhoConnectClientTest.vcproj +222 -0
- data/rhoconnect-client/C++/Tests/win32/RhoConnectClientTest/stdafx.h +65 -0
- data/rhoconnect-client/C++/Tests/win32/stdafx.h +65 -0
- data/rhoconnect-client/CHANGELOG +18 -0
- data/rhoconnect-client/Java/Android/build/android.rake +387 -0
- data/rhoconnect-client/Java/Android/build/android_sdk.rb +582 -0
- data/rhoconnect-client/Java/Android/build/libcurl_build.files +73 -0
- data/rhoconnect-client/Java/Android/build/libjson_build.files +9 -0
- data/rhoconnect-client/Java/Android/build/librhocommon_build.files +14 -0
- data/rhoconnect-client/Java/Android/build/librhodb_build.files +5 -0
- data/rhoconnect-client/Java/Android/build/librhoimpl_build.files +13 -0
- data/rhoconnect-client/Java/Android/build/librholog_build.files +4 -0
- data/rhoconnect-client/Java/Android/build/libsqlite_build.files +1 -0
- data/rhoconnect-client/Java/Android/build/libsync_build.files +7 -0
- data/rhoconnect-client/Java/Android/build/libunzip_build.files +1 -0
- data/rhoconnect-client/Java/Android/build/rhoconnectclient_build.files +3 -0
- data/rhoconnect-client/Java/Android/build/rhoimpljava_build.files +21 -0
- data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/Capabilities.java +63 -0
- data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/MemoryInfoCollector.java +79 -0
- data/rhoconnect-client/Java/Android/src/com/rhomobile/rhodes/util/ContextFactory.java +63 -0
- data/rhoconnect-client/Java/Android/test/.classpath +9 -0
- data/rhoconnect-client/Java/Android/test/.project +33 -0
- data/rhoconnect-client/Java/Android/test/AndroidManifest.xml +14 -0
- data/rhoconnect-client/Java/Android/test/assets/apps/androidtest.png +0 -0
- data/rhoconnect-client/Java/Android/test/assets/apps/rhoconfig.txt +19 -0
- data/rhoconnect-client/Java/Android/test/assets/apps/rhoconfig.txt.timestamp +1 -0
- data/rhoconnect-client/Java/Android/test/assets/db/syncdb.schema +44 -0
- data/rhoconnect-client/Java/Android/test/assets/db/syncdb.triggers +10 -0
- data/rhoconnect-client/Java/Android/test/assets/db/syncdb_java.triggers +21 -0
- data/rhoconnect-client/Java/Android/test/assets/rho.dat +9 -0
- data/rhoconnect-client/Java/Android/test/proguard.cfg +36 -0
- data/rhoconnect-client/Java/Android/test/project.properties +11 -0
- data/rhoconnect-client/Java/Android/test/res/drawable-hdpi/icon.png +0 -0
- data/rhoconnect-client/Java/Android/test/res/drawable-ldpi/icon.png +0 -0
- data/rhoconnect-client/Java/Android/test/res/drawable-mdpi/icon.png +0 -0
- data/rhoconnect-client/Java/Android/test/res/layout/main.xml +12 -0
- data/rhoconnect-client/Java/Android/test/res/values/strings.xml +5 -0
- data/rhoconnect-client/Java/Android/test/rhoimpl.jar +0 -0
- data/rhoconnect-client/Java/Android/test/src/com/rhomobile/rhoconnect_client_test/TestRhoConnectClient.java +343 -0
- data/rhoconnect-client/Java/Android/test/src/com/rhomobile/rhoconnect_client_test/TestRhoConnectClientBlobs.java +219 -0
- data/rhoconnect-client/Java/RhoConnect/.classpath +6 -0
- data/rhoconnect-client/Java/RhoConnect/.project +93 -0
- data/rhoconnect-client/Java/RhoConnect/assets/apps/rhoconfig.txt +19 -0
- data/rhoconnect-client/Java/RhoConnect/assets/apps/rhoconfig.txt.timestamp +1 -0
- data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb.schema +44 -0
- data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb.triggers +10 -0
- data/rhoconnect-client/Java/RhoConnect/assets/db/syncdb_java.triggers +21 -0
- data/rhoconnect-client/Java/RhoConnect/assets/rho.dat +8 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/RhoConnectJniNotify.h +61 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectClient.h +181 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectNotify.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectNotify_IDelegate.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectObjectNotify.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhoConnectObjectNotify_IDelegate.h +13 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/com_rhomobile_rhoconnect_RhomModel.h +103 -0
- data/rhoconnect-client/Java/RhoConnect/jni/include/rhojava.inc +76 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniClient.cpp +401 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniModel.cpp +332 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectJniNotify.cpp +223 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhoConnectUtil.cpp +82 -0
- data/rhoconnect-client/Java/RhoConnect/jni/src/RhodesApp.cpp +114 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectClient.java +108 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectNotify.java +78 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhoConnectObjectNotify.java +71 -0
- data/rhoconnect-client/Java/RhoConnect/src/com/rhomobile/rhoconnect/RhomModel.java +195 -0
- data/rhoconnect-client/JavaScript/.classpath +10 -0
- data/rhoconnect-client/JavaScript/.gitignore +4 -0
- data/rhoconnect-client/JavaScript/.project +17 -0
- data/rhoconnect-client/JavaScript/README.textile +1 -0
- data/rhoconnect-client/JavaScript/build.xml +185 -0
- data/rhoconnect-client/JavaScript/doc/fsm-sample.js +44 -0
- data/rhoconnect-client/JavaScript/doc/fsm-sample.png +0 -0
- data/rhoconnect-client/JavaScript/src/RhoSyncJS.gwt.xml +21 -0
- data/rhoconnect-client/JavaScript/stubs/RhoSyncStubsJS.gwt.xml +21 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/Capabilities.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/IRhoRubyHelper.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/Mutex.java +5 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoAppAdapter.java +39 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoClassFactory.java +29 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoConf.java +100 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoEmptyLogger.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoEmptyProfiler.java +5 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoLogger.java +32 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhoProfiler.java +27 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/RhodesApp.java +25 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/TimeInterval.java +22 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/Tokenizer.java +23 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBAdapter.java +174 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBAttrManager.java +15 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/DBException.java +5 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/db/IDBResult.java +27 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/file/IFileAccess.java +7 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/file/SimpleFile.java +15 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/IHttpConnection.java +22 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/NetRequest.java +324 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/NetResponse.java +51 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/net/URI.java +64 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/ClientRegister.java +15 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONArrayIterator.java +37 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONEntry.java +48 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/JSONStructIterator.java +41 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/SyncNotify.java +98 -0
- data/rhoconnect-client/JavaScript/stubs/com/rho/sync/SyncThread.java +92 -0
- data/rhoconnect-client/JavaScript/war/WEB-INF/lib/gwt-servlet-deps.jar +0 -0
- data/rhoconnect-client/JavaScript/war/WEB-INF/lib/gwt-servlet.jar +0 -0
- data/rhoconnect-client/JavaScript/war/js/fsm-sample.js +54 -0
- data/rhoconnect-client/JavaScript/war/js/rhosync-api.js +237 -0
- data/rhoconnect-client/JavaScript/war/js/rhosync-fsm.js +307 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/4C71D69C9BBC9E6F05C6BA49B01BCBC1.cache.html +3122 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/5146F4FFF34511C8BB2661E920B49E3A.cache.html +3254 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/5248C67481D9D27AD0703D15CDBD2A1C.cache.html +3147 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/EE1DC2692C9C32367B53A39E2358AF23.cache.html +3195 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/clear.cache.gif +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/corner.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/corner_ie6.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/hborder.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/hborder_ie6.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/corner_dialog_topleft.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/corner_dialog_topright.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/hborder_blue_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/hborder_gray_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/vborder_blue_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/ie6/vborder_gray_shadow.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/splitPanelThumb.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/vborder.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/images/vborder_ie6.png +0 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/standard.css +1144 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/gwt/standard/standard_rtl.css +1145 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/hosted.html +350 -0
- data/rhoconnect-client/JavaScript/war/rhosyncjs/rhosyncjs.nocache.js +314 -0
- data/rhoconnect-client/JavaScript/war/test/SpecRunner.html +35 -0
- data/rhoconnect-client/JavaScript/war/test/dbtest.html +38 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/MIT.LICENSE +20 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine-html.js +188 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine.css +166 -0
- data/rhoconnect-client/JavaScript/war/test/lib/jasmine-1.0.1/jasmine.js +2421 -0
- data/rhoconnect-client/JavaScript/war/test/spec/SpecHelper.js +7 -0
- data/rhoconnect-client/JavaScript/war/test/spec/SyncApiSpec.js +573 -0
- data/rhoconnect-client/JavaScript/war/test/spec/samples/PlayerSpec.js +58 -0
- data/rhoconnect-client/JavaScript/war/test/worker-test.js +17 -0
- data/rhoconnect-client/LICENSE +41 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectClient.h +118 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectClient.m +641 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectClient.xcodeproj/project.pbxproj +1434 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectNotify.h +83 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectNotify.m +181 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectObjectNotify.h +65 -0
- data/rhoconnect-client/ObjectiveC/RhoConnectObjectNotify.m +73 -0
- data/rhoconnect-client/ObjectiveC/RhomModel.h +101 -0
- data/rhoconnect-client/ObjectiveC/RhomModel.m +320 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/MainWindow.xib +198 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest-Info.plist +30 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest.xcodeproj/project.pbxproj +373 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTestAppDelegate.h +58 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTestAppDelegate.m +84 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/RhoConnectClientTest_Prefix.pch +8 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/invalid_import_db.zip +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/main.m +1096 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/test.png +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/test2.png +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/RhoConnectClientTest/valid_import_db.zip +0 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsAppDelegate.h +62 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsAppDelegate.m +35 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsViewController.h +78 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/Classes/ptestsViewController.m +549 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/MainWindow.xib +227 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/main.m +17 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests-Info.plist +30 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests.xcodeproj/project.pbxproj +363 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptestsViewController.xib +641 -0
- data/rhoconnect-client/ObjectiveC/Tests/ptests/ptests_Prefix.pch +8 -0
- data/rhoconnect-client/README.textile +23 -0
- data/rhoconnect-client/Rakefile +20 -0
- data/rhoconnect-client/Samples/Java/android_store/.classpath +8 -0
- data/rhoconnect-client/Samples/Java/android_store/.project +33 -0
- data/rhoconnect-client/Samples/Java/android_store/AndroidManifest.xml +24 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/apps/rhoconfig.txt +19 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/apps/rhoconfig.txt.timestamp +1 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb.schema +44 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb.triggers +10 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/db/syncdb_java.triggers +21 -0
- data/rhoconnect-client/Samples/Java/android_store/assets/rho.dat +8 -0
- data/rhoconnect-client/Samples/Java/android_store/default.properties +11 -0
- data/rhoconnect-client/Samples/Java/android_store/project.properties +14 -0
- data/rhoconnect-client/Samples/Java/android_store/res/drawable-hdpi/icon.png +0 -0
- data/rhoconnect-client/Samples/Java/android_store/res/drawable-ldpi/icon.png +0 -0
- data/rhoconnect-client/Samples/Java/android_store/res/drawable-mdpi/icon.png +0 -0
- data/rhoconnect-client/Samples/Java/android_store/res/layout/main.xml +12 -0
- data/rhoconnect-client/Samples/Java/android_store/res/values/strings.xml +5 -0
- data/rhoconnect-client/Samples/Java/android_store/rhoimpl.jar +0 -0
- data/rhoconnect-client/Samples/Java/android_store/src/com/rhomobile/android_store/StoreActivity.java +68 -0
- data/rhoconnect-client/Samples/Java/android_store/src/com/rhomobile/android_store/StoreApplication.java +15 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/LoginViewController.h +70 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/LoginViewController.m +94 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RhoConnectEngine.h +82 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RhoConnectEngine.m +119 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RootViewController.h +63 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/RootViewController.m +314 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/WaitLoginController.h +65 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/WaitLoginController.m +110 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/storeAppDelegate.h +61 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/Classes/storeAppDelegate.m +171 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/LoginViewController.xib +779 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/MainWindow.xib +580 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/RootViewController.xib +384 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/WaitLoginController.xib +557 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/icon.png +0 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/main.m +22 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/store-Info.plist +30 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/store.xcodeproj/project.pbxproj +367 -0
- data/rhoconnect-client/Samples/ObjectiveC/store/store_Prefix.pch +14 -0
- data/rhoconnect-client/build.yml +3 -0
- data/rhoconnect-client/version +1 -0
- metadata +314 -0
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/*------------------------------------------------------------------------
|
|
2
|
+
* (The MIT License)
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2008-2011 Rhomobile, Inc.
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*
|
|
24
|
+
* http://rhomobile.com
|
|
25
|
+
|
|
26
|
+
* Copyright (c) 2011-2016 Symbol Technologies, Inc.
|
|
27
|
+
*
|
|
28
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
29
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
30
|
+
* in the Software without restriction, including without limitation the rights
|
|
31
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
32
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
33
|
+
* furnished to do so, subject to the following conditions:
|
|
34
|
+
*
|
|
35
|
+
* The above copyright notice and this permission notice shall be included in
|
|
36
|
+
* all copies or substantial portions of the Software.
|
|
37
|
+
*
|
|
38
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
39
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
40
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
41
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
42
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
43
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
44
|
+
* THE SOFTWARE.
|
|
45
|
+
*
|
|
46
|
+
* http://symbol.com
|
|
47
|
+
*------------------------------------------------------------------------*/
|
|
48
|
+
|
|
49
|
+
#pragma once
|
|
50
|
+
|
|
51
|
+
#include "common/RhoStd.h"
|
|
52
|
+
#include "logging/RhoLog.h"
|
|
53
|
+
#include "common/AutoPointer.h"
|
|
54
|
+
#include "common/IRhoClassFactory.h"
|
|
55
|
+
#include "net/INetRequest.h"
|
|
56
|
+
#include "api_generator/MethodResult.h"
|
|
57
|
+
|
|
58
|
+
typedef int (*RHOC_CALLBACK)(const char* szNotify, void* callback_data);
|
|
59
|
+
|
|
60
|
+
namespace rho {
|
|
61
|
+
namespace db {
|
|
62
|
+
class CDBAdapter;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
namespace sync {
|
|
66
|
+
class CSyncEngine;
|
|
67
|
+
class CSyncSource;
|
|
68
|
+
|
|
69
|
+
struct CSyncNotification
|
|
70
|
+
{
|
|
71
|
+
apiGenerator::CMethodResult m_callbackData;
|
|
72
|
+
|
|
73
|
+
RHOC_CALLBACK m_cCallback;
|
|
74
|
+
void* m_cCallbackData;
|
|
75
|
+
|
|
76
|
+
boolean m_bRemoveAfterFire;
|
|
77
|
+
CSyncNotification(): m_cCallback(0), m_cCallbackData(0), m_bRemoveAfterFire(false){}
|
|
78
|
+
|
|
79
|
+
CSyncNotification(const apiGenerator::CMethodResult& callbackData, boolean bRemoveAfterFire);
|
|
80
|
+
CSyncNotification(RHOC_CALLBACK callback, void* callback_data, boolean bRemoveAfterFire) :
|
|
81
|
+
m_cCallback(callback), m_cCallbackData(callback_data), m_bRemoveAfterFire(false){}
|
|
82
|
+
|
|
83
|
+
String toString()const;
|
|
84
|
+
|
|
85
|
+
~CSyncNotification();
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
struct CObjectNotification
|
|
89
|
+
{
|
|
90
|
+
apiGenerator::CMethodResult m_callbackData;
|
|
91
|
+
|
|
92
|
+
RHOC_CALLBACK m_cCallback;
|
|
93
|
+
void* m_cCallbackData;
|
|
94
|
+
|
|
95
|
+
CObjectNotification(): m_cCallback(0), m_cCallbackData(0){}
|
|
96
|
+
|
|
97
|
+
CObjectNotification(const apiGenerator::CMethodResult& callbackData);
|
|
98
|
+
CObjectNotification(RHOC_CALLBACK callback, void* callback_data) :
|
|
99
|
+
m_cCallback(callback), m_cCallbackData(callback_data){}
|
|
100
|
+
|
|
101
|
+
String toString()const;
|
|
102
|
+
|
|
103
|
+
~CObjectNotification();
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
class CSyncNotify
|
|
107
|
+
{
|
|
108
|
+
DEFINE_LOGCLASS;
|
|
109
|
+
|
|
110
|
+
public:
|
|
111
|
+
enum ENotifyType{ enNone, enDelete, enUpdate, enCreate };
|
|
112
|
+
|
|
113
|
+
private:
|
|
114
|
+
|
|
115
|
+
CSyncEngine& m_syncEngine;
|
|
116
|
+
|
|
117
|
+
static common::CAutoPtr<CObjectNotification> m_pObjectNotify;
|
|
118
|
+
HashtablePtr<int, Hashtable<String,int>* > m_hashSrcIDAndObject;
|
|
119
|
+
HashtablePtr<int, Hashtable<String,String>* > m_hashCreateObjectErrors;
|
|
120
|
+
String m_strSingleObjectSrcName, m_strSingleObjectID;
|
|
121
|
+
Hashtable<int,int> m_hashSrcObjectCount;
|
|
122
|
+
boolean m_bEnableReporting;
|
|
123
|
+
boolean m_bEnableReportingGlobal;
|
|
124
|
+
|
|
125
|
+
static common::CMutex m_mxObjectNotify;
|
|
126
|
+
|
|
127
|
+
HashtablePtr<int,CSyncNotification*> m_mapSyncNotifications;
|
|
128
|
+
common::CAutoPtr<CSyncNotification> m_pAllNotification;
|
|
129
|
+
common::CAutoPtr<CSyncNotification> m_pSearchNotification;
|
|
130
|
+
CSyncNotification m_emptyNotify;
|
|
131
|
+
common::CMutex m_mxSyncNotifications;
|
|
132
|
+
Vector<String> m_arNotifyBody;
|
|
133
|
+
String m_strStatusHide;
|
|
134
|
+
boolean m_bFakeServerResponse;
|
|
135
|
+
boolean m_isInsideCallback;
|
|
136
|
+
|
|
137
|
+
NetRequest m_NetRequest;
|
|
138
|
+
|
|
139
|
+
net::CNetRequestWrapper getNet(){ return getNetRequest(&m_NetRequest); }
|
|
140
|
+
CSyncEngine& getSync(){ return m_syncEngine; }
|
|
141
|
+
public:
|
|
142
|
+
CSyncNotify( CSyncEngine& syncEngine ) : m_syncEngine(syncEngine), m_bEnableReporting(false),
|
|
143
|
+
m_bEnableReportingGlobal(false), m_bFakeServerResponse(false), m_isInsideCallback(false) {}
|
|
144
|
+
|
|
145
|
+
//Object notifications
|
|
146
|
+
void fireObjectsNotification();
|
|
147
|
+
void onObjectChanged(int nSrcID, const String& strObject, int nType);
|
|
148
|
+
void addCreateObjectError(int nSrcID, const String& strObject, const String& strError);
|
|
149
|
+
|
|
150
|
+
void addObjectNotify(int nSrcID, const String& strObject );
|
|
151
|
+
void addObjectNotify(const String& strSrcName, const String& strObject );
|
|
152
|
+
static void setObjectNotification(CObjectNotification* pNotify);
|
|
153
|
+
static CObjectNotification* getObjectNotification();
|
|
154
|
+
void cleanObjectNotifications();
|
|
155
|
+
void cleanCreateObjectErrors();
|
|
156
|
+
|
|
157
|
+
//Sync notifications
|
|
158
|
+
void setSyncNotification(int source_id, CSyncNotification* pNotify);
|
|
159
|
+
void setSearchNotification(CSyncNotification* pNotify);
|
|
160
|
+
|
|
161
|
+
void clearSyncNotification(int source_id);
|
|
162
|
+
|
|
163
|
+
void onSyncSourceEnd( int nSrc, VectorPtr<CSyncSource*>& sources );
|
|
164
|
+
void fireSyncNotification( CSyncSource* psrc, boolean bFinish, int nErrCode, String strMessage);
|
|
165
|
+
void fireSyncNotification2( CSyncSource* src, boolean bFinish, int nErrCode, const Hashtable<String,String>& serverErrors);
|
|
166
|
+
|
|
167
|
+
void fireBulkSyncNotification( boolean bFinish, String status, String partition, int nErrCode );
|
|
168
|
+
|
|
169
|
+
void cleanLastSyncObjectCount();
|
|
170
|
+
int incLastSyncObjectCount(int nSrcID);
|
|
171
|
+
int getLastSyncObjectCount(int nSrcID);
|
|
172
|
+
|
|
173
|
+
void callLoginCallback(const CSyncNotification& oNotify, int nErrCode, String strMessage);
|
|
174
|
+
|
|
175
|
+
boolean isReportingEnabled(){return m_bEnableReporting&&m_bEnableReportingGlobal;}
|
|
176
|
+
bool isStatusPopupEnabled() const { return m_bEnableReportingGlobal; }
|
|
177
|
+
void enableReporting(boolean bEnable){m_bEnableReporting = bEnable;}
|
|
178
|
+
void enableStatusPopup(boolean bEnable){m_bEnableReportingGlobal = bEnable;}
|
|
179
|
+
|
|
180
|
+
const String& getNotifyBody();
|
|
181
|
+
void cleanNotifyBody(){ m_arNotifyBody.removeAllElements(); setFakeServerResponse(false); }
|
|
182
|
+
boolean isFakeServerResponse(){ return m_bFakeServerResponse; }
|
|
183
|
+
void setFakeServerResponse(boolean bFakeServerResponse){ m_bFakeServerResponse = bFakeServerResponse; }
|
|
184
|
+
|
|
185
|
+
void fireAllSyncNotifications( boolean bFinish, int nErrCode, String strError/*, String strServerError*/ );
|
|
186
|
+
void reportSyncStatus(String status, int error, String strDetails);
|
|
187
|
+
void showStatusPopup(const String& status);
|
|
188
|
+
|
|
189
|
+
bool isInsideCallback() const { return m_isInsideCallback; }
|
|
190
|
+
private:
|
|
191
|
+
CSyncNotification* getSyncNotifyBySrc(CSyncSource* src);
|
|
192
|
+
|
|
193
|
+
void appendCreateObjectErrorInfo(int nSrcID, Hashtable< String, Hashtable<String, String> >& result);
|
|
194
|
+
void processSingleObject();
|
|
195
|
+
|
|
196
|
+
void doFireSyncNotification( CSyncSource* src, boolean bFinish, int nErrCode, String strError, const Hashtable<String, String>* params, const Hashtable<String, String>* pServerErrors);
|
|
197
|
+
|
|
198
|
+
boolean callNotify(const CSyncNotification& oNotify, const Hashtable<String, String>& result, const Hashtable<String, Hashtable<String,String> >* l2Result = 0 );
|
|
199
|
+
|
|
200
|
+
void clearNotification(CSyncSource* src);
|
|
201
|
+
|
|
202
|
+
static String notifyParamToStr( const Hashtable<String,String>& result, const Hashtable< String, Hashtable< String, String > >* );
|
|
203
|
+
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
extern "C" void alert_show_status(const char* title, const char* message, const char* szHide);
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/*------------------------------------------------------------------------
|
|
2
|
+
* (The MIT License)
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2008-2011 Rhomobile, Inc.
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*
|
|
24
|
+
* http://rhomobile.com
|
|
25
|
+
|
|
26
|
+
* Copyright (c) 2011-2016 Symbol Technologies, Inc.
|
|
27
|
+
*
|
|
28
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
29
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
30
|
+
* in the Software without restriction, including without limitation the rights
|
|
31
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
32
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
33
|
+
* furnished to do so, subject to the following conditions:
|
|
34
|
+
*
|
|
35
|
+
* The above copyright notice and this permission notice shall be included in
|
|
36
|
+
* all copies or substantial portions of the Software.
|
|
37
|
+
*
|
|
38
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
39
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
40
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
41
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
42
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
43
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
44
|
+
* THE SOFTWARE.
|
|
45
|
+
*
|
|
46
|
+
* http://symbol.com
|
|
47
|
+
*------------------------------------------------------------------------*/
|
|
48
|
+
|
|
49
|
+
#pragma once
|
|
50
|
+
|
|
51
|
+
#include "ISyncProtocol.h"
|
|
52
|
+
#include "net/URI.h"
|
|
53
|
+
#include "common/StringConverter.h"
|
|
54
|
+
#include "common/Tokenizer.h"
|
|
55
|
+
#include "common/RhoFilePath.h"
|
|
56
|
+
#include "json/JSONIterator.h"
|
|
57
|
+
|
|
58
|
+
namespace rho {
|
|
59
|
+
namespace sync {
|
|
60
|
+
|
|
61
|
+
struct CSyncProtocol_3 : public ISyncProtocol
|
|
62
|
+
{
|
|
63
|
+
String m_strContentType;
|
|
64
|
+
String m_strClientIDHeader;
|
|
65
|
+
|
|
66
|
+
CSyncProtocol_3()
|
|
67
|
+
{
|
|
68
|
+
m_strContentType = "application/json";
|
|
69
|
+
m_strClientIDHeader = "X-RhoConnect-CLIENT-ID";
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const String& getClientIDHeader() const { return m_strClientIDHeader; }
|
|
73
|
+
const String& getContentType() const { return m_strContentType; }
|
|
74
|
+
virtual int getVersion() const { return 3; }
|
|
75
|
+
|
|
76
|
+
String getLoginUrl()
|
|
77
|
+
{
|
|
78
|
+
return RHOCONF().getPath("syncserver") + "clientlogin";
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
String getLoginBody( const String& name, const String& password)
|
|
82
|
+
{
|
|
83
|
+
return "{\"login\":" + json::CJSONEntry::quoteValue(name) + ",\"password\":" + json::CJSONEntry::quoteValue(password) + ",\"remember_me\":1}";
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const char* getClientCreateMethod()
|
|
87
|
+
{
|
|
88
|
+
return "GET";
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
String getClientCreateUrl()
|
|
92
|
+
{
|
|
93
|
+
return RHOCONF().getPath("syncserver") + "clientcreate";
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
String getClientRegisterUrl(const String& /*strClientID*/)
|
|
97
|
+
{
|
|
98
|
+
return RHOCONF().getPath("syncserver") + "clientregister";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
String getClientRegisterBody( const String& strClientID, const String& strPin, int nPort, const String& strType, const String& strPhoneID, const String& strDevicePushType)
|
|
102
|
+
{
|
|
103
|
+
return "{\"client_id\":" + json::CJSONEntry::quoteValue(strClientID) +
|
|
104
|
+
",\"device_pin\":" + json::CJSONEntry::quoteValue(strPin) +
|
|
105
|
+
( strPhoneID.length() > 0 ? ",\"phone_id\":" + json::CJSONEntry::quoteValue(strPhoneID) : "") +
|
|
106
|
+
",\"device_port\":" + json::CJSONEntry::quoteValue(common::convertToStringA(nPort)) +
|
|
107
|
+
",\"device_type\":" + json::CJSONEntry::quoteValue(strType) +
|
|
108
|
+
((strDevicePushType.length() > 0) ? (",\"device_push_type\":" + json::CJSONEntry::quoteValue(strDevicePushType)) : String("")) +
|
|
109
|
+
"}";
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
String getClientAnsRegisterBody( const String& strClientID, const String& strPin, int nPort, const String& strType, const String& strPhoneID )
|
|
113
|
+
{
|
|
114
|
+
return "{\"client_id\":" + json::CJSONEntry::quoteValue(strClientID) +
|
|
115
|
+
",\"device_pin\":" + json::CJSONEntry::quoteValue(strPin) +
|
|
116
|
+
( strPhoneID.length() > 0 ? ",\"phone_id\":" + json::CJSONEntry::quoteValue(strPhoneID) : "") +
|
|
117
|
+
",\"device_port\":" + json::CJSONEntry::quoteValue(common::convertToStringA(nPort)) +
|
|
118
|
+
",\"device_type\":" + json::CJSONEntry::quoteValue(strType) +
|
|
119
|
+
",\"device_push_type\":\"rhoconnect_push\"}";
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const char* getClientResetMethod()
|
|
123
|
+
{
|
|
124
|
+
return "GET";
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
String getClientResetUrl(const String& strClientID)
|
|
128
|
+
{
|
|
129
|
+
String strUrl = RHOCONF().getPath("syncserver") + "clientreset?client_id=" + strClientID;
|
|
130
|
+
String strSources = RHOCONF().getString("reset_models");
|
|
131
|
+
rho::common::CTokenizer tokenizer(strSources, ",");
|
|
132
|
+
while(tokenizer.hasMoreTokens()) {
|
|
133
|
+
String source_name = tokenizer.nextToken();
|
|
134
|
+
if(source_name.length() > 0) {
|
|
135
|
+
strUrl += "&sources[][name]=";
|
|
136
|
+
strUrl += source_name;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return strUrl;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
String getClientResetBody()
|
|
143
|
+
{
|
|
144
|
+
return "";
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
String getClientChangesUrl(const String& /*strSrcName*/)
|
|
148
|
+
{
|
|
149
|
+
String strUrl = RHOCONF().getPath("syncserver");
|
|
150
|
+
return strUrl.substr(0,strUrl.length()-1);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
String getServerQueryUrl(const String& strSrcName, const String& strClientID, int nPageSize)
|
|
154
|
+
{
|
|
155
|
+
String strServerUrl = RHOCONF().getPath("syncserver");
|
|
156
|
+
String strUrl = strServerUrl.substr(0,strServerUrl.length()-1);
|
|
157
|
+
|
|
158
|
+
strUrl += "?client_id=" + strClientID
|
|
159
|
+
+ "&p_size=" + common::convertToStringA(nPageSize) + "&version=" + common::convertToStringA(getVersion());
|
|
160
|
+
|
|
161
|
+
if ( strSrcName.length() > 0 )
|
|
162
|
+
strUrl += "&source_name=" + strSrcName;
|
|
163
|
+
|
|
164
|
+
return strUrl;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
const char* getServerSearchMethod()
|
|
168
|
+
{
|
|
169
|
+
return "GET";
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
String getServerSearchUrl(const String& strClientID, int nPageSize, const String& strFrom, const Vector<String>& sources, const Hashtable<String, String>& source_tokens)
|
|
173
|
+
{
|
|
174
|
+
String strUrl = RHOCONF().getPath("syncserver") + strFrom + "?client_id=" + strClientID + "&p_size="
|
|
175
|
+
+ common::convertToStringA(nPageSize) + "&version=" + common::convertToStringA(getVersion());
|
|
176
|
+
|
|
177
|
+
String strSources;
|
|
178
|
+
for ( int i = 0; i < (int)sources.size(); ++i )
|
|
179
|
+
{
|
|
180
|
+
strSources += "&sources[][name]=" + sources[i];
|
|
181
|
+
String strToken = source_tokens.get(sources[i]);
|
|
182
|
+
if(strToken.size() > 0) {
|
|
183
|
+
strSources += "&sources[][token]=" + strToken;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return strUrl + strSources;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
String getServerSearchBody(int nPageSize, const Vector<String>& sources, const Hashtable<String, String>& source_tokens)
|
|
191
|
+
{
|
|
192
|
+
return "";
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
const char* getServerBulkDataMethod()
|
|
196
|
+
{
|
|
197
|
+
return "GET";
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
String getServerBulkDataUrl(const String& strClientID, const String& strPartition, const Vector<String>& sources)
|
|
201
|
+
{
|
|
202
|
+
String strUrl = RHOCONF().getPath("syncserver") + "bulk_data";
|
|
203
|
+
String strParams = "?client_id=" + strClientID + "&partition=" + strPartition + "&sources=";
|
|
204
|
+
for ( int i = 0; i < (int)sources.size(); ++i ) {
|
|
205
|
+
strParams += net::URI::urlEncode(sources[i]);
|
|
206
|
+
if ( i < (int)sources.size()-1 ) {
|
|
207
|
+
strParams += ",";
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return strUrl + strParams;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
String getServerBulkDataBody(const String& strPartition, const Vector<String>& sources)
|
|
214
|
+
{
|
|
215
|
+
return "";
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
}
|
|
220
|
+
}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/*------------------------------------------------------------------------
|
|
2
|
+
* (The MIT License)
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2008-2011 Rhomobile, Inc.
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
* in the Software without restriction, including without limitation the rights
|
|
9
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
* furnished to do so, subject to the following conditions:
|
|
12
|
+
*
|
|
13
|
+
* The above copyright notice and this permission notice shall be included in
|
|
14
|
+
* all copies or substantial portions of the Software.
|
|
15
|
+
*
|
|
16
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
22
|
+
* THE SOFTWARE.
|
|
23
|
+
*
|
|
24
|
+
* http://rhomobile.com
|
|
25
|
+
|
|
26
|
+
* Copyright (c) 2011-2016 Symbol Technologies, Inc.
|
|
27
|
+
*
|
|
28
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
29
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
30
|
+
* in the Software without restriction, including without limitation the rights
|
|
31
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
32
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
33
|
+
* furnished to do so, subject to the following conditions:
|
|
34
|
+
*
|
|
35
|
+
* The above copyright notice and this permission notice shall be included in
|
|
36
|
+
* all copies or substantial portions of the Software.
|
|
37
|
+
*
|
|
38
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
39
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
40
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
41
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
42
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
43
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
44
|
+
* THE SOFTWARE.
|
|
45
|
+
*
|
|
46
|
+
* http://symbol.com
|
|
47
|
+
*------------------------------------------------------------------------*/
|
|
48
|
+
|
|
49
|
+
#pragma once
|
|
50
|
+
|
|
51
|
+
#include "ISyncProtocol.h"
|
|
52
|
+
#include "common/StringConverter.h"
|
|
53
|
+
#include "common/RhoFilePath.h"
|
|
54
|
+
#include "json/JSONIterator.h"
|
|
55
|
+
#include "common/Tokenizer.h"
|
|
56
|
+
|
|
57
|
+
#include <iostream>
|
|
58
|
+
|
|
59
|
+
namespace rho {
|
|
60
|
+
namespace sync {
|
|
61
|
+
|
|
62
|
+
struct CSyncProtocol_4 : public ISyncProtocol
|
|
63
|
+
{
|
|
64
|
+
String m_strContentType;
|
|
65
|
+
String m_strClientIDHeader;
|
|
66
|
+
String m_strAppNamespace;
|
|
67
|
+
String m_strClientNamespace;
|
|
68
|
+
String m_strSANamespace;
|
|
69
|
+
|
|
70
|
+
CSyncProtocol_4()
|
|
71
|
+
{
|
|
72
|
+
m_strContentType = "application/json";
|
|
73
|
+
m_strAppNamespace = "rc/v1/app/";
|
|
74
|
+
m_strClientNamespace = "rc/v1/clients/";
|
|
75
|
+
m_strSANamespace = "app/v1/";
|
|
76
|
+
m_strClientIDHeader = "X-RhoConnect-CLIENT-ID";
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const String& getAppNamespaceUrl()
|
|
80
|
+
{
|
|
81
|
+
return m_strAppNamespace;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const String& getClientNamespaceUrl()
|
|
85
|
+
{
|
|
86
|
+
return m_strClientNamespace;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const String& getSANamespaceUrl()
|
|
90
|
+
{
|
|
91
|
+
return m_strSANamespace;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const String& getClientIDHeader() const { return m_strClientIDHeader; }
|
|
95
|
+
const String& getContentType() const { return m_strContentType; }
|
|
96
|
+
virtual int getVersion() const { return 3; }
|
|
97
|
+
|
|
98
|
+
String getLoginUrl()
|
|
99
|
+
{
|
|
100
|
+
return RHOCONF().getPath("syncserver") + getAppNamespaceUrl() + "login";
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
String getLoginBody( const String& name, const String& password)
|
|
104
|
+
{
|
|
105
|
+
return "{\"login\":" + json::CJSONEntry::quoteValue(name) + ",\"password\":" + json::CJSONEntry::quoteValue(password) + ",\"remember_me\":1}";
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const char* getClientCreateMethod()
|
|
109
|
+
{
|
|
110
|
+
return "POST";
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
String getClientCreateUrl()
|
|
114
|
+
{
|
|
115
|
+
String strUrl = RHOCONF().getPath("syncserver") + getClientNamespaceUrl();
|
|
116
|
+
return strUrl.substr(0, strUrl.length() - 1);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
String getClientRegisterUrl(const String& strClientID)
|
|
120
|
+
{
|
|
121
|
+
return RHOCONF().getPath("syncserver") + getClientNamespaceUrl() + strClientID + "/register";
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
String getClientRegisterBody( const String& /*strClientID*/, const String& strPin, int nPort, const String& strType, const String& strPhoneID, const String& strDevicePushType)
|
|
125
|
+
{
|
|
126
|
+
String strPort = "";
|
|
127
|
+
if (nPort != 0) {
|
|
128
|
+
strPort = common::convertToStringA(nPort);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return "{\"device_pin\":" + json::CJSONEntry::quoteValue(strPin) +
|
|
132
|
+
( strPhoneID.length() > 0 ? ",\"phone_id\":" + json::CJSONEntry::quoteValue(strPhoneID) : "") +
|
|
133
|
+
",\"device_port\":" + json::CJSONEntry::quoteValue(strPort) +
|
|
134
|
+
",\"device_type\":" + json::CJSONEntry::quoteValue(strType) +
|
|
135
|
+
",\"device_push_type\":" + json::CJSONEntry::quoteValue(strDevicePushType) +
|
|
136
|
+
"}";
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
String getClientAnsRegisterBody( const String& /*strClientID*/, const String& strPin, int nPort, const String& strType, const String& strPhoneID )
|
|
140
|
+
{
|
|
141
|
+
return "{\"device_pin\":" + json::CJSONEntry::quoteValue(strPin) +
|
|
142
|
+
( strPhoneID.length() > 0 ? ",\"phone_id\":" + json::CJSONEntry::quoteValue(strPhoneID) : "") +
|
|
143
|
+
",\"device_port\":" + json::CJSONEntry::quoteValue(common::convertToStringA(nPort)) +
|
|
144
|
+
",\"device_type\":" + json::CJSONEntry::quoteValue(strType) +
|
|
145
|
+
",\"device_push_type\":\"rhoconnect_push\"}";
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
const char* getClientResetMethod()
|
|
149
|
+
{
|
|
150
|
+
return "POST";
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
String getClientResetUrl(const String& strClientID)
|
|
154
|
+
{
|
|
155
|
+
return RHOCONF().getPath("syncserver") + getClientNamespaceUrl() + strClientID + "/reset";
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
String getClientResetBody()
|
|
159
|
+
{
|
|
160
|
+
String strBody;
|
|
161
|
+
String strSources = RHOCONF().getString("reset_models");
|
|
162
|
+
rho::common::CTokenizer tokenizer(strSources, ",");
|
|
163
|
+
String strJSONSources;
|
|
164
|
+
while(tokenizer.hasMoreTokens()) {
|
|
165
|
+
String source_name = tokenizer.nextToken();
|
|
166
|
+
if(source_name.length() > 0) {
|
|
167
|
+
|
|
168
|
+
if (strJSONSources.length() > 0) {
|
|
169
|
+
strJSONSources += ",";
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
strJSONSources += "{\"name\":";
|
|
173
|
+
strJSONSources += json::CJSONEntry::quoteValue(source_name);
|
|
174
|
+
strJSONSources += "}";
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if(strJSONSources.size()) {
|
|
178
|
+
strBody += "{\"sources\":[";
|
|
179
|
+
strBody += strJSONSources;
|
|
180
|
+
strBody += "]}";
|
|
181
|
+
}
|
|
182
|
+
return strBody;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
String getClientChangesUrl(const String& strSrcName)
|
|
186
|
+
{
|
|
187
|
+
return RHOCONF().getPath("syncserver") + getSANamespaceUrl() + strSrcName;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
String getServerQueryUrl(const String& strSrcName, const String& strClientID, int nPageSize)
|
|
191
|
+
{
|
|
192
|
+
String strUrl = RHOCONF().getPath("syncserver") + getSANamespaceUrl() + strSrcName;
|
|
193
|
+
strUrl += "?p_size=" + common::convertToStringA(nPageSize) + "&version=" + common::convertToStringA(getVersion());
|
|
194
|
+
return strUrl;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const char* getServerSearchMethod()
|
|
198
|
+
{
|
|
199
|
+
return "POST";
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
String getServerSearchUrl(const String& strClientID, int nPageSize, const String& strFrom, const Vector<String>& sources, const Hashtable<String, String>& source_tokens)
|
|
203
|
+
{
|
|
204
|
+
return RHOCONF().getPath("syncserver") + getAppNamespaceUrl() + strFrom +
|
|
205
|
+
"?p_size=" + common::convertToStringA(nPageSize) + "&version=" + common::convertToStringA(getVersion());
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
String getServerSearchBody(int nPageSize, const Vector<String>& sources, const Hashtable<String, String>& source_tokens )
|
|
209
|
+
{
|
|
210
|
+
String strJSONSources;
|
|
211
|
+
for (int i = 0; i < (int)sources.size(); ++i )
|
|
212
|
+
{
|
|
213
|
+
strJSONSources += "{\"name\":";
|
|
214
|
+
strJSONSources += json::CJSONEntry::quoteValue(sources[i]);
|
|
215
|
+
String strToken = source_tokens.get(sources[i]);
|
|
216
|
+
if(strToken.length() > 0) {
|
|
217
|
+
strJSONSources += ",\"token\":";
|
|
218
|
+
strJSONSources += json::CJSONEntry::quoteValue(strToken);
|
|
219
|
+
}
|
|
220
|
+
strJSONSources += "}";
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
String strBody;
|
|
224
|
+
if(strJSONSources.length() > 0) {
|
|
225
|
+
strBody += "\"sources\":[";
|
|
226
|
+
strBody += strJSONSources;
|
|
227
|
+
strBody += "]";
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if(strBody.size() > 0)
|
|
231
|
+
strBody = String("{") + strBody + "}";
|
|
232
|
+
|
|
233
|
+
return strBody;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const char* getServerBulkDataMethod()
|
|
237
|
+
{
|
|
238
|
+
return "POST";
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
String getServerBulkDataUrl(const String& strClientID, const String& strPartition, const Vector<String>& sources)
|
|
242
|
+
{
|
|
243
|
+
return RHOCONF().getPath("syncserver") + getAppNamespaceUrl() + "bulk_data";
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
String getServerBulkDataBody(const String& strPartition, const Vector<String>& sources)
|
|
247
|
+
{
|
|
248
|
+
String strBody = "{\"partition\":";
|
|
249
|
+
strBody += json::CJSONEntry::quoteValue(strPartition);
|
|
250
|
+
strBody += ",\"sources\":";
|
|
251
|
+
strBody += json::CJSONEntry::toJSON(sources);
|
|
252
|
+
strBody += "}";
|
|
253
|
+
|
|
254
|
+
return strBody;
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
}
|
|
259
|
+
}
|