<div dir="ltr"><div>Hi Dave,</div><div>don&#39;t worry about the talk! :-)</div><div><br></div><div>I think the solution you are proposing solves the problem in a clean way without changing the standard, so for me it is ok to proceed in this direction.</div><div>I also agree about not allowing ../ notation in paths.<br></div><div><br></div><div>Currently the recommendation document mentions the possibility of defining archive views (zip/tar) but it doesn&#39;t provide additional details about it.</div><div>I think that, even if this will be an optional feature, it would be very useful to include in the document an example like the one you included in your previous email, to guide implementers on how to develop this kind of feature.</div><div><br></div><div>I&#39;m also wondering if it could be useful to standardize it, maybe using a generic archive view with a parameter for defining the format.</div><div><br></div><div>Something like this:<br></div><div><br></div><div>     &lt;vos:target&gt;vos://..../parent-container&lt;/vos:target&gt;<br>     &lt;vos:direction&gt;pullFromVoSpace&lt;/vos:direction&gt;<br>     &lt;vos:protocol uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#httpget">ivoa.net/vospace/core#httpget</a>&quot;/&gt;<br>     &lt;vos:view uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#archive">ivoa.net/vospace/core#archive</a>&quot;&gt;</div><div>         &lt;vos:param uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#archive/format">ivoa.net/vospace/core#archive/format</a>&quot;&gt;zip&lt;/vos:param&gt;</div><div>         &lt;vos:param uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#archive/include">ivoa.net/vospace/core#archive/include</a>&quot;&gt;file-one&lt;/vos:param&gt;<div>         &lt;vos:param uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#archive/include">ivoa.net/vospace/core#archive/include</a>&quot;&gt;file-two&lt;/vos:param&gt;</div></div><div>     &lt;/vos:view&gt;</div><div><br></div><div>Cheers,</div><div>Sonia<br></div><div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Sonia,<br>
<br>
My apologies, I didn&#39;t listen carefully enough to your talk. I missed <br>
the part where you said you had already tried the container approach. I <br>
will endeavour to listen more closely in the future. In my defence, it <br>
was very early in the morning and I had not had enough coffee ;-)<br>
<br>
The example in your email prompted me to try another approach.<br>
<br>
On 2021-06-17 10:44, Zorba, Sonia wrote:<br>
&gt; For example, by default a pullFromVoSpace operation could accept only <br>
&gt; one<br>
&gt; target. However, a pullFromVoSpace operation with a view that returns a<br>
&gt; tar/zip archive would make sense.<br>
&gt; <br>
&gt;      &lt;vos:target&gt;vos://..../file-one&lt;/vos:target&gt;<br>
&gt;      &lt;vos:target&gt;vos://..../file-two&lt;/vos:target&gt;<br>
&gt;      &lt;vos:direction&gt;pullFromVoSpace&lt;/vos:direction&gt;<br>
&gt;      &lt;vos:protocol uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#httpget" rel="noreferrer" target="_blank">ivoa.net/vospace/core#httpget</a>&quot;/&gt;<br>
&gt;      &lt;vos:view uri=&quot;ivo://my-registry/vospace/views#tar&quot; /&gt;<br>
&gt; <br>
<br>
Could we add the list of selected files as params on the view ?<br>
<br>
     &lt;vos:target&gt;vos://..../parent-container&lt;/vos:target&gt;<br>
     &lt;vos:direction&gt;pullFromVoSpace&lt;/vos:direction&gt;<br>
     &lt;vos:protocol uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#httpget" rel="noreferrer" target="_blank">ivoa.net/vospace/core#httpget</a>&quot;/&gt;<br>
     &lt;vos:view uri=&quot;ivo://my-registry/vospace/views#tar&quot;&gt;<br>
         &lt;vos:param <br>
uri=&quot;ivo://my-registry/vospace/views#tar/include&quot;&gt;file-one&lt;/vos:param&gt;<br>
         &lt;vos:param <br>
