Skip to content

Commit

Permalink
Merge pull request #1 from armandobelardo/fern/multipartencoding
Browse files Browse the repository at this point in the history
🌿 introduce form-data encoding for JSON form parameters
  • Loading branch information
pierredge authored May 27, 2024
2 parents b6192da + 67c29f4 commit 6b9318d
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 18 deletions.
2 changes: 2 additions & 0 deletions .fernignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Specify files that shouldn't be modified by Fern

README.md
tests/custom/
src/fileforge/client.py
49 changes: 31 additions & 18 deletions src/fileforge/client.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# This file was auto-generated by Fern from our API Definition.

import json
import typing
import urllib.parse
from json.decoder import JSONDecodeError
Expand Down Expand Up @@ -230,13 +231,15 @@ def convert_docx(
request_options.get("additional_query_parameters") if request_options is not None else None
)
),
data=jsonable_encoder(remove_none_from_dict({"options": options}))
data={}
if request_options is None or request_options.get("additional_body_parameters") is None
else {
**jsonable_encoder(remove_none_from_dict({"options": options})),
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
},
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({"file": file})),
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({
"options": (None, json.dumps(jsonable_encoder(options)), "application/json"),
"file": file
})),
headers=jsonable_encoder(
remove_none_from_dict(
{
Expand Down Expand Up @@ -313,13 +316,15 @@ def generate(
request_options.get("additional_query_parameters") if request_options is not None else None
)
),
data=jsonable_encoder(remove_none_from_dict({"options": options}))
data={}
if request_options is None or request_options.get("additional_body_parameters") is None
else {
**jsonable_encoder(remove_none_from_dict({"options": options})),
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
},
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({"files": files})),
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({
"options": (None, json.dumps(jsonable_encoder(options)), "application/json"),
"files": files
})),
headers=jsonable_encoder(
remove_none_from_dict(
{
Expand Down Expand Up @@ -395,13 +400,15 @@ def merge(
request_options.get("additional_query_parameters") if request_options is not None else None
)
),
data=jsonable_encoder(remove_none_from_dict({"options": options}))
data={}
if request_options is None or request_options.get("additional_body_parameters") is None
else {
**jsonable_encoder(remove_none_from_dict({"options": options})),
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
},
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({"files": files})),
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({
"options": (None, json.dumps(jsonable_encoder(options)), "application/json"),
"files": files
})),
headers=jsonable_encoder(
remove_none_from_dict(
{
Expand Down Expand Up @@ -636,13 +643,15 @@ async def convert_docx(
request_options.get("additional_query_parameters") if request_options is not None else None
)
),
data=jsonable_encoder(remove_none_from_dict({"options": options}))
data={}
if request_options is None or request_options.get("additional_body_parameters") is None
else {
**jsonable_encoder(remove_none_from_dict({"options": options})),
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
},
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({"file": file})),
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({
"options": (None, json.dumps(jsonable_encoder(options)), "application/json"),
"file": file
})),
headers=jsonable_encoder(
remove_none_from_dict(
{
Expand Down Expand Up @@ -719,13 +728,15 @@ async def generate(
request_options.get("additional_query_parameters") if request_options is not None else None
)
),
data=jsonable_encoder(remove_none_from_dict({"options": options}))
data={}
if request_options is None or request_options.get("additional_body_parameters") is None
else {
**jsonable_encoder(remove_none_from_dict({"options": options})),
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
},
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({"files": files})),
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({
"options": (None, json.dumps(jsonable_encoder(options)), "application/json"),
"files": files
})),
headers=jsonable_encoder(
remove_none_from_dict(
{
Expand Down Expand Up @@ -801,13 +812,15 @@ async def merge(
request_options.get("additional_query_parameters") if request_options is not None else None
)
),
data=jsonable_encoder(remove_none_from_dict({"options": options}))
data={}
if request_options is None or request_options.get("additional_body_parameters") is None
else {
**jsonable_encoder(remove_none_from_dict({"options": options})),
**(jsonable_encoder(remove_none_from_dict(request_options.get("additional_body_parameters", {})))),
},
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({"files": files})),
files=core.convert_file_dict_to_httpx_tuples(remove_none_from_dict({
"options": (None, json.dumps(jsonable_encoder(options)), "application/json"),
"files": files
})),
headers=jsonable_encoder(
remove_none_from_dict(
{
Expand Down
8 changes: 8 additions & 0 deletions tests/custom/test.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
html,
body {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
background-color: bisque;
}
7 changes: 7 additions & 0 deletions tests/custom/test.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<html lang="en-US">
<head>
<title>This is a dummy file</title>
<meta charset="utf-8">
</head>
</html>

30 changes: 30 additions & 0 deletions tests/custom/test_client.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,36 @@
import os
import pytest

from fileforge.client import Fileforge
from fileforge.types.generate_request_options import GenerateRequestOptions

FILEFORGE_API_KEY = "YOUR_API_KEY"

# Get started with writing tests with pytest at https://docs.pytest.org
@pytest.mark.skip(reason="Unimplemented")
def test_client() -> None:
assert True == True

def test_generate_pdf_link():
cwd = os.path.dirname(__file__) #<-- absolute dir the script is in

HTML = open(os.path.join(cwd, "test.html"), "rb")
CSS = open(os.path.join(cwd, "test.css"), "rb")

html_file = ("index.html", HTML, "text/html")
css_file = ("style.css", CSS, "text/css")

ff = Fileforge(api_key=FILEFORGE_API_KEY)
optionsValue = GenerateRequestOptions(host=True, test = False)
pdf_iter = ff.generate(
options= optionsValue,
files=[html_file, css_file]
)

pdf_content = bytearray()
for chunk in pdf_iter:
pdf_content.extend(chunk)

pdf_base64_string = pdf_content.decode('utf-8')
print(pdf_base64_string)
assert len(pdf_content) > 0

0 comments on commit 6b9318d

Please sign in to comment.