迁移并重构项目,优化了执行流程
This commit is contained in:
		
							
								
								
									
										43
									
								
								internal/class/DNSProvider/Object.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								internal/class/DNSProvider/Object.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
package DNSProvider
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"reflect"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-acme/lego/v4/challenge"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Object struct {
 | 
			
		||||
	TencentCloud TencentCloud `json:"TencentCloud,omitempty"`
 | 
			
		||||
	AliCloud     AliCloud     `json:"AliCloud,omitempty"`
 | 
			
		||||
	HuaweiCloud  HuaweiCloud  `json:"HuaweiCloud,omitempty"`
 | 
			
		||||
	WestCN       WestCN       `json:"WestCN,omitempty"`
 | 
			
		||||
	RainYun      RainYun      `json:"RainYun,omitempty"`
 | 
			
		||||
	Dode         Dode         `json:"Dode,omitempty"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (dnsProvider *Object) Choose() ([]challenge.Provider, []error) {
 | 
			
		||||
 | 
			
		||||
	var Providers []challenge.Provider
 | 
			
		||||
	var Errors []error
 | 
			
		||||
	v := reflect.ValueOf(dnsProvider).Elem()
 | 
			
		||||
 | 
			
		||||
	for i := 0; i < v.NumField(); i++ {
 | 
			
		||||
		field := v.Field(i)
 | 
			
		||||
		if field.Kind() == reflect.Struct {
 | 
			
		||||
			for ii := 0; ii < field.NumField(); ii++ {
 | 
			
		||||
				if field.Field(ii).String() != "" {
 | 
			
		||||
					method, _ := field.Type().MethodByName("Provider")
 | 
			
		||||
					results := method.Func.Call([]reflect.Value{field})
 | 
			
		||||
					err, _ := results[1].Interface().(error)
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						Errors = append(Errors, err)
 | 
			
		||||
					} else {
 | 
			
		||||
						Providers = append(Providers, results[0].Interface().(challenge.Provider))
 | 
			
		||||
					}
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return Providers, Errors
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user