internal/services/common.go (63 lines of code) (raw):

package services import ( "encoding/json" "errors" "github.com/Azure/terraform-provider-azapi/internal/services/dynamic" "github.com/hashicorp/terraform-plugin-framework/attr" "github.com/hashicorp/terraform-plugin-framework/types" ) func buildOutputFromBody(responseBody interface{}, modelResponseExportValues types.Dynamic, defaultResult interface{}) (types.Dynamic, error) { if modelResponseExportValues.IsNull() { if defaultResult == nil { return types.DynamicValue(types.ObjectValueMust(map[string]attr.Type{}, map[string]attr.Value{})), nil } data, err := json.Marshal(defaultResult) if err != nil { return types.DynamicNull(), err } return dynamic.FromJSONImplied(data) } data, err := dynamic.ToJSON(modelResponseExportValues) if err != nil { return types.DynamicNull(), err } switch modelResponseExportValues.UnderlyingValue().(type) { case types.List, types.Tuple, types.Set: var responseExportValues []string if err = json.Unmarshal(data, &responseExportValues); err != nil { return types.DynamicNull(), err } return types.DynamicValue(flattenOutput(responseBody, responseExportValues)), nil case types.Map, types.Object: var responseExportValues map[string]string if err = json.Unmarshal(data, &responseExportValues); err != nil { return types.DynamicNull(), err } return types.DynamicValue(flattenOutputJMES(responseBody, responseExportValues)), nil default: return types.DynamicNull(), errors.New("unsupported type for response_export_values, must be a list or map") } } func volatileFieldList() []string { return []string{ "etag", "updatedBy", "updated", "updatedOn", "updatedTimestamp", "lastUpdatedOn", "lastUpdated", "lastUpdatedTime", "lastUpdatedTimeUtc", "lastUpdatedDateUTC", "modifiedOn", "lastModifiedUtc", "lastModifiedTimeUtc", "lastModifiedAt", "lastModifiedBy", "lastModifiedByType", "freeTrialRemainingTime", "trialDaysRemaining", "daysTrialRemaining", } }