Commit graph

29 commits

Author SHA1 Message Date
Nathaniel Nicandro
403c70c83c Bump version 2020-04-07 15:13:51 -05:00
Nathaniel Nicandro
be8ee2c482 Remove unused function
That also happens to use a ZMQ function.

* jupyter-rest-api.el (jupyter-api-upload-large-file): Do it.

* jupyter-tramp.el: Remove mention of `jupyter-api-upload-large-file` in a
  comment.
2020-03-13 19:14:32 -05:00
conao3
fb8c2c75fd two spaces after a period 2020-03-12 18:20:15 -05:00
conao3
1546a72f57 clean header 2020-03-10 23:39:35 -05:00
Nathaniel Nicandro
6b1baf1fde jupyter-api-with-subprocess-setup: Set url-cookie-file to its parent process value 2019-08-01 16:26:43 -05:00
Nathaniel Nicandro
8f35f135d7 jupyter-gc-servers: Delete cookies when cleaning up servers
See #161

* jupyter-rest-api.el (jupyter-api--delete-cookie):
(jupyter-api-delete-cookies): New functions.

* jupyter-server.el (jupyter-gc-servers): Do it.

* test/jupyter-server-test.el (jupyter-api-delete-cookies): New test.
2019-07-31 14:19:15 -05:00
Nathaniel Nicandro
f7f8bfa52c jupyter-api-url-request: Don't override a user customizable variable 2019-07-30 10:24:31 -05:00
Nathaniel Nicandro
ea22bd512d Re-authenticate after "Access Forbidden" 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
e8540667c7 jupyter-api-login: Mark response buffer as dead 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
6d7b07333f Add jupyter-api-server-exists-p 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
816a30f5a7 jupyter-api-copy-cookies-for-websocket: Ensure cookies have expiration date 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
36aec72814 jupyter-api-copy-cookies-for-websocket: Ensure modified cookies will be written to file 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
9fe99744fd jupyter-api-construct-endpoint: No need to encode components of endpoint
This is already handled by `url-encode-url` when creating the HTTP request.
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
fa3f7c8b31 Handle encoding when making REST API requests
* jupyter-rest-api.el: Ensure strings are encoded before making HTTP request.
(jupyter-api-http-request): Encode JSON as utf-8.
(jupyter-api-xsrf-header-from-cookies): Ensure header isn't multibyte.
(jupyter-api-authenticate): For the token method, ensure token isn't multibyte.
(jupyter-api-copy-file): Encode string before encoding to base64 for binary content.
(jupyter-api-read-file-content): Decode content as utf-8 when necessary.

* jupyter-tramp.el
(jupyter-tramp-write-region): Ensure only `utf-8` or `binary` coding systems
are used since Jupyter only supports those.

* test/jupyter-tramp-test.el: Update for above changes.
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
dd4332a7cc jupyter-rest-client: Raise an error when GnuTLS unavailable for HTTPS connections 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
933e5c65a6 Cache file model contents in a buffer
* jupyter-rest-api.el (jupyter-api-content-buffer): New function.
(jupyter-api-insert-model-content): Use it.

* jupyter-tramp.el (jupyter-tramp-file-local-copy): Use it.
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
59c2e88ae6 jupyter-api-content-path: Drop local drive letter on Windows 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
0e34e73cae jupyter-api-request: Don't reset auth state on an unauthorized request 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
248dc34117 Define jupyter-api-request-(headers|method|data)
So as to make it easier to transition away from `url-retrieve` if necessary in
the future.
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
e35981d147 jupyter-rest-api.el: Refactor login and authentication 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
a4aaa7d1db jupyter-api-request: Refactor
* jupyter-rest-api.el (jupyter-api-url): Remove.
(jupyter-api--request): Remove. Work moved into `jupyter-api-request`.
(jupyter-api--url-request): Rename to `jupyter-api-url-request`.
Update all callers.
(jupyter-api-add-websocket-headers)
(jupyter-api-construct-endpoint): New functions.
(jupyter-api-request): Use them.
Don't assume "api" prefixes endpoint, update all callers.
(jupyter-api-get-file-model)
(jupyter-api-get-kernel-ws):
Update to account for how query parameters are
passed in `jupyter-api-request`.

* jupyter-server-test: Update tests for changes to `jupyter-api-request`.
(jupyter-api-add-websocket-headers)
(jupyter-api-construct-endpoint): New tests.

squash! jupyter-api-request: Refactor
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
e53973095c jupyter-api-parse-response: Handle url-max-redirects error 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
bf6e9014f3 Use filename component of url when retrieving cookies 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
900016d398 Include session ID when connecting websockets 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
5bd164c224 Error when trying to read a notebook through a server
We can't do much with a JSON representation of a notebook right now.
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
9241296b45 jupyter-api-request: Ask for authorization on next request after an un-authorized one
What is a better solution?
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
4a87d35f76 Jupyter notebook contents API integration with TRAMP 2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
67831c08fa Support Jupyter kernel servers
* jupyter-client.el (jupyter-initialize-connection): Elevate NOTE to FIXME.
(jupyter-kernel-info): Extend timeout.

* jupyter-kernel-manager.el (jupyter-shutdown-kernel):
(jupyter-interrupt-kernel): Allow any number of arguments.

* jupyter-kernelspec.el (jupyter-find-kernelspecs): Optionally allow specs.

* jupyter-messages.el (jupyter-encode-raw-message): New function.

* jupyter-rest-api.el (jupyter-api-auth-headers): New function.

* jupyter-server-ioloop.el: New file.

* jupyter-server.el: New file.

* test/jupyter-test.el (jupyter-server):
(jupyter-server-kernel-manager):
(jupyter-server-start-new-kernel): New tests.
2019-07-24 16:59:04 -05:00
Nathaniel Nicandro
9df340bd0f Add REST API
* jupyter-rest-api.el: New file.

* test/jupyter-test.el (jupyter-rest-api):
(jupyter-api--copy-cookies, jupyter-api--password-login):
(jupyter-api-kernel-ws): New tests.

* test/test-helper.el (jupyter-test-rest-api): New macro.
2019-07-24 16:59:04 -05:00