(ctx context.Context, forceLoad bool)
| 139 | } |
| 140 | |
| 141 | func (sdr *scriptDrivesRoute) _loadAvailableDriveScripts(ctx context.Context, forceLoad bool) ([]script.AvailableDriveScript, error) { |
| 142 | sdr.repoLock.Lock() |
| 143 | defer sdr.repoLock.Unlock() |
| 144 | |
| 145 | cacheFile := filepath.Join(sdr.config.TempDir, "drives-repository-cache.json") |
| 146 | |
| 147 | var result []script.AvailableDriveScript = nil |
| 148 | |
| 149 | if !forceLoad { |
| 150 | if data, e := os.ReadFile(cacheFile); e == nil { |
| 151 | temp := make([]script.AvailableDriveScript, 0) |
| 152 | if e := json.Unmarshal(data, &temp); e == nil { |
| 153 | result = temp |
| 154 | } |
| 155 | } |
| 156 | } |
| 157 | |
| 158 | if result == nil { |
| 159 | scripts, e := script.ListAvailableScriptsFromRepository(ctx, sdr.config.DriveRepositoryURL) |
| 160 | if e != nil { |
| 161 | return result, e |
| 162 | } |
| 163 | result = scripts |
| 164 | |
| 165 | data, e := json.Marshal(scripts) |
| 166 | if e != nil { |
| 167 | return result, e |
| 168 | } |
| 169 | if e := os.WriteFile(cacheFile, data, 0644); e != nil { |
| 170 | return result, e |
| 171 | } |
| 172 | } |
| 173 | return result, nil |
| 174 | } |
| 175 | |
| 176 | func (sdr *scriptDrivesRoute) getAvailableDrives(c *gin.Context) { |
| 177 | result, e := sdr._loadAvailableDriveScripts(c.Request.Context(), utils.ToBool(c.Query("force"))) |
no test coverage detected