github.com/line/line-bot-sdk-go/v7@v7.21.0/linebot/leave.go (about)

     1  // Copyright 2016 LINE Corporation
     2  //
     3  // LINE Corporation licenses this file to you under the Apache License,
     4  // version 2.0 (the "License"); you may not use this file except in compliance
     5  // with the License. You may obtain a copy of the License at:
     6  //
     7  //   http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    11  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    12  // License for the specific language governing permissions and limitations
    13  // under the License.
    14  
    15  package linebot
    16  
    17  import (
    18  	"context"
    19  	"fmt"
    20  )
    21  
    22  // LeaveGroup method
    23  func (client *Client) LeaveGroup(groupID string) *LeaveGroupCall {
    24  	return &LeaveGroupCall{
    25  		c:       client,
    26  		groupID: groupID,
    27  	}
    28  }
    29  
    30  // LeaveGroupCall type
    31  type LeaveGroupCall struct {
    32  	c   *Client
    33  	ctx context.Context
    34  
    35  	groupID string
    36  }
    37  
    38  // WithContext method
    39  func (call *LeaveGroupCall) WithContext(ctx context.Context) *LeaveGroupCall {
    40  	call.ctx = ctx
    41  	return call
    42  }
    43  
    44  // Do method
    45  func (call *LeaveGroupCall) Do() (*BasicResponse, error) {
    46  	endpoint := fmt.Sprintf(APIEndpointLeaveGroup, call.groupID)
    47  	res, err := call.c.post(call.ctx, endpoint, nil)
    48  	if err != nil {
    49  		return nil, err
    50  	}
    51  	defer closeResponse(res)
    52  	return decodeToBasicResponse(res)
    53  }
    54  
    55  // LeaveRoom method
    56  func (client *Client) LeaveRoom(roomID string) *LeaveRoomCall {
    57  	return &LeaveRoomCall{
    58  		c:      client,
    59  		roomID: roomID,
    60  	}
    61  }
    62  
    63  // LeaveRoomCall type
    64  type LeaveRoomCall struct {
    65  	c   *Client
    66  	ctx context.Context
    67  
    68  	roomID string
    69  }
    70  
    71  // WithContext method
    72  func (call *LeaveRoomCall) WithContext(ctx context.Context) *LeaveRoomCall {
    73  	call.ctx = ctx
    74  	return call
    75  }
    76  
    77  // Do method
    78  func (call *LeaveRoomCall) Do() (*BasicResponse, error) {
    79  	endpoint := fmt.Sprintf(APIEndpointLeaveRoom, call.roomID)
    80  	res, err := call.c.post(call.ctx, endpoint, nil)
    81  	if err != nil {
    82  		return nil, err
    83  	}
    84  	defer closeResponse(res)
    85  	return decodeToBasicResponse(res)
    86  }