Skip to content

Support specifying properties on media type #22

Open

Description

@technicalpickles

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.

Activity

  1. technicalpickles commented on Apr 21, 2014

    @technicalpickles
    Author

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

  2. iangreenleaf commented on Apr 22, 2014

    @iangreenleaf
    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?

  3. technicalpickles commented on Apr 22, 2014

    @technicalpickles
    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.

  4. iangreenleaf commented on Apr 23, 2014

    @iangreenleaf
    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.
  5. technicalpickles commented on Apr 24, 2014

    @technicalpickles
    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 notifications@github.com 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.

  6. iangreenleaf commented on Apr 24, 2014

    @iangreenleaf
    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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions