mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
* WTF-986 Wrap the DigitalOcean droplet in our own droplet This gives us something to build off while still providing the underlying functionality of the original droplet instance. Signed-off-by: Chris Cummer <chriscummer@me.com> * WTF-986 Dynamically display droplet attributes based on defined column names Signed-off-by: Chris Cummer <chriscummer@me.com> * WTF-986 Read DigitalOcean column configuration from settings Signed-off-by: Chris Cummer <chriscummer@me.com> * WTF-986 Extract the reflection bits into a Reflective package Signed-off-by: Chris Cummer <chriscummer@me.com>
26 lines
647 B
Go
26 lines
647 B
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
)
|
|
|
|
// Reflective is a convenience wrapper for objects that makes it possible to
|
|
// extract property values from the object by property name
|
|
type Reflective struct{}
|
|
|
|
// StringValueForProperty returns a string value for the given property
|
|
// If the property doesn't exist, it returns an error
|
|
func (ref *Reflective) StringValueForProperty(propName string) (string, error) {
|
|
v := reflect.ValueOf(ref)
|
|
refVal := reflect.Indirect(v).FieldByName(propName)
|
|
|
|
if !refVal.IsValid() {
|
|
return "", fmt.Errorf("invalid property name: %s", propName)
|
|
}
|
|
|
|
strVal := fmt.Sprintf("%v", refVal)
|
|
|
|
return strVal, nil
|
|
}
|