@@ -90,21 +90,12 @@ class ListParams(TypedDict):
9090 Cursor for backward pagination (exclusive).
9191 """
9292
93- @classmethod
94- def create (cls , params : CreateParams ) -> CreateContactImportResponse :
95- """
96- Create a new contact import from a CSV file.
97- see more: https://resend.com/docs/api-reference/contacts/create-contact-import
98-
99- Args:
100- params (CreateParams): Import parameters including the CSV file content.
101-
102- Returns:
103- CreateContactImportResponse: The created import job with its ID.
104- """
93+ @staticmethod
94+ def _build_multipart (
95+ params : "ContactImports.CreateParams" ,
96+ ) -> tuple :
10597 if not params .get ("file" ):
10698 raise ValueError ("file is required" )
107-
10899 filename = params .get ("filename" , "import.csv" )
109100 files : Dict [str , Any ] = {
110101 "file" : (filename , params ["file" ], "text/csv" ),
@@ -120,7 +111,21 @@ def create(cls, params: CreateParams) -> CreateContactImportResponse:
120111 )
121112 if "topics" in params :
122113 form_data ["topics" ] = json_lib .dumps (params ["topics" ])
114+ return files , form_data
115+
116+ @classmethod
117+ def create (cls , params : CreateParams ) -> CreateContactImportResponse :
118+ """
119+ Create a new contact import from a CSV file.
120+ see more: https://resend.com/docs/api-reference/contacts/create-contact-import
121+
122+ Args:
123+ params (CreateParams): Import parameters including the CSV file content.
123124
125+ Returns:
126+ CreateContactImportResponse: The created import job with its ID.
127+ """
128+ files , form_data = cls ._build_multipart (params )
124129 resp = request .Request [ContactImports .CreateContactImportResponse ](
125130 path = "/contacts/imports" ,
126131 params = {},
@@ -185,25 +190,7 @@ async def create_async(cls, params: CreateParams) -> CreateContactImportResponse
185190 Returns:
186191 CreateContactImportResponse: The created import job with its ID.
187192 """
188- if not params .get ("file" ):
189- raise ValueError ("file is required" )
190-
191- filename = params .get ("filename" , "import.csv" )
192- files : Dict [str , Any ] = {
193- "file" : (filename , params ["file" ], "text/csv" ),
194- }
195- form_data : Dict [str , str ] = {}
196- if "column_map" in params :
197- form_data ["column_map" ] = json_lib .dumps (params ["column_map" ])
198- if "on_conflict" in params :
199- form_data ["on_conflict" ] = params ["on_conflict" ]
200- if "segments" in params :
201- form_data ["segments" ] = json_lib .dumps (
202- [{"id" : sid } for sid in params ["segments" ]]
203- )
204- if "topics" in params :
205- form_data ["topics" ] = json_lib .dumps (params ["topics" ])
206-
193+ files , form_data = cls ._build_multipart (params )
207194 resp = await AsyncRequest [ContactImports .CreateContactImportResponse ](
208195 path = "/contacts/imports" ,
209196 params = {},
0 commit comments