1// Copyright (c) 2016, 2018, 2019, Oracle and/or its affiliates. All rights reserved. 2// Code generated. DO NOT EDIT. 3 4// Announcements Service API 5// 6// Manage Oracle Cloud Infrastructure console announcements. 7// 8 9package announcementsservice 10 11import ( 12 "context" 13 "fmt" 14 "github.com/oracle/oci-go-sdk/common" 15 "net/http" 16) 17 18//AnnouncementClient a client for Announcement 19type AnnouncementClient struct { 20 common.BaseClient 21 config *common.ConfigurationProvider 22} 23 24// NewAnnouncementClientWithConfigurationProvider Creates a new default Announcement client with the given configuration provider. 25// the configuration provider will be used for the default signer as well as reading the region 26func NewAnnouncementClientWithConfigurationProvider(configProvider common.ConfigurationProvider) (client AnnouncementClient, err error) { 27 baseClient, err := common.NewClientWithConfig(configProvider) 28 if err != nil { 29 return 30 } 31 32 client = AnnouncementClient{BaseClient: baseClient} 33 client.BasePath = "20180904" 34 err = client.setConfigurationProvider(configProvider) 35 return 36} 37 38// SetRegion overrides the region of this client. 39func (client *AnnouncementClient) SetRegion(region string) { 40 client.Host = common.StringToRegion(region).Endpoint("announcements") 41} 42 43// SetConfigurationProvider sets the configuration provider including the region, returns an error if is not valid 44func (client *AnnouncementClient) setConfigurationProvider(configProvider common.ConfigurationProvider) error { 45 if ok, err := common.IsConfigurationProviderValid(configProvider); !ok { 46 return err 47 } 48 49 // Error has been checked already 50 region, _ := configProvider.Region() 51 client.SetRegion(region) 52 client.config = &configProvider 53 return nil 54} 55 56// ConfigurationProvider the ConfigurationProvider used in this client, or null if none set 57func (client *AnnouncementClient) ConfigurationProvider() *common.ConfigurationProvider { 58 return client.config 59} 60 61// GetAnnouncement Gets the details of a specific announcement. 62func (client AnnouncementClient) GetAnnouncement(ctx context.Context, request GetAnnouncementRequest) (response GetAnnouncementResponse, err error) { 63 var ociResponse common.OCIResponse 64 policy := common.NoRetryPolicy() 65 if request.RetryPolicy() != nil { 66 policy = *request.RetryPolicy() 67 } 68 ociResponse, err = common.Retry(ctx, request, client.getAnnouncement, policy) 69 if err != nil { 70 if ociResponse != nil { 71 response = GetAnnouncementResponse{RawResponse: ociResponse.HTTPResponse()} 72 } 73 return 74 } 75 if convertedResponse, ok := ociResponse.(GetAnnouncementResponse); ok { 76 response = convertedResponse 77 } else { 78 err = fmt.Errorf("failed to convert OCIResponse into GetAnnouncementResponse") 79 } 80 return 81} 82 83// getAnnouncement implements the OCIOperation interface (enables retrying operations) 84func (client AnnouncementClient) getAnnouncement(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 85 httpRequest, err := request.HTTPRequest(http.MethodGet, "/announcements/{announcementId}") 86 if err != nil { 87 return nil, err 88 } 89 90 var response GetAnnouncementResponse 91 var httpResponse *http.Response 92 httpResponse, err = client.Call(ctx, &httpRequest) 93 defer common.CloseBodyIfValid(httpResponse) 94 response.RawResponse = httpResponse 95 if err != nil { 96 return response, err 97 } 98 99 err = common.UnmarshalResponse(httpResponse, &response) 100 return response, err 101} 102 103// GetAnnouncementUserStatus Gets information about whether a specific announcement was acknowledged by a user. 104func (client AnnouncementClient) GetAnnouncementUserStatus(ctx context.Context, request GetAnnouncementUserStatusRequest) (response GetAnnouncementUserStatusResponse, err error) { 105 var ociResponse common.OCIResponse 106 policy := common.NoRetryPolicy() 107 if request.RetryPolicy() != nil { 108 policy = *request.RetryPolicy() 109 } 110 ociResponse, err = common.Retry(ctx, request, client.getAnnouncementUserStatus, policy) 111 if err != nil { 112 if ociResponse != nil { 113 response = GetAnnouncementUserStatusResponse{RawResponse: ociResponse.HTTPResponse()} 114 } 115 return 116 } 117 if convertedResponse, ok := ociResponse.(GetAnnouncementUserStatusResponse); ok { 118 response = convertedResponse 119 } else { 120 err = fmt.Errorf("failed to convert OCIResponse into GetAnnouncementUserStatusResponse") 121 } 122 return 123} 124 125// getAnnouncementUserStatus implements the OCIOperation interface (enables retrying operations) 126func (client AnnouncementClient) getAnnouncementUserStatus(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 127 httpRequest, err := request.HTTPRequest(http.MethodGet, "/announcements/{announcementId}/userStatus") 128 if err != nil { 129 return nil, err 130 } 131 132 var response GetAnnouncementUserStatusResponse 133 var httpResponse *http.Response 134 httpResponse, err = client.Call(ctx, &httpRequest) 135 defer common.CloseBodyIfValid(httpResponse) 136 response.RawResponse = httpResponse 137 if err != nil { 138 return response, err 139 } 140 141 err = common.UnmarshalResponse(httpResponse, &response) 142 return response, err 143} 144 145// ListAnnouncements Gets a list of announcements for the current tenancy. 146func (client AnnouncementClient) ListAnnouncements(ctx context.Context, request ListAnnouncementsRequest) (response ListAnnouncementsResponse, err error) { 147 var ociResponse common.OCIResponse 148 policy := common.NoRetryPolicy() 149 if request.RetryPolicy() != nil { 150 policy = *request.RetryPolicy() 151 } 152 ociResponse, err = common.Retry(ctx, request, client.listAnnouncements, policy) 153 if err != nil { 154 if ociResponse != nil { 155 response = ListAnnouncementsResponse{RawResponse: ociResponse.HTTPResponse()} 156 } 157 return 158 } 159 if convertedResponse, ok := ociResponse.(ListAnnouncementsResponse); ok { 160 response = convertedResponse 161 } else { 162 err = fmt.Errorf("failed to convert OCIResponse into ListAnnouncementsResponse") 163 } 164 return 165} 166 167// listAnnouncements implements the OCIOperation interface (enables retrying operations) 168func (client AnnouncementClient) listAnnouncements(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 169 httpRequest, err := request.HTTPRequest(http.MethodGet, "/announcements") 170 if err != nil { 171 return nil, err 172 } 173 174 var response ListAnnouncementsResponse 175 var httpResponse *http.Response 176 httpResponse, err = client.Call(ctx, &httpRequest) 177 defer common.CloseBodyIfValid(httpResponse) 178 response.RawResponse = httpResponse 179 if err != nil { 180 return response, err 181 } 182 183 err = common.UnmarshalResponse(httpResponse, &response) 184 return response, err 185} 186 187// UpdateAnnouncementUserStatus Updates the status of the specified announcement with regard to whether it has been marked as read. 188func (client AnnouncementClient) UpdateAnnouncementUserStatus(ctx context.Context, request UpdateAnnouncementUserStatusRequest) (response UpdateAnnouncementUserStatusResponse, err error) { 189 var ociResponse common.OCIResponse 190 policy := common.NoRetryPolicy() 191 if request.RetryPolicy() != nil { 192 policy = *request.RetryPolicy() 193 } 194 ociResponse, err = common.Retry(ctx, request, client.updateAnnouncementUserStatus, policy) 195 if err != nil { 196 if ociResponse != nil { 197 response = UpdateAnnouncementUserStatusResponse{RawResponse: ociResponse.HTTPResponse()} 198 } 199 return 200 } 201 if convertedResponse, ok := ociResponse.(UpdateAnnouncementUserStatusResponse); ok { 202 response = convertedResponse 203 } else { 204 err = fmt.Errorf("failed to convert OCIResponse into UpdateAnnouncementUserStatusResponse") 205 } 206 return 207} 208 209// updateAnnouncementUserStatus implements the OCIOperation interface (enables retrying operations) 210func (client AnnouncementClient) updateAnnouncementUserStatus(ctx context.Context, request common.OCIRequest) (common.OCIResponse, error) { 211 httpRequest, err := request.HTTPRequest(http.MethodPut, "/announcements/{announcementId}/userStatus") 212 if err != nil { 213 return nil, err 214 } 215 216 var response UpdateAnnouncementUserStatusResponse 217 var httpResponse *http.Response 218 httpResponse, err = client.Call(ctx, &httpRequest) 219 defer common.CloseBodyIfValid(httpResponse) 220 response.RawResponse = httpResponse 221 if err != nil { 222 return response, err 223 } 224 225 err = common.UnmarshalResponse(httpResponse, &response) 226 return response, err 227} 228