Skip to content
This repository was archived by the owner on Dec 31, 2019. It is now read-only.

Trying to print returns nil #22

Open
bpdarlyn opened this issue Jan 20, 2017 · 5 comments
Open

Trying to print returns nil #22

bpdarlyn opened this issue Jan 20, 2017 · 5 comments

Comments

@bpdarlyn
Copy link

bpdarlyn commented Jan 20, 2017

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 :(

@thegengen
Copy link
Owner

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?

@thegengen thegengen changed the title Error nil in prin Trying to print returns nil Jan 24, 2017
@ChristianBoehlke
Copy link

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.

@thegengen
Copy link
Owner

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.

@thegengen
Copy link
Owner

thegengen commented Aug 3, 2017

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.

@thegengen
Copy link
Owner

@ChristianBoehlke there is a branch for this now: print-exceptions.

Would you mind taking it for a spin and seeing if everything's OK?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants