Add BaseRPCHandler

This commit is contained in:
Ivan Kravets
2023-05-02 21:47:10 +03:00
parent f6aa95a4fe
commit 7876626f04
10 changed files with 34 additions and 8 deletions

View File

@ -15,9 +15,10 @@
from ajsonrpc.core import JSONRPC20DispatchException from ajsonrpc.core import JSONRPC20DispatchException
from platformio.account.client import AccountClient from platformio.account.client import AccountClient
from platformio.home.rpc.handlers.base import BaseRPCHandler
class AccountRPC: class AccountRPC(BaseRPCHandler):
@staticmethod @staticmethod
def call_client(method, *args, **kwargs): def call_client(method, *args, **kwargs):
try: try:

View File

@ -16,11 +16,12 @@ import os
from pathlib import Path from pathlib import Path
from platformio import __version__, app, fs, util from platformio import __version__, app, fs, util
from platformio.home.rpc.handlers.base import BaseRPCHandler
from platformio.project.config import ProjectConfig from platformio.project.config import ProjectConfig
from platformio.project.helpers import is_platformio_project from platformio.project.helpers import is_platformio_project
class AppRPC: class AppRPC(BaseRPCHandler):
IGNORE_STORAGE_KEYS = [ IGNORE_STORAGE_KEYS = [
"cid", "cid",
"coreVersion", "coreVersion",

View File

@ -0,0 +1,17 @@
# Copyright (c) 2014-present PlatformIO <contact@platformio.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
class BaseRPCHandler:
factory = None

View File

@ -18,9 +18,10 @@ from pathlib import Path
from ajsonrpc.core import JSONRPC20DispatchException from ajsonrpc.core import JSONRPC20DispatchException
from platformio.compat import aio_get_running_loop from platformio.compat import aio_get_running_loop
from platformio.home.rpc.handlers.base import BaseRPCHandler
class IDERPC: class IDERPC(BaseRPCHandler):
COMMAND_TIMEOUT = 1.5 # in seconds COMMAND_TIMEOUT = 1.5 # in seconds
def __init__(self): def __init__(self):

View File

@ -17,10 +17,11 @@ import time
from platformio.cache import ContentCache from platformio.cache import ContentCache
from platformio.compat import aio_create_task from platformio.compat import aio_create_task
from platformio.home.rpc.handlers.base import BaseRPCHandler
from platformio.home.rpc.handlers.os import OSRPC from platformio.home.rpc.handlers.os import OSRPC
class MiscRPC: class MiscRPC(BaseRPCHandler):
async def load_latest_tweets(self, data_url): async def load_latest_tweets(self, data_url):
cache_key = ContentCache.key_from_args(data_url, "tweets") cache_key = ContentCache.key_from_args(data_url, "tweets")
cache_valid = "180d" cache_valid = "180d"

View File

@ -24,6 +24,7 @@ from starlette.concurrency import run_in_threadpool
from platformio import fs from platformio import fs
from platformio.cache import ContentCache from platformio.cache import ContentCache
from platformio.device.list.util import list_logical_devices from platformio.device.list.util import list_logical_devices
from platformio.home.rpc.handlers.base import BaseRPCHandler
from platformio.http import HTTPSession, ensure_internet_on from platformio.http import HTTPSession, ensure_internet_on
@ -35,7 +36,7 @@ class HTTPAsyncSession(HTTPSession):
return await run_in_threadpool(func, *args, **kwargs) return await run_in_threadpool(func, *args, **kwargs)
class OSRPC: class OSRPC(BaseRPCHandler):
@staticmethod @staticmethod
async def fetch_content(url, data=None, headers=None, cache_valid=None): async def fetch_content(url, data=None, headers=None, cache_valid=None):
if not headers: if not headers:

View File

@ -12,11 +12,12 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from platformio.home.rpc.handlers.base import BaseRPCHandler
from platformio.package.manager.platform import PlatformPackageManager from platformio.package.manager.platform import PlatformPackageManager
from platformio.platform.factory import PlatformFactory from platformio.platform.factory import PlatformFactory
class PlatformRPC: class PlatformRPC(BaseRPCHandler):
@staticmethod @staticmethod
def list_installed(options=None): def list_installed(options=None):
result = [] result = []

View File

@ -20,6 +20,7 @@ from ajsonrpc.core import JSONRPC20DispatchException
from platformio import exception, fs from platformio import exception, fs
from platformio.home.rpc.handlers.app import AppRPC from platformio.home.rpc.handlers.app import AppRPC
from platformio.home.rpc.handlers.base import BaseRPCHandler
from platformio.home.rpc.handlers.piocore import PIOCoreRPC from platformio.home.rpc.handlers.piocore import PIOCoreRPC
from platformio.package.manager.platform import PlatformPackageManager from platformio.package.manager.platform import PlatformPackageManager
from platformio.project.config import ProjectConfig from platformio.project.config import ProjectConfig
@ -29,7 +30,7 @@ from platformio.project.integration.generator import ProjectGenerator
from platformio.project.options import get_config_options_schema from platformio.project.options import get_config_options_schema
class ProjectRPC: class ProjectRPC(BaseRPCHandler):
@staticmethod @staticmethod
def config_call(init_kwargs, method, *args): def config_call(init_kwargs, method, *args):
assert isinstance(init_kwargs, dict) assert isinstance(init_kwargs, dict)

View File

@ -15,10 +15,11 @@
from ajsonrpc.core import JSONRPC20DispatchException from ajsonrpc.core import JSONRPC20DispatchException
from starlette.concurrency import run_in_threadpool from starlette.concurrency import run_in_threadpool
from platformio.home.rpc.handlers.base import BaseRPCHandler
from platformio.registry.client import RegistryClient from platformio.registry.client import RegistryClient
class RegistryRPC: class RegistryRPC(BaseRPCHandler):
@staticmethod @staticmethod
async def call_client(method, *args, **kwargs): async def call_client(method, *args, **kwargs):
try: try:

View File

@ -37,6 +37,7 @@ class JSONRPCServerFactoryBase:
raise NotImplementedError raise NotImplementedError
def add_object_handler(self, handler, namespace): def add_object_handler(self, handler, namespace):
handler.factory = self
self.manager.dispatcher.add_object(handler, prefix="%s." % namespace) self.manager.dispatcher.add_object(handler, prefix="%s." % namespace)
def on_client_connect(self): def on_client_connect(self):