pushToPinataIPFS method

Future<String> pushToPinataIPFS(
  1. String pinata_api_key,
  2. String pinata_secret_api_key,
  3. Uint8List data
)

Implementation

Future<String> pushToPinataIPFS(String pinata_api_key,
    String pinata_secret_api_key, Uint8List data) async {
  if (pinata_api_key.isEmpty) {
    pinata_api_key = _pinata_api_key;
    pinata_secret_api_key = _pinata_secret_api_key;
  }
  final String ur = 'https://api.pinata.cloud/pinning/pinFileToIPFS';
  var url = Uri.parse(ur);
  var request = http.MultipartRequest("POST", url);
  var multipartFile = http.MultipartFile.fromBytes('file', data,
      filename: 'ada'); //("image", attachement, length,
  request.files.add(multipartFile);
  request.headers.addAll({
    'pinata_api_key': pinata_api_key,
    'pinata_secret_api_key': pinata_secret_api_key
  });
  var r = '';
  try {
    r = await request.send().then((r) async {
      if (r == null) return '';
      setOnline();
      if (r.statusCode == 403) {
        print('FORBIDDEN: ipfs keys borked. panic.');
        _ifpsDead = true;
        return '';
      }
      if (r.statusCode != 200) return '';
      final responseString = await r.stream.bytesToString();

      if (responseString.startsWith('{"IpfsHash":')) {
        final f = responseString.split('"');
        return (f[3]);
      }
      return '';
    });
  } catch (e) {
    if (!(e is TimeoutException)) setOffline();
    return '';
  }
  return r;
}