Skip to content

Commit cf123d3

Browse files
authored
Tickets - FS-7947 and FS-6057 (#74)
* Add some transformation functions for the ticket FS-7947 and FS-6057 * Add some transformation functions for the ticket FS-7947 and FS-6057 * Add some transformation functions for the ticket FS-7947 and FS-6057
1 parent cb0c3d5 commit cf123d3

File tree

8 files changed

+129
-2
lines changed

8 files changed

+129
-2
lines changed

examples/animate.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from filestack import Client, Security
2+
3+
# create security object
4+
json_policy = {"expiry":1717101000,"call":["pick","read","stat","write","writeUrl","store","convert"]}
5+
security = Security(json_policy, '<YOUR_APP_SECRET>')
6+
APIKEY = '<YOUR_API_KEY>'
7+
8+
client = Client(apikey=APIKEY, security=security)
9+
transform = client.transform_external('/animate=fit:scale,width:200,height:300/[<HANDLER1>,<HANDLER2>]')
10+
transform.animate(fit='scale',width=200,height=300,loop=0,delay=1000)
11+
print(transform.url)

examples/convert_pdf.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from filestack import Client, Security
2+
3+
# create security object
4+
json_policy = {"call":["pick","read","stat","write","writeUrl","store","convert"],"expiry":1717099200}
5+
security = Security(json_policy, '<YOUR_APP_SECRET>')
6+
APIKEY = '<YOUR_API_KEY>'
7+
8+
client = Client(apikey=APIKEY, security=security)
9+
transform = client.transform_external('pdfconvert=pageorientation:landscape/HANDLER')
10+
transform.pdf_convert(pageorientation='landscape', pageformat='a4', metadata=True)
11+
print(transform.url)
12+

examples/createpdf.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from filestack import Client, Security
2+
3+
# create security object
4+
json_policy = {"call":["pick","read","stat","write","writeUrl","store","convert"],"expiry":1717099200}
5+
security = Security(json_policy, '<YOUR_APP_SECRET>')
6+
APIKEY = '<YOUR_API_KEY>'
7+
8+
client = Client(apikey=APIKEY, security=security)
9+
transform = client.transform_external('/pdfcreate/[<HANDLER1>,<HANDLER2>]')
10+
transform.pdfcreate(engine='mupdf')
11+
print(transform.url)
12+

examples/doc_to_image.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from filestack import Client, Security
2+
3+
# create security object
4+
json_policy = {"call":["pick","read","stat","write","writeUrl","store","convert"],"expiry":1717099200}
5+
security = Security(json_policy, '<YOUR_APP_SECRET>')
6+
APIKEY = '<YOUR_API_KEY>'
7+
8+
client = Client(apikey=APIKEY, security=security)
9+
transform = client.transform_external('/doc_to_images/<HANDLE>')
10+
transform.doc_to_images(pages=[1], engine='imagemagick', format='png', quality=100, density=100, hidden_slides=False)
11+
print(transform.url)

examples/fallback.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from filestack import Client, Security
2+
3+
# create security object
4+
json_policy = {"call":["pick","read","stat","write","writeUrl","store","convert"],"expiry":1717099200}
5+
security = Security(json_policy, '<YOUR_APP_SECRET>')
6+
APIKEY = '<YOUR_API_KEY>'
7+
8+
client = Client(apikey=APIKEY, security=security)
9+
transform = client.transform_external('/')
10+
transform.fallback(file='HANDLER', cache=12)
11+
print(transform.url)

examples/smart_crop.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from filestack import Client, Security
2+
3+
# create security object
4+
json_policy = {"call":["pick","read","stat","write","writeUrl","store","convert"],"expiry":1717099200}
5+
security = Security(json_policy, '<YOUR_APP_SECRET>')
6+
APIKEY = '<YOUR_API_KEY>'
7+
8+
client = Client(apikey=APIKEY, security=security)
9+
transform = client.transform_external('/smart_crop=width:100,height:100/HANDLER')
10+
transform.smart_crop(width=100, height=100)
11+
print(transform.url)

filestack/mixins/imagetransformation.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,13 +117,13 @@ def quality(self, value=None):
117117
def zip(self):
118118
return self._add_transform_task('zip', locals())
119119

120-
def fallback(self, handle=None, cache=None):
120+
def fallback(self, file=None, cache=None):
121121
return self._add_transform_task('fallback', locals())
122122

123123
def pdf_info(self, colorinfo=None):
124124
return self._add_transform_task('pdfinfo', locals())
125125

126-
def pdf_convert(self, pageorientation=None, pageformat=None, pages=None):
126+
def pdf_convert(self, pageorientation=None, pageformat=None, pages=None, metadata=None):
127127
return self._add_transform_task('pdfconvert', locals())
128128

129129
def minify_js(self, gzip=None, use_babel_polyfill=None, keep_fn_name=None, keep_class_name=None,
@@ -153,6 +153,18 @@ def av_convert(self, *, preset=None, force=None, title=None, extname=None, filen
153153
def auto_image(self):
154154
return self._add_transform_task('auto_image', locals())
155155

156+
def doc_to_images(self, pages=None, engine=None, format=None, quality=None, density=None, hidden_slides=None):
157+
return self._add_transform_task('doc_to_images', locals())
158+
159+
def smart_crop(self, mode=None, width=None, height=None, fill_color=None, coords=None):
160+
return self._add_transform_task('smart_crop', locals())
161+
162+
def pdfcreate(self, engine=None):
163+
return self._add_transform_task('pdfcreate', locals())
164+
165+
def animate(self, delay=None, loop=None, width=None, height=None, fit=None, align=None, background=None):
166+
return self._add_transform_task('animate', locals())
167+
156168
def _add_transform_task(self, transformation, params):
157169
if isinstance(self, filestack.models.Transformation):
158170
instance = self

tests/tasks_test.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import re
2+
3+
import pytest
4+
import responses
5+
6+
from filestack import Transformation, AudioVisual
7+
from filestack import config
8+
9+
APIKEY = 'SOMEAPIKEY'
10+
HANDLE = 'SOMEHANDLE'
11+
EXTERNAL_URL = 'SOMEEXTERNALURL'
12+
13+
14+
@pytest.fixture
15+
def transform():
16+
return Transformation(apikey=APIKEY, external_url=EXTERNAL_URL)
17+
18+
19+
def test_createpdf(transform):
20+
target_url = '{}/{}/pdfcreate/{}/[v7MSSKswR0mvEwZS9LD0,Sr5CrtQPSs5TTZzor1Cw]'.format(config.CDN_URL, APIKEY, EXTERNAL_URL)
21+
obj = transform.pdfcreate(engine='mupdf')
22+
assert obj.url
23+
24+
def test_animate(transform):
25+
target_url = '{}/{}/animate=fit:scale,width:200,height:300/{}/[OjKeBAuBTIWygi1NE8fx,WTY6jjIaTPOvWY9KsNh9]'.format(config.CDN_URL, APIKEY, EXTERNAL_URL)
26+
obj = transform.animate(fit='scale',width=200,height=300,loop=0,delay=1000)
27+
assert obj.url
28+
29+
def test_doc_to_images(transform):
30+
target_url = '{}/{}/doc_to_images/{}/3zOWSOLQ0SEdphqVil9Q'.format(config.CDN_URL, APIKEY, EXTERNAL_URL)
31+
obj = transform.doc_to_images(pages=[1], engine='imagemagick', format='png', quality=100, density=100, hidden_slides=False)
32+
assert obj.url
33+
34+
def test_smart_crop(transform):
35+
target_url = '{}/{}/smart_crop=width:100,height:100/{}/v7MSSKswR0mvEwZS9LD0'.format(config.CDN_URL, APIKEY, EXTERNAL_URL)
36+
obj = transform.smart_crop(width=100, height=100)
37+
assert obj.url
38+
39+
def test_pdf_convert(transform):
40+
target_url = '{}/{}/pdfconvert=pageorientation:landscape/{}/3zOWSOLQ0SEdphqVil9Q'.format(config.CDN_URL, APIKEY, EXTERNAL_URL)
41+
obj = transform.pdf_convert(pageorientation='landscape', pageformat='a4', metadata=True)
42+
assert obj.url
43+
44+
def test_fallback(transform):
45+
target_url = '{}/{}/{}'.format(config.CDN_URL, APIKEY, EXTERNAL_URL)
46+
obj = transform.fallback(file='3zOWSOLQ0SEdphqVil9Q', cache=12)
47+
assert obj.url

0 commit comments

Comments
 (0)