moved cloud subsystem under plus

This commit is contained in:
Eric 2023-06-04 21:43:02 -07:00
parent a393d014a6
commit 93901f27e7
No known key found for this signature in database
GPG Key ID: 89C93F0F8D6D5A98
11 changed files with 77 additions and 65 deletions

View File

@ -4072,50 +4072,50 @@
"build/assets/workspace/ninjafightplug.py": "https://files.ballistica.net/cache/ba1/c5/09/4f10b8a21ba87aa5509cff7a164b",
"build/assets/workspace/onslaughtplug.py": "https://files.ballistica.net/cache/ba1/ff/0a/a354984f9c074dab0676ac7e4877",
"build/assets/workspace/runaroundplug.py": "https://files.ballistica.net/cache/ba1/2a/1c/9ee5db6d1bceca7fa6638fb8abde",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/82/20/d88ac9183152d3fff627c085156b",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/27/bd/08e8940bf210e405498e22c5a562",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/61/6e/21407a080ea17b106bdd8f76dc1b",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/54/96/c8a9a5f6d1a9beff596fa933f7c7",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/4c/87/6465e89fc281a13474e80b3830cc",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/5c/83/67b651e2873751f56f0f68eeb356",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/df/73/75f0101efebeb4dca2cc106880b9",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/26/02/69eb7a7719ff1549a200bbfda9e6",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/64/44/b3f73b55e0ad8607004eadfb26a0",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/53/5e/6562e551f506dd6ab758eef90b8e",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/3b/e7/d23a4ebce96bd2b0aa4afca690cd",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/bf/5d/edb9317ef7a0aefd1123c3e37b0d",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/26/0a/2f0bf14a05e9a301bd39f72e93f3",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/29/bc/072199165f1d4f37c789f5495582",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/0f/7d/aa71783907138adbb07918581fad",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/a3/9b/06ad43e3e318cd42ae2632a45555",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/46/d9/2a66ac6c6f8b4227876e35d127ce",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/1b/16/91b80d81b3d517f258e80c8a8a40",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/97/e2/55c945ef87a0271dba2667695d93",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/f4/09/a4348a49f4340bd4d69b87b6a277",
"build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/d8/0d/b5717dd9fd02bcbe914bf071c978",
"build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/b5/29/14ac971b2cdea603a2a57e1e94c7",
"build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/6d/4f/1b7acb823bd7503e0ed8ee619295",
"build/prefab/lib/linux_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/93/76/765a91d310cdb00e75cb81774145",
"build/prefab/lib/linux_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/ba/02/09d36a52e5cdaf42c01e06c7b47b",
"build/prefab/lib/linux_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/c6/22/1e9463ab9fd863b31e2653d4a8c0",
"build/prefab/lib/linux_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/9c/25/49b7b8dc100e249ee6b65066db1e",
"build/prefab/lib/linux_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/e6/0c/e61fe4918c0a966056be240cac10",
"build/prefab/lib/mac_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/aa/be/5e218d5966608f01e2512ea80bd3",
"build/prefab/lib/mac_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/86/20/e7a96baf84f78de0f24bef3f7305",
"build/prefab/lib/mac_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/28/20/64a26bad7cb6b5c0db53b1bb3124",
"build/prefab/lib/mac_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/07/04/3290f33262d54af2d8b44fe87eed",
"build/prefab/lib/mac_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/2a/38/0ca29cce468e61421829d3bacae3",
"build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/aa/48/320c3e3858c0fd25c304922f6602",
"build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/48/4f/4fc37b53ccc62c552b5255306912",
"build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/d7/0b/e41f188e0425316039315b238e72",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/52/ce/f22e458249e21addd27e4138da94",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/21/59/ad3bf492800dbaca2b2edca48fe2",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/c3/e8/9c75f61b01c5b9ae66f66cd19666",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/e3/13/ff1c971694f6c9d9854bd2666e07",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/b7/e1/809a020e16a1933e53606a8e0283",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/19/e8/25e93d897669ef9fd075e397b8f2",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/a5/aa/0f903bb779e465f14ff842f6303f",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/d0/ee/7dc6b4aff72fa9d9bdf9a709d99b",
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/c0/79/2c4deedb2f4ae0605fb23b470e5e",
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/84/53/b2997dafa33a556edf38fb718a64",
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/68/39/967044137522d0f63dad68964121",
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/b1/d9/9bb7d41fb9cef93b337b4130f2c6",
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/6a/f2/f5a39157492836a8951617cf1c52",
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/51/6d/c4d30cc9b6a2a2307b5ace1034c7",
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/f1/b3/cb1337766bdc80e8044301a94684",
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/75/f1/e920b2dca679bdea3f380c5c3d79",
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/75/ad/6198226b21406baf4ded590d93c3",
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/30/04/8f96290ae08af4aba87dddca1eb1",
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/ec/91/922e12835d497541fdd0d1ef0b4e",
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/50/09/59ebde4bf5f04f2ffef0eb996ab3",
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "https://files.ballistica.net/cache/ba1/06/d6/ce832cdc3190f28044fd126f2484",
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "https://files.ballistica.net/cache/ba1/57/10/4263803ef2547c767a1c00117362",
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/8a/40/00e7b3f482a9d18e02b54a987b15",
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "https://files.ballistica.net/cache/ba1/b9/c7/6eca9bd7f422031d5fb71ec516a5",
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/50/af/6f04a9dda5c2159cddc6b86fdb7c",
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "https://files.ballistica.net/cache/ba1/79/8b/7e56ca7e472eb16cc092dd5bfaea",
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/05/cc/0c39b74a642940c4161d51f18af1",
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "https://files.ballistica.net/cache/ba1/9b/4d/0554caf4dc0280ec827f68007e1e",
"build/prefab/lib/linux_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/98/32/43c61f1e11520f764158cf0e76d2",
"build/prefab/lib/linux_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/ca/65/cba463f21a8f76c5bbfe27cae124",
"build/prefab/lib/linux_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/73/20/119211f1700bb5a410cedf4e76f2",
"build/prefab/lib/linux_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/8d/55/58ffef5d09ca7c847ad2e674f9f9",
"build/prefab/lib/linux_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/80/18/f77f052c4514d3bcc0299594285c",
"build/prefab/lib/linux_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/a3/8f/2c7069902d3f9fa98c7f9c345884",
"build/prefab/lib/linux_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/22/7d/d1e7667acdf504c29c54eda43d00",
"build/prefab/lib/linux_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/8e/02/3f64deedf1c0c88f781881728bdb",
"build/prefab/lib/mac_arm64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/0a/6f/8bd8cc4ce90122b36cfb118d3836",
"build/prefab/lib/mac_arm64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/22/18/7b1cbe406b13912238de646a60d1",
"build/prefab/lib/mac_arm64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/4a/44/4611522a4b8b990bf1b68fe99d63",
"build/prefab/lib/mac_arm64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/db/08/eb66fb1cad77c1254cb68b1fc654",
"build/prefab/lib/mac_x86_64_gui/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/c0/f5/4754225adea89e17231c924cfd96",
"build/prefab/lib/mac_x86_64_gui/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/90/9b/94f733c3a48691e02240e04dc792",
"build/prefab/lib/mac_x86_64_server/debug/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/2e/c7/873af48627997b6fab4b2c4ba6bc",
"build/prefab/lib/mac_x86_64_server/release/libballistica_plus.a": "https://files.ballistica.net/cache/ba1/3a/94/4780fada10f0fc3f43a54f29c86f",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/c4/91/26a6577d3b18a3f7969ac2c34e5b",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/05/d3/45935dd94690fff9ffc59b66f7cd",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/56/ca/5f10225d3168b509d5017eca3e7f",
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/53/8f/f0a21bddc5327dbb6e2c35d1fba5",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "https://files.ballistica.net/cache/ba1/d9/e0/cbf307d586ae14a58d86fe511667",
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "https://files.ballistica.net/cache/ba1/e5/3d/2bc8f7e395279fa84fdaac18e86c",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "https://files.ballistica.net/cache/ba1/bd/51/d1c0bc28c859926ce83c240287c0",
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "https://files.ballistica.net/cache/ba1/20/1b/1ae6a6ce9e4d91842d3d42416007",
"src/assets/ba_data/python/babase/_mgen/__init__.py": "https://files.ballistica.net/cache/ba1/52/c6/c11130af7b10d6c0321add5518fa",
"src/assets/ba_data/python/babase/_mgen/enums.py": "https://files.ballistica.net/cache/ba1/38/c3/1dedd5e74f2508efc5974c8815a1",
"src/ballistica/base/mgen/pyembed/binding_base.inc": "https://files.ballistica.net/cache/ba1/d5/4a/0e480a855ce83709bd7f6761107d",

