Skip to main content

createPresignedUrl returns ReadableStream


dawid-szemborowski

Hello, I’m trying to upload files using api (application/pdf), and I have several problems but focus on current. I’m making an api call using graphql api as it is said there, but my response.body is always ReadableStream and when I tried to read that stream a got the Uint8Array. Am I doing something wrong or it is what it sould be and I just can’t figure out how to get that url

12 replies

genietim
Forum|alt.badge.img+12
  • Pipefy Legend
  • 412 replies
  • September 30, 2021

Hi @dawid-szemborowski . What you describe with ReadableStream and Uint8Array probably means you are using JavaScript/NodeJS, correct? The issue certainly lies within your code rather than the API, as the API has no possiblity to change the type you get. Would you mind sharing thre respective code or possibly read some more on how to get the data from a ReadableStream?


dawid-szemborowski
genietim wrote:

Hi @dawid-szemborowski . What you describe with ReadableStream and Uint8Array probably means you are using JavaScript/NodeJS, correct? The issue certainly lies within your code rather than the API, as the API has no possiblity to change the type you get. Would you mind sharing thre respective code or possibly read some more on how to get the data from a ReadableStream?

yes, I’m using Javascript, but when I try to use my code locally, I get the ReadableStream, now I deployed the same code and I get the proper response. Only userMutationId is <nil>, should it be like that?


genietim
Forum|alt.badge.img+12
  • Pipefy Legend
  • 412 replies
  • September 30, 2021

@dawid-szemborowski yes, userMutationId is a value you can use to verify the data integrity: pass it as an input and you should get it back as an output. If you do not give it as input, you get null back.


dawid-szemborowski
genietim wrote:

Hi @dawid-szemborowski . What you describe with ReadableStream and Uint8Array probably means you are using JavaScript/NodeJS, correct? The issue certainly lies within your code rather than the API, as the API has no possiblity to change the type you get. Would you mind sharing thre respective code or possibly read some more on how to get the data from a ReadableStream?

Ok now I think I’m almost there, but I have a little problem with attaching a file. I already created presigned url, then I uploaded the file, and I’m trying to create a card with my file, but I all the time get the same error:

{
  data: { createCard: null },
  errors: [
    {
      message: 'Invalid input: attach_your_resume (["/orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/595dd766-c6b6-43a1-b7b2-bd4a4c124101/a.pdf"])',
      locations: [Array],
      path: [Array],
      code: 30000,
      type: 'PipefyRuntimeError'
    }
  ]
}

and this is my graphql field attribute

{
  field_id: "attach_your_resume",
  field_value: "${`/orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/595dd766-c6b6-43a1-b7b2-bd4a4c124101/a.pdf`}"
}

 


genietim
Forum|alt.badge.img+12
  • Pipefy Legend
  • 412 replies
  • September 30, 2021

I am not sure I understand what you mean by “graphql field attribute”. Is this the input to `

updateCardField

`?

I believe, given these informations, that you should have your `field_value` be an array, meaning your input to look like:

