async def _call_api(self, method: str, url: str, data: Union[dict, FormData] = None, file=None, **kwargs) -> Optional[Union[List[dict], dict]]: auth = None if self._login != ("", ""): auth = BasicAuth(*self._login) if file: file = file["upload[file]"] formdata = FormData() formdata.add_field("upload[file]", file[1], filename=file[0], content_type=file[2]) formdata.add_fields(data) data = formdata query_string = self._generate_query_keys(**kwargs) url += "?" + query_string r = await self._session.request(method, url, data=data, headers=self.headers, auth=auth) await self._verify_response(r) if not r.status == 204: return await r.json() return None
def async_call(self, session, token: str) -> ReturnType: url, form, files, inputfiles, use_multipart = self._prepare_for_call( token) if use_multipart: data = form.copy() data.update(files) print("Method:", self.__class__.__name__) print("Data:", data) from aiohttp import FormData data = FormData() data.add_fields(*((str(k), str(v)) for k, v in form.items())) for name, f in inputfiles.items(): print(name, f.file, f.mime, name) data.add_field(name, f.file, content_type=f.mime, filename=name) req = session.post(url, data=data) else: req = session.post(url, json=form) r = yield from req j = yield from r.json() return self.read_result(j)
async def get_form_data(i): data = FormData() data.add_fields(('maven2.groupId', 'com.atishay.test'), ('artifactId', 'someartifact'), ('version', f'{i}.0.0'), ('generate-pom', 'false'), ('packaging', 'zip'), ('asset1', open(file, 'rb')), ('asset1.extension', 'zip')) return data