Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support specifying properties on media type #22

Open
technicalpickles opened this issue Apr 21, 2014 · 6 comments
Open

Support specifying properties on media type #22

technicalpickles opened this issue Apr 21, 2014 · 6 comments

Comments

@technicalpickles
Copy link

In addition to the custom media type to specify API version, some methods support a (raw, full, etc): https://developer.github.com/v3/media/

It'd be useful to be able to specify these per-request. I'm not sure how the best way to do that would be, as currently, you can pass in data to get, but it's treated as a query string.

A workaround for now is to make a new github instance with a custom apiVersion like:

      github = require('githubot')(robot, apiVersion: 'v3.raw')

You'd have to make other instances if you wanted a different property though.

@technicalpickles
Copy link
Author

Actually, that workaround doesn't work because it tries to JSON.parse the result, and it's just plain text coming back.

@iangreenleaf
Copy link
Owner

Indeed - I actually recently added a way to specify per-request options:

gh.withOptions(apiVersion: 'v3.raw').get "/foo"

But if we need to treat the response data as something other than JSON, we'd need a new option anyhow. I'm curious, do you have a specific use case in mind for this?

@technicalpickles
Copy link
Author

Yep, the Contents API https://developer.github.com/v3/repos/contents/ . At the very least, I think if the apiVersion matches /raw/ probably should not JSON.parse.

@iangreenleaf
Copy link
Owner

I can think of two ways to handle this:

  1. Check apiVersion against a regexp and if it matches certain things, treat the responses different. If we went with this version, we'd need to differentiate between apiVersion: 'v3.raw' and apiVersion: 'v3.raw+json', and I think that would end up a little weird since we're in the habit of automatically adding the +json for people.
  2. Offer a new option, like raw: true or mediaType: 'raw', that would both modify the header and parse the response appropriately. I'm leaning towards this one because it makes it a little more obvious.

@technicalpickles
Copy link
Author

I think being able to specify the entire media type would be most flexible. Then, don't try to parse the response unless it has json in it. Thoughts?

On April 23, 2014 at 2:22:17 AM EDT, Ian Young [email protected] wrote:I can think of two ways to handle this: Check apiVersion against a regexp and if it matches certain things, treat the responses different. If we went with this version, we'd need to differentiate between apiVersion: 'v3.raw' and apiVersion: 'v3.raw+json' , and I think that would end up a little weird since we're in the habit of automatically adding the +json for people. Offer a new option, like raw: true or mediaType: 'raw' , that would both modify the header and parse the response appropriately. I'm leaning towards this one because it makes it a little more obvious. —Reply to this email directly or view it on GitHub.

@iangreenleaf
Copy link
Owner

Yeah, I was debating that too and came to the same tentative conclusion. We can have a mediaType option with default value of "+json". Then someone can set it to "raw" for raw files, or "raw+json" or whatever for weird cases. Githubot will combine it with the apiVersion and add a dot when necessary, and can just match against /\+json$/ and parse only those responses.

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

No branches or pull requests

2 participants