{"action":"created","issue":{"url":"https://api.github.com/repos/slamdata/slamdata/issues/1143","repository_url":"https://api.github.com/repos/slamdata/slamdata","labels_url":"https://api.github.com/repos/slamdata/slamdata/issues/1143/labels{/name}","comments_url":"https://api.github.com/repos/slamdata/slamdata/issues/1143/comments","events_url":"https://api.github.com/repos/slamdata/slamdata/issues/1143/events","html_url":"https://github.com/slamdata/slamdata/issues/1143","id":184055854,"number":1143,"title":"Download/re-upload workspaces","user":{"login":"mossprescott","id":6147371,"avatar_url":"https://avatars.githubusercontent.com/u/6147371?v=3","gravatar_id":"","url":"https://api.github.com/users/mossprescott","html_url":"https://github.com/mossprescott","followers_url":"https://api.github.com/users/mossprescott/followers","following_url":"https://api.github.com/users/mossprescott/following{/other_user}","gists_url":"https://api.github.com/users/mossprescott/gists{/gist_id}","starred_url":"https://api.github.com/users/mossprescott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mossprescott/subscriptions","organizations_url":"https://api.github.com/users/mossprescott/orgs","repos_url":"https://api.github.com/users/mossprescott/repos","events_url":"https://api.github.com/users/mossprescott/events{/privacy}","received_events_url":"https://api.github.com/users/mossprescott/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/slamdata/slamdata/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/slamdata/slamdata/labels/in%20progress","name":"in progress","color":"ededed"}],"state":"open","locked":false,"assignee":{"login":"garyb","id":693642,"avatar_url":"https://avatars.githubusercontent.com/u/693642?v=3","gravatar_id":"","url":"https://api.github.com/users/garyb","html_url":"https://github.com/garyb","followers_url":"https://api.github.com/users/garyb/followers","following_url":"https://api.github.com/users/garyb/following{/other_user}","gists_url":"https://api.github.com/users/garyb/gists{/gist_id}","starred_url":"https://api.github.com/users/garyb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/garyb/subscriptions","organizations_url":"https://api.github.com/users/garyb/orgs","repos_url":"https://api.github.com/users/garyb/repos","events_url":"https://api.github.com/users/garyb/events{/privacy}","received_events_url":"https://api.github.com/users/garyb/received_events","type":"User","site_admin":false},"assignees":[{"login":"garyb","id":693642,"avatar_url":"https://avatars.githubusercontent.com/u/693642?v=3","gravatar_id":"","url":"https://api.github.com/users/garyb","html_url":"https://github.com/garyb","followers_url":"https://api.github.com/users/garyb/followers","following_url":"https://api.github.com/users/garyb/following{/other_user}","gists_url":"https://api.github.com/users/garyb/gists{/gist_id}","starred_url":"https://api.github.com/users/garyb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/garyb/subscriptions","organizations_url":"https://api.github.com/users/garyb/orgs","repos_url":"https://api.github.com/users/garyb/repos","events_url":"https://api.github.com/users/garyb/events{/privacy}","received_events_url":"https://api.github.com/users/garyb/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/slamdata/slamdata/milestones/3","html_url":"https://github.com/slamdata/slamdata/milestones/ASAP","labels_url":"https://api.github.com/repos/slamdata/slamdata/milestones/3/labels","id":1142028,"number":3,"title":"ASAP","description":"","creator":{"login":"jdegoes","id":156745,"avatar_url":"https://avatars.githubusercontent.com/u/156745?v=3","gravatar_id":"","url":"https://api.github.com/users/jdegoes","html_url":"https://github.com/jdegoes","followers_url":"https://api.github.com/users/jdegoes/followers","following_url":"https://api.github.com/users/jdegoes/following{/other_user}","gists_url":"https://api.github.com/users/jdegoes/gists{/gist_id}","starred_url":"https://api.github.com/users/jdegoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdegoes/subscriptions","organizations_url":"https://api.github.com/users/jdegoes/orgs","repos_url":"https://api.github.com/users/jdegoes/repos","events_url":"https://api.github.com/users/jdegoes/events{/privacy}","received_events_url":"https://api.github.com/users/jdegoes/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":82,"state":"open","created_at":"2015-06-01T01:05:36Z","updated_at":"2016-10-19T19:43:52Z","due_on":null,"closed_at":null},"comments":14,"created_at":"2016-10-19T19:43:52Z","updated_at":"2016-10-21T15:20:24Z","closed_at":null,"body":"As of quasar-analytics/quasar#1610 (not yet merged), quasar now supports uploading entire directories of files in a single request (`PUT` with a directory path). If a notebook is downloaded as a zip archive and re-uploaded to a new location, the new workspace seems to work in slamdata as far as I can tell.\r\n\r\nHowever, there are some rough edges that prevent the user from easily doing this through the UI:\r\n\r\n1. The Download dialog suggests that the extension \".zip\" will be added to the user-entered file name (and ignores it if it’s entered anyway), but the resulting file doesn’t actually have that extension, making it seem like the file is corrupt. NB: this is in Safari. In Chrome, I ended up with a file called \"download.zip\".\r\n2. The form defaults to CSV format, but \"Precise JSON\" (i.e. \"encode all types\") is a much better choice for preserving the contents.\r\n3. When uploading, the request path includes the file name (`/data/fs/.../xxx.zip`), which doesn’t work. I guess the user needs to be able to specify when they're uploading a directory, unless slamdata can detect that the selected file is a zip archive.\r\n4. The `Content-Type` is apparently hard-coded to `application/ldjson\", but somehow it needs to match what was used when the archive was downloaded. \r\n\r\nNote: the new upload capability is potentially useful for moving data files around as well, but my impression is that we’re mostly looking to help users manage workspaces at the moment. All of these issues exist either way, but we might also want to do something to make sure that workspace gets uploaded with the right name to be recognized as such."},"comment":{"url":"https://api.github.com/repos/slamdata/slamdata/issues/comments/255406118","html_url":"https://github.com/slamdata/slamdata/issues/1143#issuecomment-255406118","issue_url":"https://api.github.com/repos/slamdata/slamdata/issues/1143","id":255406118,"user":{"login":"jdegoes","id":156745,"avatar_url":"https://avatars.githubusercontent.com/u/156745?v=3","gravatar_id":"","url":"https://api.github.com/users/jdegoes","html_url":"https://github.com/jdegoes","followers_url":"https://api.github.com/users/jdegoes/followers","following_url":"https://api.github.com/users/jdegoes/following{/other_user}","gists_url":"https://api.github.com/users/jdegoes/gists{/gist_id}","starred_url":"https://api.github.com/users/jdegoes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdegoes/subscriptions","organizations_url":"https://api.github.com/users/jdegoes/orgs","repos_url":"https://api.github.com/users/jdegoes/repos","events_url":"https://api.github.com/users/jdegoes/events{/privacy}","received_events_url":"https://api.github.com/users/jdegoes/received_events","type":"User","site_admin":false},"created_at":"2016-10-21T15:20:24Z","updated_at":"2016-10-21T15:20:24Z","body":"@garyb You have to use the content type for zip files — since they are, as per HTTP spec, zip files. The backend will need to encode / decode the types of the various files inside the zip collection. We can track that in a new ticket."}}
{"actor":{"display_login":"jdegoes"}}