@@ -213,6 +213,16 @@ def analyze(
213213 """Return all details about filename."""
214214 raise NotImplementedError
215215
216+ def signed (
217+ self ,
218+ action : types .SignedAction ,
219+ duration : int ,
220+ location : types .Location ,
221+ extras : dict [str , Any ],
222+ ) -> str :
223+ """Make an URL for signed action."""
224+ raise NotImplementedError
225+
216226
217227class Reader (StorageService ):
218228 """Service responsible for reading data from the storage.
@@ -558,6 +568,17 @@ def analyze(self, location: types.Location, /, **kwargs: Any) -> data.FileData:
558568 """Return file details for the given location."""
559569 return self .manager .analyze (location , kwargs )
560570
571+ @requires_capability (Capability .SIGNED )
572+ def signed (
573+ self ,
574+ action : types .SignedAction ,
575+ duration : int ,
576+ location : types .Location ,
577+ ** kwargs : Any ,
578+ ) -> str :
579+ """Make an URL for signed action."""
580+ return self .manager .signed (action , duration , location , kwargs )
581+
561582 @requires_capability (Capability .STREAM )
562583 def stream (self , data : data .FileData , / , ** kwargs : Any ) -> Iterable [bytes ]:
563584 """Return the stream of file's content."""
0 commit comments