@@ -120,11 +120,15 @@ def set_content_length_range(self, min_length, max_length):
120120
121121 self ._content_length_range = (min_length , max_length )
122122
123- def _marshal_json (self ):
123+ def append_policy (self , condition , target , value ):
124+ self .policies .append ([condition , target , value ])
125+
126+ def _marshal_json (self , extras = ()):
124127 """
125128 Marshal various policies into json str/bytes.
126129 """
127- policies = self .policies
130+ policies = self .policies [:]
131+ policies .extend (extras )
128132 if self ._content_length_range :
129133 policies .append (['content-length-range' ] +
130134 list (self ._content_length_range ))
@@ -139,11 +143,11 @@ def _marshal_json(self):
139143
140144 return json .dumps (policy_stmt )
141145
142- def base64 (self ):
146+ def base64 (self , extras = () ):
143147 """
144148 Encode json into base64.
145149 """
146- s = self ._marshal_json ()
150+ s = self ._marshal_json (extras = extras )
147151 s_bytes = s if isinstance (s , bytes ) else s .encode ('utf-8' )
148152 b64enc = base64 .b64encode (s_bytes )
149153 return b64enc .decode ('utf-8' ) if isinstance (b64enc , bytes ) else b64enc
0 commit comments