Uniform trailing slashes, client.URL()
This commit is contained in:
parent
980367e527
commit
02f46aab11
3 changed files with 16 additions and 8 deletions
|
@ -10,6 +10,7 @@ import (
|
||||||
|
|
||||||
"github.com/thermokarst/bactdb/datastore"
|
"github.com/thermokarst/bactdb/datastore"
|
||||||
"github.com/thermokarst/bactdb/models"
|
"github.com/thermokarst/bactdb/models"
|
||||||
|
"github.com/thermokarst/bactdb/router"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -29,7 +30,8 @@ var (
|
||||||
func setup() {
|
func setup() {
|
||||||
store = datastore.NewMockDatastore()
|
store = datastore.NewMockDatastore()
|
||||||
SetupCerts("../keys/")
|
SetupCerts("../keys/")
|
||||||
resp, _ := httpClient.PostForm(apiClient.BaseURL.String()+"authenticate/",
|
u, _ := apiClient.URL(router.GetToken, nil, nil)
|
||||||
|
resp, _ := httpClient.PostForm(u.String(),
|
||||||
url.Values{"username": {"test_user"}, "password": {"password"}})
|
url.Values{"username": {"test_user"}, "password": {"password"}})
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,6 +127,12 @@ func (c *Client) url(apiRouteName string, routeVars map[string]string, opt inter
|
||||||
return url, nil
|
return url, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *Client) URL(apiRouteName string, routeVars map[string]string, opt interface{}) (*url.URL, error) {
|
||||||
|
u, err := c.url(apiRouteName, routeVars, opt)
|
||||||
|
absURL := c.BaseURL.ResolveReference(u)
|
||||||
|
return absURL, err
|
||||||
|
}
|
||||||
|
|
||||||
// NewRequest creates an API request. A relative URL can be provided in urlStr,
|
// NewRequest creates an API request. A relative URL can be provided in urlStr,
|
||||||
// in which case it is resolved relative to the BaseURL of the Client. Relative
|
// in which case it is resolved relative to the BaseURL of the Client. Relative
|
||||||
// URLs should always be specified without a preceding slash. If specified, the
|
// URLs should always be specified without a preceding slash. If specified, the
|
||||||
|
|
|
@ -9,7 +9,7 @@ func API() *mux.Router {
|
||||||
m.Path("/users").Methods("GET").Name(Users)
|
m.Path("/users").Methods("GET").Name(Users)
|
||||||
m.Path("/users").Methods("POST").Name(CreateUser)
|
m.Path("/users").Methods("POST").Name(CreateUser)
|
||||||
m.Path("/users/{Id:.+}").Methods("GET").Name(User)
|
m.Path("/users/{Id:.+}").Methods("GET").Name(User)
|
||||||
m.Path("/authenticate/").Methods("POST").Name(GetToken)
|
m.Path("/authenticate").Methods("POST").Name(GetToken)
|
||||||
|
|
||||||
// Genera
|
// Genera
|
||||||
m.Path("/genera").Methods("GET").Name(Genera)
|
m.Path("/genera").Methods("GET").Name(Genera)
|
||||||
|
@ -47,22 +47,22 @@ func API() *mux.Router {
|
||||||
m.Path("/characteristics/{Id:.+}").Methods("DELETE").Name(DeleteCharacteristic)
|
m.Path("/characteristics/{Id:.+}").Methods("DELETE").Name(DeleteCharacteristic)
|
||||||
|
|
||||||
// TextMeasurementTypes
|
// TextMeasurementTypes
|
||||||
m.Path("/text_measurement_types/").Methods("GET").Name(TextMeasurementTypes)
|
m.Path("/text_measurement_types").Methods("GET").Name(TextMeasurementTypes)
|
||||||
m.Path("/text_measurement_types/").Methods("POST").Name(CreateTextMeasurementType)
|
m.Path("/text_measurement_types").Methods("POST").Name(CreateTextMeasurementType)
|
||||||
m.Path("/text_measurement_types/{Id:.+}").Methods("GET").Name(TextMeasurementType)
|
m.Path("/text_measurement_types/{Id:.+}").Methods("GET").Name(TextMeasurementType)
|
||||||
m.Path("/text_measurement_types/{Id:.+}").Methods("PUT").Name(UpdateTextMeasurementType)
|
m.Path("/text_measurement_types/{Id:.+}").Methods("PUT").Name(UpdateTextMeasurementType)
|
||||||
m.Path("/text_measurement_types/{Id:.+}").Methods("DELETE").Name(DeleteTextMeasurementType)
|
m.Path("/text_measurement_types/{Id:.+}").Methods("DELETE").Name(DeleteTextMeasurementType)
|
||||||
|
|
||||||
// UnitTypes
|
// UnitTypes
|
||||||
m.Path("/unit_types/").Methods("GET").Name(UnitTypes)
|
m.Path("/unit_types").Methods("GET").Name(UnitTypes)
|
||||||
m.Path("/unit_types/").Methods("POST").Name(CreateUnitType)
|
m.Path("/unit_types").Methods("POST").Name(CreateUnitType)
|
||||||
m.Path("/unit_types/{Id:.+}").Methods("GET").Name(UnitType)
|
m.Path("/unit_types/{Id:.+}").Methods("GET").Name(UnitType)
|
||||||
m.Path("/unit_types/{Id:.+}").Methods("PUT").Name(UpdateUnitType)
|
m.Path("/unit_types/{Id:.+}").Methods("PUT").Name(UpdateUnitType)
|
||||||
m.Path("/unit_types/{Id:.+}").Methods("DELETE").Name(DeleteUnitType)
|
m.Path("/unit_types/{Id:.+}").Methods("DELETE").Name(DeleteUnitType)
|
||||||
|
|
||||||
// Measurements
|
// Measurements
|
||||||
m.Path("/measurements/").Methods("GET").Name(Measurements)
|
m.Path("/measurements").Methods("GET").Name(Measurements)
|
||||||
m.Path("/measurements/").Methods("POST").Name(CreateMeasurement)
|
m.Path("/measurements").Methods("POST").Name(CreateMeasurement)
|
||||||
m.Path("/measurements/{Id:.+}").Methods("GET").Name(Measurement)
|
m.Path("/measurements/{Id:.+}").Methods("GET").Name(Measurement)
|
||||||
m.Path("/measurements/{Id:.+}").Methods("PUT").Name(UpdateMeasurement)
|
m.Path("/measurements/{Id:.+}").Methods("PUT").Name(UpdateMeasurement)
|
||||||
m.Path("/measurements/{Id:.+}").Methods("DELETE").Name(DeleteMeasurement)
|
m.Path("/measurements/{Id:.+}").Methods("DELETE").Name(DeleteMeasurement)
|
||||||
|
|
Reference in a new issue