52 lines
1.2 KiB
Go
52 lines
1.2 KiB
Go
|
package arn
|
||
|
|
||
|
// HasMappings implements common mapping methods.
|
||
|
type hasMappings struct {
|
||
|
Mappings []*Mapping `json:"mappings" editable:"true"`
|
||
|
}
|
||
|
|
||
|
// SetMapping sets the ID of an external site to the obj.
|
||
|
func (obj *hasMappings) SetMapping(serviceName string, serviceID string) {
|
||
|
// Is the ID valid?
|
||
|
if serviceID == "" {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// If it already exists we don't need to add it
|
||
|
for _, external := range obj.Mappings {
|
||
|
if external.Service == serviceName {
|
||
|
external.ServiceID = serviceID
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Add the mapping
|
||
|
obj.Mappings = append(obj.Mappings, &Mapping{
|
||
|
Service: serviceName,
|
||
|
ServiceID: serviceID,
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// GetMapping returns the external ID for the given service.
|
||
|
func (obj *hasMappings) GetMapping(name string) string {
|
||
|
for _, external := range obj.Mappings {
|
||
|
if external.Service == name {
|
||
|
return external.ServiceID
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return ""
|
||
|
}
|
||
|
|
||
|
// RemoveMapping removes all mappings with the given service name and ID.
|
||
|
func (obj *hasMappings) RemoveMapping(name string) bool {
|
||
|
for index, external := range obj.Mappings {
|
||
|
if external.Service == name {
|
||
|
obj.Mappings = append(obj.Mappings[:index], obj.Mappings[index+1:]...)
|
||
|
return true
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return false
|
||
|
}
|