mutation {
  updateCardField(input: {card_id: 123, field_id: "attach_your_resume", new_value: ["/orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/595dd766-c6b6-43a1-b7b2-bd4a4c124101/a.pdf"]}) {
    clientMutationId
    success
  }

(note the square brackets as the main difference to yours). See also here:

https://community.pipefy.com/ask-a-question-78/how-do-i-use-an-api-uploaded-file-as-an-e-mail-attachment-using-the-api-983


dawid-szemborowski
genietim wrote:

I am not sure I understand what you mean by “graphql field attribute”. Is this the input to `

updateCardField

`?

I believe, given these informations, that you should have your `field_value` be an array, meaning your input to look like:

mutation {
  updateCardField(input: {card_id: 123, field_id: "attach_your_resume", new_value: ["/orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/595dd766-c6b6-43a1-b7b2-bd4a4c124101/a.pdf"]}) {
    clientMutationId
    success
  }

(note the square brackets as the main difference to yours). See also here:

https://community.pipefy.com/ask-a-question-78/how-do-i-use-an-api-uploaded-file-as-an-e-mail-attachment-using-the-api-983

no, it’s createCard, but I tried using an array and still doesn’t work

 


dawid-szemborowski
res = await fetch('https://api.pipefy.com/graphql', {
            ...auth,
            body: JSON.stringify({
                query: `
                mutation {
                    createCard(input:{
                        pipe_id: "*pipe_id*",
                        phase_id: "*phase_id*",
                        title: "${name}",
                        fields_attributes: [{
                            field_id: "your_name",
                            field_value: "${name}",
                        },{
                            field_id: "email",
                            field_value: "${email}",
                        },{
                            field_id: "phone",
                            field_value: "${phone}",
                        },{
                            field_id: "attach_your_resume",
                            field_value: "${cvUrl}"
                        },{
                            field_id: "why_are_you_applying_for_this_job",
                            field_value: "${message}",
                        },{
                            field_id: "available_to_work_from",
                            field_value: "${availableFrom}",
                        },
                        {
                            field_id: "tech_stack",
                            field_value: "${techStack}",
                        },{
                            field_id: "position",
                            field_value: "${links}",
                        }
                        ]
                        }) {
                        card {
                        id
                        }
                    }
                }
            `,
            }),
        })

 


genietim
Forum|alt.badge.img+12
  • Pipefy Legend
  • 412 replies
  • September 30, 2021

Hmm. I see. Then I am sorry, I do not see any immediate mistake anymore. The possibilities I see, just to try and triage the issue, would be

  1. to not set the attachement on upload, but set it afterwards using the updateCardField.
  2. to set the attachment only or too on the input’s `attachments` property.
  3. Ping @Marcos Carvalho to ask him for help.

dawid-szemborowski
genietim wrote:

Hmm. I see. Then I am sorry, I do not see any immediate mistake anymore. The possibilities I see, just to try and triage the issue, would be

  1. to not set the attachement on upload, but set it afterwards using the updateCardField.
  2. to set the attachment only or too on the input’s `attachments` property.
  3. Ping @Marcos Carvalho to ask him for help.
  1. returns the same error
  2. how to achieve that? I tried but it returned me an error
  3. Ping @Marcos Carvalho 

dawid-szemborowski

2: errors: [
    {
      message: 'Invalid input: attachment (["/orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/236d13f4-ed98-4bc1-acd9-cdcb9e278ad0/pudzian%20%20%20%20%20%20.pdf"])',
      locations: [Array],
      path: [Array],
      code: 30000,
      type: 'PipefyRuntimeError'
    }

]


genietim
Forum|alt.badge.img+12
  • Pipefy Legend
  • 412 replies
  • October 1, 2021

One more thing I just noticed: did you always use “/orgs/...”, or did you also try without the first slash? I believe the correct way is without, i.e.

["orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/236d13f4-ed98-4bc1-acd9-cdcb9e278ad0/pudzian%20%20%20%20%20%20.pdf"]

or

["uploads/236d13f4-ed98-4bc1-acd9-cdcb9e278ad0/pudzian%20%20%20%20%20%20.pdf"]

 


dawid-szemborowski
genietim wrote:

One more thing I just noticed: did you always use “/orgs/...”, or did you also try without the first slash? I believe the correct way is without, i.e.

["orgs/9b72f885-4aa9-4d56-ba43-32748fa3e634/uploads/236d13f4-ed98-4bc1-acd9-cdcb9e278ad0/pudzian%20%20%20%20%20%20.pdf"]

or

["uploads/236d13f4-ed98-4bc1-acd9-cdcb9e278ad0/pudzian%20%20%20%20%20%20.pdf"]

 

starting with /orgs, orgs, /uploads or uploads, everything doesn’t work


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings