-
Notifications
You must be signed in to change notification settings - Fork 665
/
resource_ibm_appid_redirect_urls.go
141 lines (112 loc) · 3.88 KB
/
resource_ibm_appid_redirect_urls.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package appid
import (
"context"
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/conns"
"github.com/IBM-Cloud/terraform-provider-ibm/ibm/flex"
appid "github.com/IBM/appid-management-go-sdk/appidmanagementv4"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func ResourceIBMAppIDRedirectURLs() *schema.Resource {
return &schema.Resource{
Description: "Redirect URIs that can be used as callbacks of App ID authentication flow",
CreateContext: resourceIBMAppIDRedirectURLsCreate,
ReadContext: resourceIBMAppIDRedirectURLsRead,
UpdateContext: resourceIBMAppIDRedirectURLsUpdate,
DeleteContext: resourceIBMAppIDRedirectURLsDelete,
Importer: &schema.ResourceImporter{
StateContext: schema.ImportStatePassthroughContext,
},
Schema: map[string]*schema.Schema{
"tenant_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "The service `tenantId`",
},
"urls": {
Description: "A list of redirect URLs",
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Required: true,
},
},
}
}
func resourceIBMAppIDRedirectURLsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
appIDClient, err := meta.(conns.ClientSession).AppIDAPI()
if err != nil {
return diag.FromErr(err)
}
tenantID := d.Id()
urls, resp, err := appIDClient.GetRedirectUrisWithContext(ctx, &appid.GetRedirectUrisOptions{
TenantID: &tenantID,
})
if err != nil {
return diag.Errorf("Error loading AppID Cloud Directory redirect urls: %s\n%s", err, resp)
}
if err := d.Set("urls", urls.RedirectUris); err != nil {
return diag.Errorf("Error setting AppID Cloud Directory redirect urls: %s", err)
}
d.Set("tenant_id", tenantID)
return nil
}
func resourceIBMAppIDRedirectURLsCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
appIDClient, err := meta.(conns.ClientSession).AppIDAPI()
if err != nil {
return diag.FromErr(err)
}
tenantID := d.Get("tenant_id").(string)
urls := d.Get("urls")
redirectURLs := flex.ExpandStringList(urls.([]interface{}))
resp, err := appIDClient.UpdateRedirectUrisWithContext(ctx, &appid.UpdateRedirectUrisOptions{
TenantID: &tenantID,
RedirectUrisArray: &appid.RedirectURIConfig{
RedirectUris: redirectURLs,
},
})
if err != nil {
return diag.Errorf("Error updating AppID Cloud Directory redirect URLs: %s\n%s", err, resp)
}
d.SetId(tenantID)
return resourceIBMAppIDRedirectURLsRead(ctx, d, meta)
}
func resourceIBMAppIDRedirectURLsUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
appIDClient, err := meta.(conns.ClientSession).AppIDAPI()
if err != nil {
return diag.FromErr(err)
}
tenantID := d.Get("tenant_id").(string)
urls := d.Get("urls")
redirectURLs := flex.ExpandStringList(urls.([]interface{}))
resp, err := appIDClient.UpdateRedirectUrisWithContext(ctx, &appid.UpdateRedirectUrisOptions{
TenantID: &tenantID,
RedirectUrisArray: &appid.RedirectURIConfig{
RedirectUris: redirectURLs,
},
})
if err != nil {
return diag.Errorf("Error updating AppID Cloud Directory redirect URLs: %s\n%s", err, resp)
}
return resourceIBMAppIDRedirectURLsRead(ctx, d, meta)
}
func resourceIBMAppIDRedirectURLsDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
appIDClient, err := meta.(conns.ClientSession).AppIDAPI()
if err != nil {
return diag.FromErr(err)
}
tenantID := d.Get("tenant_id").(string)
resp, err := appIDClient.UpdateRedirectUrisWithContext(ctx, &appid.UpdateRedirectUrisOptions{
TenantID: &tenantID,
RedirectUrisArray: &appid.RedirectURIConfig{
RedirectUris: []string{},
},
})
if err != nil {
return diag.Errorf("Error resetting AppID Cloud Directory redirect URLs: %s\n%s", err, resp)
}
d.SetId("")
return nil
}