Ai
1 Star 0 Fork 0

MrCoder/openapi

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
api_default.go 21.99 KB
一键复制 编辑 原始数据 按行查看 历史
MrCoder 提交于 2023-12-22 15:27 +08:00 . update
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549
/*
M1_MetricsReportingProvisioning
5GMS AF M1 Metrics Reporting Provisioning API © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved.
API version: 2.1.0
*/
// Code generated by OpenAPI Generator (https://openapi-generator.tech); DO NOT EDIT.
package OpenAPI_M1_MetricsReportingProvisioning
import (
"bytes"
"context"
"io"
"net/http"
"net/url"
"strings"
)
// DefaultAPIService DefaultAPI service
type DefaultAPIService service
type ApiActivateMetricsReportingRequest struct {
ctx context.Context
ApiService *DefaultAPIService
provisioningSessionId string
metricsReportingConfiguration *MetricsReportingConfiguration
}
// A JSON representation of a Metrics Reporting Configuration
func (r ApiActivateMetricsReportingRequest) MetricsReportingConfiguration(metricsReportingConfiguration MetricsReportingConfiguration) ApiActivateMetricsReportingRequest {
r.metricsReportingConfiguration = &metricsReportingConfiguration
return r
}
func (r ApiActivateMetricsReportingRequest) Execute() (*http.Response, error) {
return r.ApiService.ActivateMetricsReportingExecute(r)
}
/*
ActivateMetricsReporting Activate the Metrics reporting procedure for the specified Provisioning Session by providing the Metrics Reporting Configuration
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param provisioningSessionId The resource identifier of an existing Provisioning Session.
@return ApiActivateMetricsReportingRequest
*/
func (a *DefaultAPIService) ActivateMetricsReporting(ctx context.Context, provisioningSessionId string) ApiActivateMetricsReportingRequest {
return ApiActivateMetricsReportingRequest{
ApiService: a,
ctx: ctx,
provisioningSessionId: provisioningSessionId,
}
}
// Execute executes the request
func (a *DefaultAPIService) ActivateMetricsReportingExecute(r ApiActivateMetricsReportingRequest) (*http.Response, error) {
var (
localVarHTTPMethod = http.MethodPost
localVarPostBody interface{}
formFiles []formFile
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.ActivateMetricsReporting")
if err != nil {
return nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations"
localVarPath = strings.Replace(localVarPath, "{"+"provisioningSessionId"+"}", url.PathEscape(parameterValueToString(r.provisioningSessionId, "provisioningSessionId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.metricsReportingConfiguration == nil {
return nil, reportError("metricsReportingConfiguration is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.metricsReportingConfiguration
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarHTTPResponse, newErr
}
return localVarHTTPResponse, nil
}
type ApiDestroyMetricsReportingConfigurationRequest struct {
ctx context.Context
ApiService *DefaultAPIService
provisioningSessionId string
metricsReportingConfigurationId string
}
func (r ApiDestroyMetricsReportingConfigurationRequest) Execute() (*http.Response, error) {
return r.ApiService.DestroyMetricsReportingConfigurationExecute(r)
}
/*
DestroyMetricsReportingConfiguration Destroy the specified Metrics Reporting Configuration of the specified Provisioning Session
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param provisioningSessionId The resource identifier of an existing Provisioning Session.
@param metricsReportingConfigurationId The resource identifier of a Metrics Reporting Configuration.
@return ApiDestroyMetricsReportingConfigurationRequest
*/
func (a *DefaultAPIService) DestroyMetricsReportingConfiguration(ctx context.Context, provisioningSessionId string, metricsReportingConfigurationId string) ApiDestroyMetricsReportingConfigurationRequest {
return ApiDestroyMetricsReportingConfigurationRequest{
ApiService: a,
ctx: ctx,
provisioningSessionId: provisioningSessionId,
metricsReportingConfigurationId: metricsReportingConfigurationId,
}
}
// Execute executes the request
func (a *DefaultAPIService) DestroyMetricsReportingConfigurationExecute(r ApiDestroyMetricsReportingConfigurationRequest) (*http.Response, error) {
var (
localVarHTTPMethod = http.MethodDelete
localVarPostBody interface{}
formFiles []formFile
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.DestroyMetricsReportingConfiguration")
if err != nil {
return nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations/{metricsReportingConfigurationId}"
localVarPath = strings.Replace(localVarPath, "{"+"provisioningSessionId"+"}", url.PathEscape(parameterValueToString(r.provisioningSessionId, "provisioningSessionId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"metricsReportingConfigurationId"+"}", url.PathEscape(parameterValueToString(r.metricsReportingConfigurationId, "metricsReportingConfigurationId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarHTTPResponse, newErr
}
return localVarHTTPResponse, nil
}
type ApiPatchMetricsReportingConfigurationRequest struct {
ctx context.Context
ApiService *DefaultAPIService
provisioningSessionId string
metricsReportingConfigurationId string
metricsReportingConfiguration *MetricsReportingConfiguration
}
// A JSON representation of a Metrics Reporting Configuration
func (r ApiPatchMetricsReportingConfigurationRequest) MetricsReportingConfiguration(metricsReportingConfiguration MetricsReportingConfiguration) ApiPatchMetricsReportingConfigurationRequest {
r.metricsReportingConfiguration = &metricsReportingConfiguration
return r
}
func (r ApiPatchMetricsReportingConfigurationRequest) Execute() (*MetricsReportingConfiguration, *http.Response, error) {
return r.ApiService.PatchMetricsReportingConfigurationExecute(r)
}
/*
PatchMetricsReportingConfiguration Patch the specified Metrics Reporting Configuration for the specified Provisioning Session
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param provisioningSessionId The resource identifier of an existing Provisioning Session.
@param metricsReportingConfigurationId The resource identifier of a Metrics Reporting Configuration.
@return ApiPatchMetricsReportingConfigurationRequest
*/
func (a *DefaultAPIService) PatchMetricsReportingConfiguration(ctx context.Context, provisioningSessionId string, metricsReportingConfigurationId string) ApiPatchMetricsReportingConfigurationRequest {
return ApiPatchMetricsReportingConfigurationRequest{
ApiService: a,
ctx: ctx,
provisioningSessionId: provisioningSessionId,
metricsReportingConfigurationId: metricsReportingConfigurationId,
}
}
// Execute executes the request
//
// @return MetricsReportingConfiguration
func (a *DefaultAPIService) PatchMetricsReportingConfigurationExecute(r ApiPatchMetricsReportingConfigurationRequest) (*MetricsReportingConfiguration, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodPatch
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *MetricsReportingConfiguration
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.PatchMetricsReportingConfiguration")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations/{metricsReportingConfigurationId}"
localVarPath = strings.Replace(localVarPath, "{"+"provisioningSessionId"+"}", url.PathEscape(parameterValueToString(r.provisioningSessionId, "provisioningSessionId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"metricsReportingConfigurationId"+"}", url.PathEscape(parameterValueToString(r.metricsReportingConfigurationId, "metricsReportingConfigurationId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.metricsReportingConfiguration == nil {
return localVarReturnValue, nil, reportError("metricsReportingConfiguration is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/merge-patch+json", "application/json-patch+json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.metricsReportingConfiguration
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ApiRetrieveMetricsReportingConfigurationRequest struct {
ctx context.Context
ApiService *DefaultAPIService
provisioningSessionId string
metricsReportingConfigurationId string
}
func (r ApiRetrieveMetricsReportingConfigurationRequest) Execute() (*MetricsReportingConfiguration, *http.Response, error) {
return r.ApiService.RetrieveMetricsReportingConfigurationExecute(r)
}
/*
RetrieveMetricsReportingConfiguration Retrieve the specified Metrics Reporting Configuration of the specified Provisioning Session
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param provisioningSessionId The resource identifier of an existing Provisioning Session.
@param metricsReportingConfigurationId The resource identifier of a Metrics Reporting Configuration.
@return ApiRetrieveMetricsReportingConfigurationRequest
*/
func (a *DefaultAPIService) RetrieveMetricsReportingConfiguration(ctx context.Context, provisioningSessionId string, metricsReportingConfigurationId string) ApiRetrieveMetricsReportingConfigurationRequest {
return ApiRetrieveMetricsReportingConfigurationRequest{
ApiService: a,
ctx: ctx,
provisioningSessionId: provisioningSessionId,
metricsReportingConfigurationId: metricsReportingConfigurationId,
}
}
// Execute executes the request
//
// @return MetricsReportingConfiguration
func (a *DefaultAPIService) RetrieveMetricsReportingConfigurationExecute(r ApiRetrieveMetricsReportingConfigurationRequest) (*MetricsReportingConfiguration, *http.Response, error) {
var (
localVarHTTPMethod = http.MethodGet
localVarPostBody interface{}
formFiles []formFile
localVarReturnValue *MetricsReportingConfiguration
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.RetrieveMetricsReportingConfiguration")
if err != nil {
return localVarReturnValue, nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations/{metricsReportingConfigurationId}"
localVarPath = strings.Replace(localVarPath, "{"+"provisioningSessionId"+"}", url.PathEscape(parameterValueToString(r.provisioningSessionId, "provisioningSessionId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"metricsReportingConfigurationId"+"}", url.PathEscape(parameterValueToString(r.metricsReportingConfigurationId, "metricsReportingConfigurationId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{"application/json"}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return localVarReturnValue, nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarReturnValue, localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarReturnValue, localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
err = a.client.decode(&localVarReturnValue, localVarBody, localVarHTTPResponse.Header.Get("Content-Type"))
if err != nil {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: err.Error(),
}
return localVarReturnValue, localVarHTTPResponse, newErr
}
return localVarReturnValue, localVarHTTPResponse, nil
}
type ApiUpdateMetricsReportingConfigurationRequest struct {
ctx context.Context
ApiService *DefaultAPIService
provisioningSessionId string
metricsReportingConfigurationId string
metricsReportingConfiguration *MetricsReportingConfiguration
}
// A JSON representation of a Metrics Reporting Configuration
func (r ApiUpdateMetricsReportingConfigurationRequest) MetricsReportingConfiguration(metricsReportingConfiguration MetricsReportingConfiguration) ApiUpdateMetricsReportingConfigurationRequest {
r.metricsReportingConfiguration = &metricsReportingConfiguration
return r
}
func (r ApiUpdateMetricsReportingConfigurationRequest) Execute() (*http.Response, error) {
return r.ApiService.UpdateMetricsReportingConfigurationExecute(r)
}
/*
UpdateMetricsReportingConfiguration Update the specified Metrics Reporting Configuration for the specified Provisioning Session
@param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background().
@param provisioningSessionId The resource identifier of an existing Provisioning Session.
@param metricsReportingConfigurationId The resource identifier of a Metrics Reporting Configuration.
@return ApiUpdateMetricsReportingConfigurationRequest
*/
func (a *DefaultAPIService) UpdateMetricsReportingConfiguration(ctx context.Context, provisioningSessionId string, metricsReportingConfigurationId string) ApiUpdateMetricsReportingConfigurationRequest {
return ApiUpdateMetricsReportingConfigurationRequest{
ApiService: a,
ctx: ctx,
provisioningSessionId: provisioningSessionId,
metricsReportingConfigurationId: metricsReportingConfigurationId,
}
}
// Execute executes the request
func (a *DefaultAPIService) UpdateMetricsReportingConfigurationExecute(r ApiUpdateMetricsReportingConfigurationRequest) (*http.Response, error) {
var (
localVarHTTPMethod = http.MethodPut
localVarPostBody interface{}
formFiles []formFile
)
localBasePath, err := a.client.cfg.ServerURLWithContext(r.ctx, "DefaultAPIService.UpdateMetricsReportingConfiguration")
if err != nil {
return nil, &GenericOpenAPIError{error: err.Error()}
}
localVarPath := localBasePath + "/provisioning-sessions/{provisioningSessionId}/metrics-reporting-configurations/{metricsReportingConfigurationId}"
localVarPath = strings.Replace(localVarPath, "{"+"provisioningSessionId"+"}", url.PathEscape(parameterValueToString(r.provisioningSessionId, "provisioningSessionId")), -1)
localVarPath = strings.Replace(localVarPath, "{"+"metricsReportingConfigurationId"+"}", url.PathEscape(parameterValueToString(r.metricsReportingConfigurationId, "metricsReportingConfigurationId")), -1)
localVarHeaderParams := make(map[string]string)
localVarQueryParams := url.Values{}
localVarFormParams := url.Values{}
if r.metricsReportingConfiguration == nil {
return nil, reportError("metricsReportingConfiguration is required and must be specified")
}
// to determine the Content-Type header
localVarHTTPContentTypes := []string{"application/json"}
// set Content-Type header
localVarHTTPContentType := selectHeaderContentType(localVarHTTPContentTypes)
if localVarHTTPContentType != "" {
localVarHeaderParams["Content-Type"] = localVarHTTPContentType
}
// to determine the Accept header
localVarHTTPHeaderAccepts := []string{}
// set Accept header
localVarHTTPHeaderAccept := selectHeaderAccept(localVarHTTPHeaderAccepts)
if localVarHTTPHeaderAccept != "" {
localVarHeaderParams["Accept"] = localVarHTTPHeaderAccept
}
// body params
localVarPostBody = r.metricsReportingConfiguration
req, err := a.client.prepareRequest(r.ctx, localVarPath, localVarHTTPMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, formFiles)
if err != nil {
return nil, err
}
localVarHTTPResponse, err := a.client.callAPI(req)
if err != nil || localVarHTTPResponse == nil {
return localVarHTTPResponse, err
}
localVarBody, err := io.ReadAll(localVarHTTPResponse.Body)
localVarHTTPResponse.Body.Close()
localVarHTTPResponse.Body = io.NopCloser(bytes.NewBuffer(localVarBody))
if err != nil {
return localVarHTTPResponse, err
}
if localVarHTTPResponse.StatusCode >= 300 {
newErr := &GenericOpenAPIError{
body: localVarBody,
error: localVarHTTPResponse.Status,
}
return localVarHTTPResponse, newErr
}
return localVarHTTPResponse, nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/konglinglong/openapi.git
git@gitee.com:konglinglong/openapi.git
konglinglong
openapi
openapi
e403a3c726a4

搜索帮助