uri=&quot;ivo://my-registry/vospace/views#tar/include&quot;&gt;file-two&lt;/vos:param&gt;<br>
     &lt;/vos:view&gt;<br>
<br>
This would mean we would only get the individual file selection on views <br>
that transfer multiple files, like tar and zip. Solving the question <br>
about what to do with multiple targets on a protocol that only transfers <br>
a single file.<br>
<br>
If we define the &#39;tar/include&#39; param for the &#39;tar&#39; view as:<br>
<br>
    * The name or path of a child node to include in the result, relative <br>
to the target container.<br>
    * The name or path MUST start with the name of a direct child of the <br>
target container.<br>
    * The name or path MAY use &#39;/&#39; to create a relative path within the <br>
target container.<br>
    * The name or path MUST NOT use &#39;..&#39; to refer to nodes outside the <br>
target container.<br>
    * The name or path MUST NOT start with &#39;/&#39; to imply an absolute path <br>
within the VOSpace.<br>
<br>
This limits the view to the simple case of only being able to select <br>
child nodes within the container, which matches the capability of the <br>
tar file format used for the transfer.<br>
<br>
Note - if a client wanted to be able to select files from anywhere in <br>
the VOSpace, they could treat the top level &#39;/&#39; node as a container, and <br>
select any files they wanted to include relative to the top of the <br>
space.<br>
<br>
We could also define a &#39;tar/exclude&#39; param for the &#39;tar&#39; view as:<br>
<br>
    * The name or path of a child node to **exclude** from the result, <br>
relative to the target container<br>
    * The name or path MUST start with the name of a direct child of the <br>
target container<br>
    * The name or path MAY use &#39;/&#39; to create a relative path within the <br>
target container<br>
    * The name or path MUST NOT use &#39;..&#39; to refer to nodes outside the <br>
target container<br>
    * The name or path MUST NOT start with &#39;/&#39; to imply an absolute path <br>
within the VOSpace<br>
<br>
So a more complex example would be:<br>
<br>
     &lt;vos:target&gt;vos://..../parent-container&lt;/vos:target&gt;<br>
     &lt;vos:direction&gt;pullFromVoSpace&lt;/vos:direction&gt;<br>
     &lt;vos:protocol uri=&quot;ivo://<a href="http://ivoa.net/vospace/core#httpget" rel="noreferrer" target="_blank">ivoa.net/vospace/core#httpget</a>&quot;/&gt;<br>
     &lt;vos:view uri=&quot;ivo://my-registry/vospace/views#tar&quot;&gt;<br>
         &lt;vos:param <br>
uri=&quot;ivo://my-registry/vospace/views#tar/include&quot;&gt;file-one&lt;/vos:param&gt;<br>
         &lt;vos:param <br>
uri=&quot;ivo://my-registry/vospace/views#tar/include&quot;&gt;path/file-two&lt;/vos:param&gt;<br>
         &lt;vos:param <br>
uri=&quot;ivo://my-registry/vospace/views#tar/include&quot;&gt;path/child-container&lt;/vos:param&gt;<br>
         &lt;vos:param <br>
uri=&quot;ivo://my-registry/vospace/views#tar/exclude&quot;&gt;path/child-container/file-three&lt;/vos:param&gt;<br>
     &lt;/vos:view&gt;<br>
<br>
Which translates as a request for a HTTP GET endpoint to download a tar <br>
file containing &#39;file-one&#39;, &#39;path/file-two&#39;, plus all the contents of <br>
&#39;path/child-container&#39; apart from &#39;path/child-container/file-three&#39;.<br>
<br>
We could add wild cards to the mix, probably by defining a subset of the <br>
Unix glob syntax.<br>
<a href="https://en.wikipedia.org/wiki/Glob_(programming)" rel="noreferrer" target="_blank">https://en.wikipedia.org/wiki/Glob_(programming)</a><br>
<br>
Hope this helps,<br>
-- Dave<br>
</blockquote></div></div>