cloudprint
cloudprint copied to clipboard
Trying to print returns nil
p = CloudPrint::Client.new(refresh_token: "refresh", client_id: "id", client_secret: "secret", callback_url: "Valid callback url") my_printer = p.printers.find("id") my_printer.print(content: "html", content_type: "text/html")
return nil :(
Hmm, there's plenty of things that could be going on here. Let's see:
- Do you see any print jobs in Google CloudPrint's console?
- Do you see your printer in Google CloudPrint's console.
- If you select your printer in the console and click 'Details', does it say "Printer is online and ready to print"
- In that same screen, can you click 'Advanced' and paste the contents of the page here?
Thank you a lot for all the work on that library! :)
In case of an error, the response from the Google API that we get looks like this (as documented here: https://developers.google.com/cloud-print/docs/appInterfaces):
{
"success": false,
"request": {...},
"errorCode": 403,
"message": "Could not convert to PDF."
}
However, the print()
method only returns nil
unless the response has a job
property. This makes it very hard for us to figure out what was going wrong and to display a helpful error message to the user. This is probably also related to #18.
Would it be possible that the print()
method returns a more specific error? I would be happy to work on this.
Hi. I'm not sure without looking into the details. Unfortunately, I won't be able to look into this until the middle of next week. In the meantime, if you could share a sanitized version of your content, that could prove very useful.
Next, I'll get back to you with my findings. Sorry for the delay.
Sorry for the delay @ChristianBoehlke, had a look and I understand what you mean by this now. So the way I see it, there are a few ways to go about this:
- We introduce some kind of PrintResult class which has a job and an error (or array of errors)
- We raise an exception when printing fails and we let people rescue and handle it however they wish.
- We create
print!
to raise an exception, like the Rails stuff typically does.
I'm inclined to raise when print
is called and not introduce another method. Either way this is a breaking change, and I'll be sure to add it to the ChangeLog and the README. But I feel like people upgrading and getting exceptions for code that fails to print is the best of all outcomes here.
Let me know what you think. I should have the code for this ready tomorrow or on Saturday.
@ChristianBoehlke there is a branch for this now: print-exceptions.
Would you mind taking it for a spin and seeing if everything's OK?