@@ -4,6 +4,7 @@ package cargo
44import (
55 "context"
66 "fmt"
7+ "net/url"
78 "strings"
89 "time"
910
@@ -102,7 +103,7 @@ type ownerInfo struct {
102103}
103104
104105func (r * Registry ) FetchPackage (ctx context.Context , name string ) (* core.Package , error ) {
105- url := fmt .Sprintf ("%s/api/v1/crates/%s" , r .baseURL , name )
106+ url := fmt .Sprintf ("%s/api/v1/crates/%s" , r .baseURL , url . PathEscape ( name ) )
106107
107108 var resp crateResponse
108109 if err := r .client .GetJSON (ctx , url , & resp ); err != nil {
@@ -132,7 +133,7 @@ func (r *Registry) FetchPackage(ctx context.Context, name string) (*core.Package
132133}
133134
134135func (r * Registry ) FetchVersions (ctx context.Context , name string ) ([]core.Version , error ) {
135- url := fmt .Sprintf ("%s/api/v1/crates/%s" , r .baseURL , name )
136+ url := fmt .Sprintf ("%s/api/v1/crates/%s" , r .baseURL , url . PathEscape ( name ) )
136137
137138 var resp crateResponse
138139 if err := r .client .GetJSON (ctx , url , & resp ); err != nil {
@@ -181,7 +182,7 @@ func (r *Registry) FetchVersions(ctx context.Context, name string) ([]core.Versi
181182}
182183
183184func (r * Registry ) FetchDependencies (ctx context.Context , name , version string ) ([]core.Dependency , error ) {
184- url := fmt .Sprintf ("%s/api/v1/crates/%s/%s/dependencies" , r .baseURL , name , version )
185+ url := fmt .Sprintf ("%s/api/v1/crates/%s/%s/dependencies" , r .baseURL , url . PathEscape ( name ), url . PathEscape ( version ) )
185186
186187 var resp dependenciesResponse
187188 if err := r .client .GetJSON (ctx , url , & resp ); err != nil {
@@ -216,7 +217,7 @@ func mapScope(kind string) core.Scope {
216217}
217218
218219func (r * Registry ) FetchMaintainers (ctx context.Context , name string ) ([]core.Maintainer , error ) {
219- url := fmt .Sprintf ("%s/api/v1/crates/%s/owner_user" , r .baseURL , name )
220+ url := fmt .Sprintf ("%s/api/v1/crates/%s/owner_user" , r .baseURL , url . PathEscape ( name ) )
220221
221222 var resp ownersResponse
222223 if err := r .client .GetJSON (ctx , url , & resp ); err != nil {
0 commit comments