filestack / filestack-python

Official Python SDK for Filestack - API and content management system that makes it easy to add powerful file uploading and transformation capabilities to any web or mobile application.
https://www.filestack.com
Apache License 2.0
48 stars 20 forks source link

Unable to upload files to filestack using security policy and app secret #71

Open prakash-p-3121 opened 1 year ago

prakash-p-3121 commented 1 year ago

Hi, I'm using filestack to upload files. Here's the code that I'm using

def main():

policy = {"call":["pick","store"],"expiry":1673461800}

p = Policy(policy,"APP_SECRET")
respSign = p.signature_params()

fpclient = FilepickerClientSecure('S3')
resp = fpclient.store_from_url("https://cdn.shopify.com/s/files/1/1390/1485/products/image_aacb3d0a-bed1-4265-99c5-5ec95dbf441b_1024x1024.jpg?v=1643292001",
                         respSign['policy'],
                         respSign['signature']
                        )

respStore = fpclient.store_local_file("/Users/user1/Desktop/user1.pdf",
                        respSign['policy'],
                        respSign['signature']
                        )
print(respStore)

The URL generated for the above calls are:

https://www.filestackapi.com/api/store/S3?policy=eyJjYWxsIjogWyJwaWNrIiwgInN0b3JlIl0sICJleHBpcnkiOiAxNjczNDYxODAwfQ%3D%3D&signature=fb265f83579e29ef11c047790a1b7a62755fa127d0b1f29d39ae8ab55ef395ae

When I pass the API_KEY in the URL query, I'm able to upload the files.

But if I use just the signature and policy I'm unable to upload the files. I get the following error.

response= Invalid Application status-code= 200

Can you please tell me how to fix this error ? Is it possible to upload files with policy and signature ?

sethk4783 commented 3 months ago

Hi @prakash-p-3121 please check example https://github.com/filestack/filestack-python/blob/develop/examples/upload_and_delete.py

@prakash-p-3121 as you correctly mentioned when passing API_KEY you're able to upload your files.

Similarly along with Security Policy and Signature you have to pass API_KEY.