View File

@ -255,11 +255,13 @@
precompiled native portion of the `plus` feature set). Also by removing the
'kit' from the end it will no longer be renamed in spinoff projects, meaning
we should be able to recycle the same built libraries in those cases.
- Moved `babase.app.accounts` to `babase.app.plus.accounts`. This is a little
more verbose but is cleaner in a way since that functionality is part of plus
and is not available when plus is missing. So now there's
`babase.app.classic.accounts` for v1 stuff and `babase.app.plus.accounts` for
v2 stuff.
- Moved the `ba*.app.accounts` subsystem to `ba*.app.plus.accounts`. This is a
little more verbose but is cleaner in a way since that functionality is part
of plus and is not available when plus is missing. So now there's
`ba*.app.classic.accounts` for v1 stuff and `ba*.app.plus.accounts` for v2
stuff.
- For similar reasons, moved the `ba*.app.cloud` subsystem to
`ba*.app.plus.cloud`.
### 1.7.19 (build 20997, api 7, 2023-01-19)

View File

@ -289,7 +289,7 @@ class AccountV2Subsystem:
# switching accounts via the back-end).
# NOTE: should test case where we don't have
# connectivity here.
if _babase.app.cloud.is_connected():
if plus.cloud.is_connected():
if DEBUG_LOG:
logging.debug(
'AccountV2: Signing in as result'
@ -316,7 +316,7 @@ class AccountV2Subsystem:
# in as a rule, even if there are corner cases where this might
# not be what they want (A user signing out and then restarting
# may be auto-signed back in).
connected = _babase.app.cloud.is_connected()
connected = plus.cloud.is_connected()
signed_in_v1 = plus.get_v1_account_state() == 'signed_in'
signed_in_v2 = plus.accounts.have_primary_credentials()
if (
@ -400,7 +400,7 @@ class AccountV2Subsystem:
# plug in the credentials we got. We want to be extra cautious
# in case the user has since explicitly signed in since we
# kicked off.
connected = _babase.app.cloud.is_connected()
connected = plus.cloud.is_connected()
signed_in_v1 = plus.get_v1_account_state() == 'signed_in'
signed_in_v2 = plus.accounts.have_primary_credentials()
if connected and not signed_in_v1 and not signed_in_v2:

View File

@ -27,7 +27,7 @@ if TYPE_CHECKING:
from efro.log import LogHandler
import babase
from babase import CloudSubsystem, AppIntent, AppMode, AppSubsystem
from babase import AppIntent, AppMode, AppSubsystem
from babase._apputils import AppHealthMonitor
# __FEATURESET_APP_SUBSYSTEM_IMPORTS_BEGIN__
@ -52,7 +52,6 @@ class App:
# pylint: disable=too-many-public-methods
cloud: CloudSubsystem
plugins: PluginSubsystem
# log_handler: LogHandler

View File

@ -257,7 +257,8 @@ class LoginAdapter:
)
_babase.pushcall(Call(result_cb, self, result2))
_babase.app.cloud.send_message_cb(
assert _babase.app.plus is not None
_babase.app.plus.cloud.send_message_cb(
bacommon.cloud.SignInMessage(
self.login_type,
result,

View File

@ -75,6 +75,9 @@ class WorkspaceSubsystem:
class _SkipSyncError(RuntimeError):
pass
plus = _babase.app.plus
assert plus is not None
set_path = True
wspath = Path(
_babase.get_volatile_data_directory(), 'workspaces', workspaceid
@ -83,7 +86,7 @@ class WorkspaceSubsystem:
# If it seems we're offline, don't even attempt a sync,
# but allow using the previous synced state.
# (is this a good idea?)
if not _babase.app.cloud.is_connected():
if not plus.cloud.is_connected():
raise _SkipSyncError()
manifest = DirectoryManifest.create_from_disk(wspath)
@ -94,7 +97,7 @@ class WorkspaceSubsystem:
while True:
with account:
response = _babase.app.cloud.send_message(
response = plus.cloud.send_message(
bacommon.cloud.WorkspaceFetchMessage(
workspaceid=workspaceid, state=state
)

View File

@ -11,7 +11,7 @@ from babase._appsubsystem import AppSubsystem
if TYPE_CHECKING:
from typing import Callable, Any
from babase import App
from babase import App, CloudSubsystem
from babase._accountv2 import AccountV2Subsystem
@ -31,6 +31,7 @@ class PlusSubsystem(AppSubsystem):
# the overhead of this wrapper at runtime.
accounts: AccountV2Subsystem
cloud: CloudSubsystem
def on_app_launching(self) -> None:
"""(internal)"""

View File

@ -1175,7 +1175,7 @@ class AccountSettingsWindow(bui.Window):
return
with plus.accounts.primary:
bui.app.cloud.send_message_cb(
plus.cloud.send_message_cb(
bacommon.cloud.ManageAccountMessage(),
on_response=bui.WeakCall(self._on_manage_account_response),
)

View File

@ -74,7 +74,8 @@ class V2ProxySignInWindow(bui.Window):
self._update_timer: bui.AppTimer | None = None
# Ask the cloud for a proxy login id.
bui.app.cloud.send_message_cb(
assert bui.app.plus is not None
bui.app.plus.cloud.send_message_cb(
bacommon.cloud.LoginProxyRequestMessage(),
on_response=bui.WeakCall(self._on_proxy_request_response),
)
@ -162,7 +163,8 @@ class V2ProxySignInWindow(bui.Window):
def _ask_for_status(self) -> None:
assert self._proxyid is not None
assert self._proxykey is not None
bui.app.cloud.send_message_cb(
assert bui.app.plus is not None
bui.app.plus.cloud.send_message_cb(
bacommon.cloud.LoginProxyStateQueryMessage(
proxyid=self._proxyid, proxykey=self._proxykey
),
@ -197,7 +199,7 @@ class V2ProxySignInWindow(bui.Window):
# so it can clean up (not a huge deal if this fails)
assert self._proxyid is not None
try:
bui.app.cloud.send_message_cb(
plus.cloud.send_message_cb(
bacommon.cloud.LoginProxyCompleteMessage(
proxyid=self._proxyid
),

View File

@ -370,7 +370,8 @@ def _test_v2_cloud_message() -> None:
def _send() -> None:
# Note: this runs in another thread so need to avoid exceptions.
results.send_time = time.monotonic()
bui.app.cloud.send_message_cb(bacommon.cloud.PingMessage(), _cb)
assert bui.app.plus is not None
bui.app.plus.cloud.send_message_cb(bacommon.cloud.PingMessage(), _cb)
# This stuff expects to be run from the logic thread.
bui.pushcall(_send, from_other_thread=True)

View File

@ -1373,10 +1373,13 @@ def _check_merch_availability_in_bg_thread() -> None:
# Merch is available from some countries only.
# Make a reasonable check to ask the master-server about this at
# launch and store the results.
plus = bui.app.plus
assert plus is not None
for _i in range(15):
try:
if bui.app.cloud.is_connected():
response = bui.app.cloud.send_message(
if plus.cloud.is_connected():
response = plus.cloud.send_message(
bacommon.cloud.MerchAvailabilityMessage()
)