|
6 | 6 | "fmt"
|
7 | 7 | "github.com/gin-gonic/gin"
|
8 | 8 | "github.com/jinzhu/gorm"
|
| 9 | + "github.com/qb0C80aE/clay/asset" |
9 | 10 | "github.com/qb0C80aE/clay/extension"
|
10 | 11 | "github.com/qb0C80aE/clay/logging"
|
11 | 12 | "github.com/qb0C80aE/clay/model"
|
@@ -57,6 +58,63 @@ type clayConfigURLAlias struct {
|
57 | 58 | Query string `json:"query"`
|
58 | 59 | }
|
59 | 60 |
|
| 61 | +func (receiver *clayRuntimeInitializer) readFile(filePath string) ([]byte, error) { |
| 62 | + environmentalVariableSet := extension.GetCurrentEnvironmentalVariableSet() |
| 63 | + switch environmentalVariableSet.GetClayAssetMode() { |
| 64 | + case "internal": |
| 65 | + file, err := asset.Assets.Open(filePath) |
| 66 | + if err != nil { |
| 67 | + logging.Logger().Debug(err.Error()) |
| 68 | + return nil, err |
| 69 | + } |
| 70 | + defer file.Close() |
| 71 | + |
| 72 | + return ioutil.ReadAll(file) |
| 73 | + case "external": |
| 74 | + return ioutil.ReadFile(filePath) |
| 75 | + } |
| 76 | + |
| 77 | + logging.Logger().Debugf("invalid asset mode %s", environmentalVariableSet.GetClayAssetMode()) |
| 78 | + return nil, fmt.Errorf("invalid asset mode %s", environmentalVariableSet.GetClayAssetMode()) |
| 79 | +} |
| 80 | + |
| 81 | +func (receiver *clayRuntimeInitializer) copyFromFile(writer io.Writer, filePath string) error { |
| 82 | + environmentalVariableSet := extension.GetCurrentEnvironmentalVariableSet() |
| 83 | + switch environmentalVariableSet.GetClayAssetMode() { |
| 84 | + case "internal": |
| 85 | + file, err := asset.Assets.Open(filePath) |
| 86 | + if err != nil { |
| 87 | + logging.Logger().Debug(err.Error()) |
| 88 | + return err |
| 89 | + } |
| 90 | + defer file.Close() |
| 91 | + |
| 92 | + if _, err = io.Copy(writer, file); err != nil { |
| 93 | + logging.Logger().Critical(err.Error()) |
| 94 | + return err |
| 95 | + } |
| 96 | + |
| 97 | + return nil |
| 98 | + case "external": |
| 99 | + file, err := os.Open(filePath) |
| 100 | + if err != nil { |
| 101 | + logging.Logger().Critical(err.Error()) |
| 102 | + return err |
| 103 | + } |
| 104 | + defer file.Close() |
| 105 | + |
| 106 | + if _, err = io.Copy(writer, file); err != nil { |
| 107 | + logging.Logger().Critical(err.Error()) |
| 108 | + return err |
| 109 | + } |
| 110 | + |
| 111 | + return nil |
| 112 | + } |
| 113 | + |
| 114 | + logging.Logger().Debugf("invalid asset mode %s", environmentalVariableSet.GetClayAssetMode()) |
| 115 | + return fmt.Errorf("invalid asset mode %s", environmentalVariableSet.GetClayAssetMode()) |
| 116 | +} |
| 117 | + |
60 | 118 | func (receiver *clayRuntimeInitializer) initialize() {
|
61 | 119 | environmentalVariableSet := extension.GetCurrentEnvironmentalVariableSet()
|
62 | 120 | configFilePath := environmentalVariableSet.GetClayConfigFilePath()
|
@@ -98,7 +156,7 @@ func (receiver *clayRuntimeInitializer) initialize() {
|
98 | 156 | configFilePath = path.Join(dir, "clay_config.json")
|
99 | 157 | }
|
100 | 158 |
|
101 |
| - configJSONData, err := ioutil.ReadFile(configFilePath) |
| 159 | + configJSONData, err := receiver.readFile(configFilePath) |
102 | 160 | if err != nil {
|
103 | 161 | logging.Logger().Debugf("cloud not load %s, just boot up without initial configuration", configFilePath)
|
104 | 162 | return
|
@@ -134,7 +192,7 @@ func (receiver *clayRuntimeInitializer) initialize() {
|
134 | 192 | func (receiver *clayRuntimeInitializer) loadUserDefinedModels(config *clayConfig, host string, port int) error {
|
135 | 193 | for _, userDefinedModel := range config.UserDefinedModels {
|
136 | 194 | filePath := filepath.Join(config.General.UserDefinedModelsDirectory, userDefinedModel.FileName)
|
137 |
| - jsonData, err := ioutil.ReadFile(filePath) |
| 195 | + jsonData, err := receiver.readFile(filePath) |
138 | 196 | if err != nil {
|
139 | 197 | logging.Logger().Critical(err.Error())
|
140 | 198 | return err
|
@@ -171,7 +229,7 @@ func (receiver *clayRuntimeInitializer) loadUserDefinedModels(config *clayConfig
|
171 | 229 | func (receiver *clayRuntimeInitializer) loadEphemeralTemplates(config *clayConfig, host string, port int) error {
|
172 | 230 | for _, ephemeralTemplate := range config.EphemeralTemplates {
|
173 | 231 | filePath := filepath.Join(config.General.EphemeralTemplatesDirectory, ephemeralTemplate.FileName)
|
174 |
| - data, err := ioutil.ReadFile(filePath) |
| 232 | + data, err := receiver.readFile(filePath) |
175 | 233 | if err != nil {
|
176 | 234 | logging.Logger().Critical(err.Error())
|
177 | 235 | return err
|
@@ -238,14 +296,7 @@ func (receiver *clayRuntimeInitializer) loadEphemeralBinaryObjects(config *clayC
|
238 | 296 | return err
|
239 | 297 | }
|
240 | 298 |
|
241 |
| - file, err := os.Open(filePath) |
242 |
| - if err != nil { |
243 |
| - logging.Logger().Critical(err.Error()) |
244 |
| - return err |
245 |
| - } |
246 |
| - defer file.Close() |
247 |
| - |
248 |
| - if _, err = io.Copy(contentWriter, file); err != nil { |
| 299 | + if err := receiver.copyFromFile(contentWriter, filePath); err != nil { |
249 | 300 | logging.Logger().Critical(err.Error())
|
250 | 301 | return err
|
251 | 302 | }
|
|
0 commit comments