2011-01-14 18 views
15

Nella mia sede di impiego abbiamo un server proxy di temperamento che spesso rende inutilizzabile la finestra dei pacchetti di nuget (lo stesso è vero per la riga di comando di nuget). Ho iniziato a copiare i pacchetti che utilizziamo più spesso a un mirror locale su una condivisione di rete, ma farlo manualmente è diventato noioso. Ho sperimentato l'utilizzo di PowerShell per scaricare automaticamente i pacchetti, ma non riesco a ottenere l'odata uri per mostrare più di alcuni pacchetti. Per esempio eseguendo la seguente query:Mirroring del repository ufficiale di pacchetti nuget

$feed = [xml]$webClient.DownloadString("http://feed.nuget.org/ctp2/odata/v1/Packages?$filter=startswith(Title,'O') eq true&$top=100") 

deve restituire i primi 100 pacchetti che hanno un titolo che inizia con 'O', ma nessun pacchetti vengono restituiti. Stranamente questo funziona bene con i nomi dei pacchetti che sono nella lista predefinita dei pacchetti restituiti colpendo http://feed.nuget.org/ctp2/odata/v1/Packages. Sono indovinando che c'è una sorta di paging in corso, dove sto solo interrogando sulla prima pagina. Giocando con i parametri non riesco a passare alla pagina successiva ...

Qualcun altro ha provato a farlo? Qualcun altro ha notato timeout/richieste errate usando nuget?

risposta

2

È necessario fare attenzione quando si utilizza la stringa tra virgolette. Prova a valutare l'url prima o solo una parte:

PS> "?$filter=startswith(Title,'O') eq true&$top=100" 
?=startswith(Title,'O') eq true&=100 

PS> "?`$filter=startswith(Title,'O') eq true&`$top=100" 
?$filter=startswith(Title,'O') eq true&$top=100 

Sfuggire al segno del dollaro con apice.

Quindi ho provato a interrogare il sito con (si spera) l'url corretto, ma non è stata restituita alcuna voce di risultato. Quindi - ancora senza fortuna e potrebbe esserci qualcosa di sbagliato nel servizio.

3

Il mio suggerimento è quello di utilizzare la New-ODataServiceProxy o addirittura di PSOdata project

Con solo la funzione di proxy si può fare questo Doug Finke:

New-ODataServiceProxy http://packages.nuget.org/v1/FeedService.svc/ NuGet 
# Chain up calls to AddQueryOption (please excuse my line wrapping): 
$NuGet.Packages.AddQueryOption('$filter',"startswith(Title,'O') eq true" 
      ).AddQueryOption('$top','3') | 
Format-Table Id, Version, Authors, Description -Wrap -Auto 
Problemi correlati