11# TODO: Update type checking based with RSDK-4089
22# pyright: reportGeneralTypeIssues=false
3- from google .api .httpbody_pb2 import HttpBody # type: ignore
43from grpclib .server import Stream
54
6- from viam .media . video import CameraMimeType
5+ from viam .errors import NotSupportedError
76from viam .proto .common import DoCommandRequest , DoCommandResponse , GetGeometriesRequest , GetGeometriesResponse
87from viam .proto .component .camera import (
98 CameraServiceBase ,
10- GetImageRequest ,
11- GetImageResponse ,
129 GetImagesRequest ,
1310 GetImagesResponse ,
1411 GetPointCloudRequest ,
1512 GetPointCloudResponse ,
1613 GetPropertiesRequest ,
1714 GetPropertiesResponse ,
1815 Image ,
19- RenderFrameRequest ,
2016)
2117from viam .resource .rpc_service_base import ResourceRPCServiceBase
2218from viam .utils import dict_to_struct , struct_to_dict
@@ -31,16 +27,13 @@ class CameraRPCService(CameraServiceBase, ResourceRPCServiceBase[Camera]):
3127
3228 RESOURCE_TYPE = Camera
3329
34- async def GetImage (self , stream : Stream [GetImageRequest , GetImageResponse ]) -> None :
35- request = await stream .recv_message ()
36- assert request is not None
37- name = request .name
38- camera = self .get_resource (name )
30+ async def GetImage (self , stream : Stream ) -> None :
31+ """Deprecated: Use GetImages instead."""
32+ raise NotSupportedError ("GetImage is deprecated. Use GetImages instead." )
3933
40- timeout = stream .deadline .time_remaining () if stream .deadline else None
41- image = await camera .get_image (request .mime_type , extra = struct_to_dict (request .extra ), timeout = timeout , metadata = stream .metadata )
42- response = GetImageResponse (mime_type = image .mime_type , image = image .data )
43- await stream .send_message (response )
34+ async def RenderFrame (self , stream : Stream ) -> None :
35+ """Deprecated: Use GetImages instead."""
36+ raise NotSupportedError ("RenderFrame is deprecated. Use GetImages instead." )
4437
4538 async def GetImages (self , stream : Stream [GetImagesRequest , GetImagesResponse ]) -> None :
4639 request = await stream .recv_message ()
@@ -56,25 +49,11 @@ async def GetImages(self, stream: Stream[GetImagesRequest, GetImagesResponse]) -
5649 )
5750 img_bytes_lst = []
5851 for img in images :
59- mime_type = CameraMimeType .from_string (img .mime_type )
60- # TODO(RSDK-11728): remove this fmt logic once we deleted the format field
61- fmt = mime_type .to_proto () # Will be Format.FORMAT_UNSPECIFIED if an unsupported/custom mime type is set
62-
6352 img_bytes = img .data
64- img_bytes_lst .append (Image (source_name = img .name , mime_type = img .mime_type , format = fmt , image = img_bytes ))
53+ img_bytes_lst .append (Image (source_name = img .name , mime_type = img .mime_type , image = img_bytes ))
6554 response = GetImagesResponse (images = img_bytes_lst , response_metadata = metadata )
6655 await stream .send_message (response )
6756
68- async def RenderFrame (self , stream : Stream [RenderFrameRequest , HttpBody ]) -> None : # pyright: ignore [reportInvalidTypeForm]
69- request = await stream .recv_message ()
70- assert request is not None
71- name = request .name
72- camera = self .get_resource (name )
73- timeout = stream .deadline .time_remaining () if stream .deadline else None
74- image = await camera .get_image (request .mime_type , timeout = timeout , metadata = stream .metadata )
75- response = HttpBody (data = image .data , content_type = image .mime_type ) # type: ignore
76- await stream .send_message (response )
77-
7857 async def GetPointCloud (self , stream : Stream [GetPointCloudRequest , GetPointCloudResponse ]) -> None :
7958 request = await stream .recv_message ()
8059 assert request is not None
0 commit comments