27
27
# ManifestStoreReader = c2pa.ManifestStoreReader
28
28
class Reader (c2pa .Reader ):
29
29
def __init__ (self , format , stream ):
30
- self .format = format
31
- self .stream = C2paStream (stream )
32
30
super ().__init__ ()
31
+ self .read (format , C2paStream (stream ))
33
32
34
- def from_file (path : str , format = None ):
33
+ @classmethod
34
+ def from_file (cls , path : str , format = None ):
35
35
file = open (path , "rb" )
36
36
if format is None :
37
37
# determine the format from the file extension
38
38
format = os .path .splitext (path )[1 ][1 :]
39
- reader = Reader (format , file )
40
- return reader
41
-
42
- def read (self ):
43
- return super ().read (self .format , self .stream )
39
+ return cls (format , file )
44
40
45
41
def resource (self , uri , stream ) -> None :
46
- super ().resource (uri , C2paStream (stream ))
42
+ return super ().resource (uri , C2paStream (stream ))
47
43
48
44
def resource_file (self , uri , path ) -> None :
49
45
file = open (path , "wb" )
50
- self .resource (uri , file )
46
+ return self .resource (uri , file )
51
47
52
48
53
49
class Builder (c2pa .Builder ):
@@ -60,24 +56,34 @@ def __init__(self, signer, manifest = None):
60
56
def set_manifest (self , manifest ):
61
57
if not isinstance (manifest , str ):
62
58
manifest = json .dumps (manifest )
63
- self .with_json (manifest )
59
+ super () .with_json (manifest )
64
60
return self
65
61
66
62
def add_resource (self , uri , stream ):
67
- return super ().add_resource (uri , stream )
63
+ return super ().add_resource (uri , C2paStream ( stream ) )
68
64
69
65
def add_resource_file (self , uri , path ):
70
- stream = C2paStream .open_file (path , "rb" )
71
- return self .add_resource (uri , stream )
66
+ file = open (path , "rb" )
67
+ return self .add_resource (uri , file )
68
+
69
+ def add_ingredient (self , ingredient , format , stream ):
70
+ if not isinstance (ingredient , str ):
71
+ ingredient = json .dumps (ingredient )
72
+ return super ().add_ingredient (ingredient , format , C2paStream (stream ))
73
+
74
+ def add_ingredient_file (self , ingredient , path ):
75
+ format = os .path .splitext (path )[1 ][1 :]
76
+ file = open (path , "rb" )
77
+ return self .add_ingredient (ingredient , format , file )
72
78
73
- def sign_stream (self , format , input , output = None ):
74
- return self .sign (format , input , output , self .signer )
79
+ def sign (self , format , input , output = None ):
80
+ return super () .sign (format , C2paStream ( input ), C2paStream ( output ) , self .signer )
75
81
76
82
def sign_file (self , sourcePath , outputPath ):
77
- format = "image/jpeg" #sourcePath.extension [1:]
78
- input = C2paStream . open_file (sourcePath , "rb" )
79
- output = C2paStream . open_file (outputPath , "wb" )
80
- return self .sign_stream (format , input , output )
83
+ format = os . path . splitext ( outputPath )[ 1 ] [1 :]
84
+ input = open (sourcePath , "rb" )
85
+ output = open (outputPath , "wb" )
86
+ return self .sign (format , input , output )
81
87
82
88
83
89
# Implements a C2paStream given a stream handle
0 commit comments