home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

8 rows where issue = 717768441 sorted by updated_at descending

✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: created_at (date), updated_at (date)

user 1

  • simonw 8

issue 1

  • OPTIONS requests return a 500 error · 8 ✖

author_association 1

  • OWNER 8
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
705917015 https://github.com/simonw/datasette/issues/1001#issuecomment-705917015 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkxNzAxNQ== simonw 9599 2020-10-09T01:38:49Z 2020-10-09T01:38:49Z OWNER

I actually have a sensible OPTIONS implementation here:

https://github.com/simonw/datasette/blob/a648bb82bac201c7658f6fdb499ff8ac17ebd2e8/datasette/views/base.py#L154-L165

I'm going to set the default one to return a 405 (Method Not Allowed) like Google does.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705916614 https://github.com/simonw/datasette/issues/1001#issuecomment-705916614 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkxNjYxNA== simonw 9599 2020-10-09T01:37:06Z 2020-10-09T01:37:06Z OWNER

I'm tempted to imitate Django Rest Framework here: https://github.com/encode/django-rest-framework/blob/2e721cdbc85a924d0b0f093b86fe1497b58fe287/rest_framework/views.py#L514-L521 python def options(self, request, *args, **kwargs): """ Handler method for HTTP 'OPTIONS' request. """ if self.metadata_class is None: return self.http_method_not_allowed(request, *args, **kwargs) data = self.metadata_class().determine_metadata(request, self) return Response(data, status=status.HTTP_200_OK) That determine_metadata() default method does this: https://github.com/encode/django-rest-framework/blob/335054a5d36b352a58286b303b608b6bf48152f8/rest_framework/metadata.py#L29

Note the comment at the top: There are not any formalized standards for `OPTIONS` responses for us to base this on.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705905418 https://github.com/simonw/datasette/issues/1001#issuecomment-705905418 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkwNTQxOA== simonw 9599 2020-10-09T01:00:54Z 2020-10-09T01:00:54Z OWNER

https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705905121 https://github.com/simonw/datasette/issues/1001#issuecomment-705905121 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkwNTEyMQ== simonw 9599 2020-10-09T01:00:07Z 2020-10-09T01:00:07Z OWNER

The www.djangoproject.com site returns an empty page: ``` ~ % curl -vv -XOPTIONS https://www.djangoproject.com/ * Trying 151.101.42.217:443... * Connected to www.djangoproject.com (151.101.42.217) port 443 (#0) * ALPN, offering http/1.1 * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 * Server certificate: osff2.map.fastly.net * Server certificate: GlobalSign CloudSSL CA - SHA256 - G3 * Server certificate: GlobalSign Root CA

OPTIONS / HTTP/1.1 Host: www.djangoproject.com User-Agent: curl/7.70.0 Accept: /

  • Mark bundle as not supporting multiuse < HTTP/1.1 200 OK < Connection: keep-alive < Content-Length: 0 < Server: nginx < Content-Type: text/html; charset=utf-8 < Allow: GET, HEAD, OPTIONS < Content-Language: en < X-Frame-Options: SAMEORIGIN < X-Content-Type-Options: nosniff < X-XSS-Protection: 1; mode=block < Strict-Transport-Security: max-age=31536000; includeSubDomains; preload < Access-Control-Allow-Origin: https://code.djangoproject.com < Accept-Ranges: bytes < Date: Fri, 09 Oct 2020 00:59:42 GMT < Via: 1.1 varnish < X-Served-By: cache-sjc10047-SJC < X-Cache: MISS < X-Cache-Hits: 0 < X-Timer: S1602205182.833493,VS0,VE305 < Vary: Accept-Language, Accept-Encoding <
  • Connection #0 to host www.djangoproject.com left intact ~ % ```
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705904917 https://github.com/simonw/datasette/issues/1001#issuecomment-705904917 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkwNDkxNw== simonw 9599 2020-10-09T00:59:25Z 2020-10-09T00:59:25Z OWNER

``` ~ % curl -XOPTIONS https://www.google.com/

<html lang=en> <meta charset=utf-8> <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width"> <title>Error 405 (Method Not Allowed)!!1</title> ```
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705904759 https://github.com/simonw/datasette/issues/1001#issuecomment-705904759 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkwNDc1OQ== simonw 9599 2020-10-09T00:58:47Z 2020-10-09T00:58:47Z OWNER

What should an OPTIONS request return, anyway?

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705904679 https://github.com/simonw/datasette/issues/1001#issuecomment-705904679 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkwNDY3OQ== simonw 9599 2020-10-09T00:58:32Z 2020-10-09T00:58:32Z OWNER

So the bug is in this code here: https://github.com/simonw/datasette/blob/703439bdc37e724b01bc6d7a1fc1d955795132f2/datasette/views/base.py#L113-L115

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  
705904566 https://github.com/simonw/datasette/issues/1001#issuecomment-705904566 https://api.github.com/repos/simonw/datasette/issues/1001 MDEyOklzc3VlQ29tbWVudDcwNTkwNDU2Ng== simonw 9599 2020-10-09T00:58:08Z 2020-10-09T00:58:08Z OWNER

To get a traceback: datasette . -p 8009 --pdb And then: curl -XOPTIONS http://127.0.0.1:8009 This causes the server to open a debugging prompt: ``` INFO: 127.0.0.1:59514 - "OPTIONS / HTTP/1.1" 500 Internal Server Error

/Users/simon/Dropbox/Development/datasette/datasette/views/base.py(115)dispatch_request() -> return await handler(request, args, kwargs) (Pdb) list 110 def database_color(self, database): 111 return "ff0000" 112
113 async def dispatch_request(self, request,
args, kwargs): 114 handler = getattr(self, request.method.lower(), None) 115 -> return await handler(request, *args, kwargs) 116
117 async def render(self, templates, request, context=None): 118 context = context or {} 119 template = self.ds.jinja_env.select_template(templates) 120 template_context = { (Pdb) ```

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
OPTIONS requests return a 500 error 717768441  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 18.852ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows