{"action":"created","issue":{"url":"https://api.github.com/repos/DICE-UNC/jargon/issues/31","labels_url":"https://api.github.com/repos/DICE-UNC/jargon/issues/31/labels{/name}","comments_url":"https://api.github.com/repos/DICE-UNC/jargon/issues/31/comments","events_url":"https://api.github.com/repos/DICE-UNC/jargon/issues/31/events","html_url":"https://github.com/DICE-UNC/jargon/issues/31","id":37968155,"number":31,"title":"enhancements to transfer operations for add'l checking and path handling.","user":{"login":"michael-conway","id":1097261,"avatar_url":"https://avatars.githubusercontent.com/u/1097261?v=3","gravatar_id":"","url":"https://api.github.com/users/michael-conway","html_url":"https://github.com/michael-conway","followers_url":"https://api.github.com/users/michael-conway/followers","following_url":"https://api.github.com/users/michael-conway/following{/other_user}","gists_url":"https://api.github.com/users/michael-conway/gists{/gist_id}","starred_url":"https://api.github.com/users/michael-conway/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michael-conway/subscriptions","organizations_url":"https://api.github.com/users/michael-conway/orgs","repos_url":"https://api.github.com/users/michael-conway/repos","events_url":"https://api.github.com/users/michael-conway/events{/privacy}","received_events_url":"https://api.github.com/users/michael-conway/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/DICE-UNC/jargon/labels/C","name":"C","color":"009800"},{"url":"https://api.github.com/repos/DICE-UNC/jargon/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/DICE-UNC/jargon/labels/iPlant","name":"iPlant","color":"f7c6c7"}],"state":"open","locked":false,"assignee":{"login":"michael-conway","id":1097261,"avatar_url":"https://avatars.githubusercontent.com/u/1097261?v=3","gravatar_id":"","url":"https://api.github.com/users/michael-conway","html_url":"https://github.com/michael-conway","followers_url":"https://api.github.com/users/michael-conway/followers","following_url":"https://api.github.com/users/michael-conway/following{/other_user}","gists_url":"https://api.github.com/users/michael-conway/gists{/gist_id}","starred_url":"https://api.github.com/users/michael-conway/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michael-conway/subscriptions","organizations_url":"https://api.github.com/users/michael-conway/orgs","repos_url":"https://api.github.com/users/michael-conway/repos","events_url":"https://api.github.com/users/michael-conway/events{/privacy}","received_events_url":"https://api.github.com/users/michael-conway/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/DICE-UNC/jargon/milestones/10","html_url":"https://github.com/DICE-UNC/jargon/milestones/Minor%20changes%20and%20compatibility%20-%204.0.2.4","labels_url":"https://api.github.com/repos/DICE-UNC/jargon/milestones/10/labels","id":1126370,"number":10,"title":"Minor changes and compatibility - 4.0.2.4","description":"A performance oriented and bug fix release to accompany iRODS 4.1.6","creator":{"login":"michael-conway","id":1097261,"avatar_url":"https://avatars.githubusercontent.com/u/1097261?v=3","gravatar_id":"","url":"https://api.github.com/users/michael-conway","html_url":"https://github.com/michael-conway","followers_url":"https://api.github.com/users/michael-conway/followers","following_url":"https://api.github.com/users/michael-conway/following{/other_user}","gists_url":"https://api.github.com/users/michael-conway/gists{/gist_id}","starred_url":"https://api.github.com/users/michael-conway/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michael-conway/subscriptions","organizations_url":"https://api.github.com/users/michael-conway/orgs","repos_url":"https://api.github.com/users/michael-conway/repos","events_url":"https://api.github.com/users/michael-conway/events{/privacy}","received_events_url":"https://api.github.com/users/michael-conway/received_events","type":"User","site_admin":false},"open_issues":7,"closed_issues":14,"state":"open","created_at":"2015-05-22T19:31:37Z","updated_at":"2015-11-09T17:44:30Z","due_on":"2015-09-25T04:00:00Z","closed_at":null},"comments":5,"created_at":"2014-07-16T10:25:06Z","updated_at":"2015-11-09T18:05:38Z","closed_at":null,"body":"Also, I DataTransferOperations.getOperation behaves a bit oddly. If I ask it to get a collection, it will not let me name the resulting directory. Say I make cal call to copy /demo/home/dooley/somefolder to /Users/dooley/deleteme. If the local folder exists, some folder will be copied into it. If it does not, it will be created and some folder copied in. That’s the opposite of what I’d expect on a posix file system and forces me to manually check the local path, create the target directory, list the remote path, and copy each collection or data object individually to the new target directory. All of that after I have to manually check permissions manually so I can pass back valid error messages to my users. \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nHere is the behavior of scp:\r\n```Shell\r\n\r\ndooley$ scp -r docker:deleteme .\r\ndooley$ ls\r\ndeleteme\r\ndooley$ scp -r docker:deleteme deleteme\r\ndooley$ ls deleteme\r\ndeleteme\r\ndooley$ scp -r docker:deleteme samefoldernewname\r\ndooley$ ls\r\ndeleteme\r\nsamefoldernewname\r\n\r\n```\r\n\r\n\r\nexample handler in pseudocode\r\n\r\n```Shell\r\n\r\nIf the target exists, \r\n    if can write,if source is directory \r\n             if target is file\r\n                     throw io exception\r\n               else\r\n                 create source within target and copy contents recursively \r\n       else if target is directory\r\n                  copy source into target, overwriting matching file if present\r\n      else\r\n           overwrite target\r\n    else\r\n           throw permission exception\r\nelse if you can stat the target’s parent folder, \r\n        if can write, \r\n             if source is directory then create the source under the parent and copy contents recursively.\r\n           else\r\n                copy source under parent\r\n        else\r\n                throw permission exception\r\nelse\r\n        throw file not found \r\n\r\n\r\n```"},"comment":{"url":"https://api.github.com/repos/DICE-UNC/jargon/issues/comments/155142213","html_url":"https://github.com/DICE-UNC/jargon/issues/31#issuecomment-155142213","issue_url":"https://api.github.com/repos/DICE-UNC/jargon/issues/31","id":155142213,"user":{"login":"michael-conway","id":1097261,"avatar_url":"https://avatars.githubusercontent.com/u/1097261?v=3","gravatar_id":"","url":"https://api.github.com/users/michael-conway","html_url":"https://github.com/michael-conway","followers_url":"https://api.github.com/users/michael-conway/followers","following_url":"https://api.github.com/users/michael-conway/following{/other_user}","gists_url":"https://api.github.com/users/michael-conway/gists{/gist_id}","starred_url":"https://api.github.com/users/michael-conway/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michael-conway/subscriptions","organizations_url":"https://api.github.com/users/michael-conway/orgs","repos_url":"https://api.github.com/users/michael-conway/repos","events_url":"https://api.github.com/users/michael-conway/events{/privacy}","received_events_url":"https://api.github.com/users/michael-conway/received_events","type":"User","site_admin":false},"created_at":"2015-11-09T18:05:38Z","updated_at":"2015-11-09T18:05:38Z","body":"added dir create and folder permission checks to get and put code"}}