Class: WhatsAppCloudApi::MediaController

Inherits:
BaseController show all
Defined in:
lib/whats_app_cloud_api/controllers/media_controller.rb

Overview

MediaController

Instance Attribute Summary

Attributes inherited from BaseController

#config, #http_call_back

Instance Method Summary collapse

Methods inherited from BaseController

#execute_request, #get_user_agent, #validate_parameters, #validate_response

Constructor Details

#initialize(config, http_call_back: nil) ⇒ MediaController

Returns a new instance of MediaController.



9
10
11
# File 'lib/whats_app_cloud_api/controllers/media_controller.rb', line 9

def initialize(config, http_call_back: nil)
  super(config, http_call_back: http_call_back)
end

Instance Method Details

#delete_media(media_id) ⇒ SuccessResponse

This endpoint can be used for deleting a media object. uploading media endpoint or media message Webhooks

Parameters:

  • media_id (String)

    Required parameter: Media object ID from either

Returns:



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
# File 'lib/whats_app_cloud_api/controllers/media_controller.rb', line 17

def delete_media(media_id)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/{Media-ID}'
  _query_builder = APIHelper.append_url_with_template_parameters(
    _query_builder,
    'Media-ID' => { 'value' => media_id, 'encode' => true }
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'accept' => 'application/json'
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.delete(
    _query_url,
    headers: _headers
  )
  OAuth2.apply(config, _request)
  _response = execute_request(_request)
  validate_response(_response)

  # Return appropriate response type.
  decoded = APIHelper.json_deserialize(_response.raw_body)
  SuccessResponse.from_hash(decoded)
end

#retrieve_media_url(media_id) ⇒ RetrieveMediaURLResponse

To retrieve your media’s URL, make a request to this endpoint. Later, you can use this URL to download the media file. uploading media endpoint or media message Webhooks

Parameters:

  • media_id (String)

    Required parameter: Media object ID from either

Returns:



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
# File 'lib/whats_app_cloud_api/controllers/media_controller.rb', line 51

def retrieve_media_url(media_id)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/{Media-ID}'
  _query_builder = APIHelper.append_url_with_template_parameters(
    _query_builder,
    'Media-ID' => { 'value' => media_id, 'encode' => true }
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'accept' => 'application/json'
  }

  # Prepare and execute HttpRequest.
  _request = config.http_client.get(
    _query_url,
    headers: _headers
  )
  OAuth2.apply(config, _request)
  _response = execute_request(_request)
  validate_response(_response)

  # Return appropriate response type.
  decoded = APIHelper.json_deserialize(_response.raw_body)
  RetrieveMediaURLResponse.from_hash(decoded)
end

#upload_media(phone_number_id, messaging_product, file, type) ⇒ UploadMedia

Used to upload media. All media files sent through this endpoint are encrypted and persist for 30 days. used for the request. In this case, use whatsapp. local directory. For example: “@/local/path/file.jpg”. uploaded. See Supported Media Types for more information. Supported options for images are: ‘image/jpeg`, `image/png` Supported options for documents are: `text/plain`, `application/pdf`, `application/vnd.ms-powerpoint`, `application/msword`, `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document`, `application/vnd.openxmlformats-officedocument.presentationml.presentation `, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` Supported options for audio are: `audio/aac`, `audio/mp4`, `audio/mpeg`, `audio/amr`, `audio/ogg`, `audio/opus` Supported options for video are: `video/mp4`, `video/3gp` Supported options for stickers are: `image/webp`

Parameters:

  • phone_number_id (String)

    Required parameter: Example:

  • messaging_product (String)

    Required parameter: Messaging service

  • file (String)

    Required parameter: Path to the file stored in your

  • type (String)

    Required parameter: Type of media file being

Returns:



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
# File 'lib/whats_app_cloud_api/controllers/media_controller.rb', line 101

def upload_media(phone_number_id,
                 messaging_product,
                 file,
                 type)
  # Prepare query url.
  _query_builder = config.get_base_uri
  _query_builder << '/{Phone-Number-ID}/media'
  _query_builder = APIHelper.append_url_with_template_parameters(
    _query_builder,
    'Phone-Number-ID' => { 'value' => phone_number_id, 'encode' => true }
  )
  _query_url = APIHelper.clean_url _query_builder

  # Prepare headers.
  _headers = {
    'accept' => 'application/json'
  }

  # Prepare form parameters.
  _parameters = {
    'messaging_product' => messaging_product,
    'file' => file,
    'type' => type
  }
  _parameters = APIHelper.form_encode_parameters(_parameters)

  # Prepare and execute HttpRequest.
  _request = config.http_client.post(
    _query_url,
    headers: _headers,
    parameters: _parameters
  )
  OAuth2.apply(config, _request)
  _response = execute_request(_request)
  validate_response(_response)

  # Return appropriate response type.
  decoded = APIHelper.json_deserialize(_response.raw_body)
  UploadMedia.from_hash(decoded)
end