(c *gin.Context)
| 873 | } |
| 874 | |
| 875 | func parsePutSettingsProviderRequest(c *gin.Context) (settingspkg.CollectionItemPutRequest, error) { |
| 876 | var body contract.PutSettingsProviderRequest |
| 877 | if err := c.ShouldBindJSON(&body); err != nil { |
| 878 | return settingspkg.CollectionItemPutRequest{}, NewSettingsValidationError( |
| 879 | fmt.Errorf("decode provider settings request: %w", err), |
| 880 | ) |
| 881 | } |
| 882 | if providerSettingsPayloadEmpty(body.Settings) && len(body.Secrets) == 0 { |
| 883 | return settingspkg.CollectionItemPutRequest{}, NewSettingsValidationError( |
| 884 | errors.New("provider.settings is required"), |
| 885 | ) |
| 886 | } |
| 887 | req, err := parseSettingsCollectionRequest(c, settingspkg.CollectionProviders) |
| 888 | if err != nil { |
| 889 | return settingspkg.CollectionItemPutRequest{}, err |
| 890 | } |
| 891 | name, err := requiredSettingsPathValue(c.Param("name"), "name") |
| 892 | if err != nil { |
| 893 | return settingspkg.CollectionItemPutRequest{}, err |
| 894 | } |
| 895 | settings := settingspkg.ProviderSettings{ |
| 896 | Command: strings.TrimSpace(body.Settings.Command), |
| 897 | DisplayName: strings.TrimSpace(body.Settings.DisplayName), |
| 898 | Models: providerModelsFromPayload(body.Settings.Models), |
| 899 | ModelsSet: body.Settings.Models != nil, |
| 900 | Harness: aghconfig.ProviderHarness(strings.TrimSpace(body.Settings.Harness)), |
| 901 | RuntimeProvider: strings.TrimSpace(body.Settings.RuntimeProvider), |
| 902 | Transport: strings.TrimSpace(body.Settings.Transport), |
| 903 | BaseURL: strings.TrimSpace(body.Settings.BaseURL), |
| 904 | AuthMode: aghconfig.ProviderAuthMode(strings.TrimSpace(body.Settings.AuthMode)), |
| 905 | EnvPolicy: aghconfig.ProviderEnvPolicy(strings.TrimSpace(body.Settings.EnvPolicy)), |
| 906 | HomePolicy: aghconfig.ProviderHomePolicy(strings.TrimSpace(body.Settings.HomePolicy)), |
| 907 | AuthStatusCmd: strings.TrimSpace(body.Settings.AuthStatusCmd), |
| 908 | AuthLoginCmd: strings.TrimSpace(body.Settings.AuthLoginCmd), |
| 909 | CredentialSlots: providerCredentialSlotsFromPayload(body.Settings.CredentialSlots), |
| 910 | } |
| 911 | return settingspkg.CollectionItemPutRequest{ |
| 912 | CollectionRequest: req, |
| 913 | Name: name, |
| 914 | Provider: &settings, |
| 915 | ProviderSecrets: providerSecretWritesFromPayload(body.Secrets), |
| 916 | }, nil |
| 917 | } |
| 918 | |
| 919 | func providerSettingsPayloadEmpty(payload contract.SettingsProviderSettingsPayload) bool { |
| 920 | return strings.TrimSpace(payload.Command) == "" && |
no test coverage detected