rcs 1.0.14 → 1.0.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rcs/company/client.rb +61 -6
- data/lib/rcs/tools/client.rb +207 -0
- data/lib/rcs/tools/types/tools_shorten_url_response.rb +70 -0
- data/lib/rcs/tools/types/tools_upload_url_response.rb +69 -0
- data/lib/rcs/types/company.rb +53 -2
- data/lib/rcs/types/company_category.rb +20 -0
- data/lib/rcs/types/company_details.rb +11 -1
- data/lib/rcs/types/inbound_action_message.rb +117 -0
- data/lib/rcs/types/inbound_location_message.rb +106 -0
- data/lib/rcs/types/inbound_location_message_coordinates.rb +65 -0
- data/lib/rcs/types/inbound_media_message.rb +112 -0
- data/lib/rcs/types/inbound_message.rb +88 -0
- data/lib/rcs/types/inbound_message_message_type.rb +10 -0
- data/lib/rcs/types/inbound_message_metadata.rb +79 -0
- data/lib/rcs/types/inbound_text_message.rb +100 -0
- data/lib/rcs/types/media_payload.rb +65 -0
- data/lib/rcs/types/message_metadata.rb +56 -0
- data/lib/rcs/types/messaging.rb +95 -0
- data/lib/rcs/types/sender_metadata.rb +74 -0
- data/lib/rcs.rb +7 -0
- data/lib/requests.rb +2 -2
- data/lib/types_export.rb +15 -0
- metadata +18 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cc0ed650419f2955313e2c91055c00a20c376af7b19fca0a067c575e39cb441
|
4
|
+
data.tar.gz: 0114e52c609971adb0f70222a9eda7be72ed2c21cbaab3edf6412a3586419c4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f814ccaa8ebb9566fd17e1f5d067605f60ef77e5becb1e66c336eb6feda96aa42b384d3d04dcfb6ec89ae0e2d4e48d0516750b7c0c35fafc52cbb2faf139cb53
|
7
|
+
data.tar.gz: 1c5530bf2ad1d6589b6e445929ca77aa7dd0e80c726faa93cda11e4e335fb0002aa8bad60f9f2de9ca4d60f34b18a8a9118c3bf416b6d292412d5639654ab274
|
data/lib/rcs/company/client.rb
CHANGED
@@ -5,6 +5,7 @@ require_relative "../types/company"
|
|
5
5
|
require "json"
|
6
6
|
require_relative "../types/company_details"
|
7
7
|
require_relative "../types/company_contact"
|
8
|
+
require_relative "../types/messaging"
|
8
9
|
require_relative "../types/point_of_contact"
|
9
10
|
require_relative "../types/optionals"
|
10
11
|
require_relative "types/company_register_response"
|
@@ -66,6 +67,7 @@ module Pinnacle
|
|
66
67
|
#
|
67
68
|
# @param company [Hash] Request of type Pinnacle::CompanyDetails, as a Hash
|
68
69
|
# * :name (String)
|
70
|
+
# * :category (Pinnacle::CompanyCategory)
|
69
71
|
# * :address (String)
|
70
72
|
# * :ein (String)
|
71
73
|
# * :description (String)
|
@@ -81,6 +83,12 @@ module Pinnacle
|
|
81
83
|
# * :primary_email_label (String)
|
82
84
|
# * :privacy_policy_url (String)
|
83
85
|
# * :tos_url (String)
|
86
|
+
# @param messaging [Hash] Request of type Pinnacle::Messaging, as a Hash
|
87
|
+
# * :opt_in (String)
|
88
|
+
# * :opt_out (String)
|
89
|
+
# * :opt_out_keywords (Array<String>)
|
90
|
+
# * :agent_use_case (String)
|
91
|
+
# * :expected_agent_responses (String)
|
84
92
|
# @param point_of_contact [Hash] Request of type Pinnacle::PointOfContact, as a Hash
|
85
93
|
# * :poc_name (String)
|
86
94
|
# * :poc_title (String)
|
@@ -99,11 +107,17 @@ module Pinnacle
|
|
99
107
|
# api_key: "YOUR_API_KEY"
|
100
108
|
# )
|
101
109
|
# api.company.register(
|
102
|
-
# company: { name: "name", address: "address", ein: "ein", description: "description", brand_color: "brandColor", logo_url: "logoUrl", hero_url: "heroUrl" },
|
110
|
+
# company: { name: "name", category: ENTERTAINMENT, address: "address", ein: "ein", description: "description", brand_color: "brandColor", logo_url: "logoUrl", hero_url: "heroUrl" },
|
103
111
|
# company_contact: { primary_website_url: "primaryWebsiteUrl", primary_website_label: "primaryWebsiteLabel", primary_phone: "primaryPhone", primary_phone_label: "primaryPhoneLabel", primary_email: "primaryEmail", primary_email_label: "primaryEmailLabel", privacy_policy_url: "privacyPolicyUrl", tos_url: "tosUrl" },
|
112
|
+
# messaging: { opt_in: "By opting in, you agree to receive messages from Pinnacle, including updates and promotions. Reply “STOP” to unsubscribe. Standard message and data rates may apply.", opt_out: "Reply with keywords like STOP or UNSUBSCRIBE to opt-out. A confirmation message will be sent, and no further messages will be received unless you re-subscribe.", opt_out_keywords: ["STOP", "UNSUBSCRIBE"], agent_use_case: "Pinnacle’s agent assists with product updates, promotions, order tracking, and support. It answers FAQs, provides order updates, and helps with opt-in/out processes. Escalates to live support when needed.", expected_agent_responses: "General Inquiry: “How can I assist you today?”
|
113
|
+
# Order Status: “Provide your order number.”
|
114
|
+
# Opt-In: “You’re now subscribed!”
|
115
|
+
# Opt-Out: “You have unsubscribed.”
|
116
|
+
# Escalation: “Connecting to a live agent.”
|
117
|
+
# " },
|
104
118
|
# point_of_contact: { poc_name: "pocName", poc_title: "pocTitle", poc_email: "pocEmail" }
|
105
119
|
# )
|
106
|
-
def register(company:, company_contact:, point_of_contact:, optionals: nil, request_options: nil)
|
120
|
+
def register(company:, company_contact:, messaging:, point_of_contact:, optionals: nil, request_options: nil)
|
107
121
|
response = @request_client.conn.post do |req|
|
108
122
|
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
109
123
|
req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
|
@@ -119,6 +133,7 @@ module Pinnacle
|
|
119
133
|
**(request_options&.additional_body_parameters || {}),
|
120
134
|
company: company,
|
121
135
|
companyContact: company_contact,
|
136
|
+
messaging: messaging,
|
122
137
|
pointOfContact: point_of_contact,
|
123
138
|
optionals: optionals
|
124
139
|
}.compact
|
@@ -134,6 +149,7 @@ module Pinnacle
|
|
134
149
|
# * :id (Integer)
|
135
150
|
# * :created_at (DateTime)
|
136
151
|
# * :name (String)
|
152
|
+
# * :category (Pinnacle::CompanyCategory)
|
137
153
|
# * :address (String)
|
138
154
|
# * :ein (String)
|
139
155
|
# * :description (String)
|
@@ -151,6 +167,11 @@ module Pinnacle
|
|
151
167
|
# * :poc_name (String)
|
152
168
|
# * :poc_title (String)
|
153
169
|
# * :poc_email (String)
|
170
|
+
# * :opt_in (String)
|
171
|
+
# * :opt_out (String)
|
172
|
+
# * :opt_out_keywords (Array<String>)
|
173
|
+
# * :agent_use_case (String)
|
174
|
+
# * :expected_agent_responses (String)
|
154
175
|
# * :test_numbers (Array<String>)
|
155
176
|
# * :status (String)
|
156
177
|
# * :additional_websites (Array<Pinnacle::CompanyAdditionalWebsitesItem>)
|
@@ -165,6 +186,12 @@ module Pinnacle
|
|
165
186
|
# * :primary_email_label (String)
|
166
187
|
# * :privacy_policy_url (String)
|
167
188
|
# * :tos_url (String)
|
189
|
+
# @param messaging [Hash] Request of type Pinnacle::Messaging, as a Hash
|
190
|
+
# * :opt_in (String)
|
191
|
+
# * :opt_out (String)
|
192
|
+
# * :opt_out_keywords (Array<String>)
|
193
|
+
# * :agent_use_case (String)
|
194
|
+
# * :expected_agent_responses (String)
|
168
195
|
# @param point_of_contact [Hash] Request of type Pinnacle::PointOfContact, as a Hash
|
169
196
|
# * :poc_name (String)
|
170
197
|
# * :poc_title (String)
|
@@ -183,7 +210,7 @@ module Pinnacle
|
|
183
210
|
# api_key: "YOUR_API_KEY"
|
184
211
|
# )
|
185
212
|
# api.company.update(company_id: "companyId")
|
186
|
-
def update(company_id:, company: nil, company_contact: nil, point_of_contact: nil, optionals: nil,
|
213
|
+
def update(company_id:, company: nil, company_contact: nil, messaging: nil, point_of_contact: nil, optionals: nil,
|
187
214
|
request_options: nil)
|
188
215
|
response = @request_client.conn.post do |req|
|
189
216
|
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
@@ -201,6 +228,7 @@ module Pinnacle
|
|
201
228
|
companyId: company_id,
|
202
229
|
company: company,
|
203
230
|
companyContact: company_contact,
|
231
|
+
messaging: messaging,
|
204
232
|
pointOfContact: point_of_contact,
|
205
233
|
optionals: optionals
|
206
234
|
}.compact
|
@@ -266,6 +294,7 @@ module Pinnacle
|
|
266
294
|
#
|
267
295
|
# @param company [Hash] Request of type Pinnacle::CompanyDetails, as a Hash
|
268
296
|
# * :name (String)
|
297
|
+
# * :category (Pinnacle::CompanyCategory)
|
269
298
|
# * :address (String)
|
270
299
|
# * :ein (String)
|
271
300
|
# * :description (String)
|
@@ -281,6 +310,12 @@ module Pinnacle
|
|
281
310
|
# * :primary_email_label (String)
|
282
311
|
# * :privacy_policy_url (String)
|
283
312
|
# * :tos_url (String)
|
313
|
+
# @param messaging [Hash] Request of type Pinnacle::Messaging, as a Hash
|
314
|
+
# * :opt_in (String)
|
315
|
+
# * :opt_out (String)
|
316
|
+
# * :opt_out_keywords (Array<String>)
|
317
|
+
# * :agent_use_case (String)
|
318
|
+
# * :expected_agent_responses (String)
|
284
319
|
# @param point_of_contact [Hash] Request of type Pinnacle::PointOfContact, as a Hash
|
285
320
|
# * :poc_name (String)
|
286
321
|
# * :poc_title (String)
|
@@ -299,11 +334,17 @@ module Pinnacle
|
|
299
334
|
# api_key: "YOUR_API_KEY"
|
300
335
|
# )
|
301
336
|
# api.company.register(
|
302
|
-
# company: { name: "name", address: "address", ein: "ein", description: "description", brand_color: "brandColor", logo_url: "logoUrl", hero_url: "heroUrl" },
|
337
|
+
# company: { name: "name", category: ENTERTAINMENT, address: "address", ein: "ein", description: "description", brand_color: "brandColor", logo_url: "logoUrl", hero_url: "heroUrl" },
|
303
338
|
# company_contact: { primary_website_url: "primaryWebsiteUrl", primary_website_label: "primaryWebsiteLabel", primary_phone: "primaryPhone", primary_phone_label: "primaryPhoneLabel", primary_email: "primaryEmail", primary_email_label: "primaryEmailLabel", privacy_policy_url: "privacyPolicyUrl", tos_url: "tosUrl" },
|
339
|
+
# messaging: { opt_in: "By opting in, you agree to receive messages from Pinnacle, including updates and promotions. Reply “STOP” to unsubscribe. Standard message and data rates may apply.", opt_out: "Reply with keywords like STOP or UNSUBSCRIBE to opt-out. A confirmation message will be sent, and no further messages will be received unless you re-subscribe.", opt_out_keywords: ["STOP", "UNSUBSCRIBE"], agent_use_case: "Pinnacle’s agent assists with product updates, promotions, order tracking, and support. It answers FAQs, provides order updates, and helps with opt-in/out processes. Escalates to live support when needed.", expected_agent_responses: "General Inquiry: “How can I assist you today?”
|
340
|
+
# Order Status: “Provide your order number.”
|
341
|
+
# Opt-In: “You’re now subscribed!”
|
342
|
+
# Opt-Out: “You have unsubscribed.”
|
343
|
+
# Escalation: “Connecting to a live agent.”
|
344
|
+
# " },
|
304
345
|
# point_of_contact: { poc_name: "pocName", poc_title: "pocTitle", poc_email: "pocEmail" }
|
305
346
|
# )
|
306
|
-
def register(company:, company_contact:, point_of_contact:, optionals: nil, request_options: nil)
|
347
|
+
def register(company:, company_contact:, messaging:, point_of_contact:, optionals: nil, request_options: nil)
|
307
348
|
Async do
|
308
349
|
response = @request_client.conn.post do |req|
|
309
350
|
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
@@ -320,6 +361,7 @@ module Pinnacle
|
|
320
361
|
**(request_options&.additional_body_parameters || {}),
|
321
362
|
company: company,
|
322
363
|
companyContact: company_contact,
|
364
|
+
messaging: messaging,
|
323
365
|
pointOfContact: point_of_contact,
|
324
366
|
optionals: optionals
|
325
367
|
}.compact
|
@@ -336,6 +378,7 @@ module Pinnacle
|
|
336
378
|
# * :id (Integer)
|
337
379
|
# * :created_at (DateTime)
|
338
380
|
# * :name (String)
|
381
|
+
# * :category (Pinnacle::CompanyCategory)
|
339
382
|
# * :address (String)
|
340
383
|
# * :ein (String)
|
341
384
|
# * :description (String)
|
@@ -353,6 +396,11 @@ module Pinnacle
|
|
353
396
|
# * :poc_name (String)
|
354
397
|
# * :poc_title (String)
|
355
398
|
# * :poc_email (String)
|
399
|
+
# * :opt_in (String)
|
400
|
+
# * :opt_out (String)
|
401
|
+
# * :opt_out_keywords (Array<String>)
|
402
|
+
# * :agent_use_case (String)
|
403
|
+
# * :expected_agent_responses (String)
|
356
404
|
# * :test_numbers (Array<String>)
|
357
405
|
# * :status (String)
|
358
406
|
# * :additional_websites (Array<Pinnacle::CompanyAdditionalWebsitesItem>)
|
@@ -367,6 +415,12 @@ module Pinnacle
|
|
367
415
|
# * :primary_email_label (String)
|
368
416
|
# * :privacy_policy_url (String)
|
369
417
|
# * :tos_url (String)
|
418
|
+
# @param messaging [Hash] Request of type Pinnacle::Messaging, as a Hash
|
419
|
+
# * :opt_in (String)
|
420
|
+
# * :opt_out (String)
|
421
|
+
# * :opt_out_keywords (Array<String>)
|
422
|
+
# * :agent_use_case (String)
|
423
|
+
# * :expected_agent_responses (String)
|
370
424
|
# @param point_of_contact [Hash] Request of type Pinnacle::PointOfContact, as a Hash
|
371
425
|
# * :poc_name (String)
|
372
426
|
# * :poc_title (String)
|
@@ -385,7 +439,7 @@ module Pinnacle
|
|
385
439
|
# api_key: "YOUR_API_KEY"
|
386
440
|
# )
|
387
441
|
# api.company.update(company_id: "companyId")
|
388
|
-
def update(company_id:, company: nil, company_contact: nil, point_of_contact: nil, optionals: nil,
|
442
|
+
def update(company_id:, company: nil, company_contact: nil, messaging: nil, point_of_contact: nil, optionals: nil,
|
389
443
|
request_options: nil)
|
390
444
|
Async do
|
391
445
|
response = @request_client.conn.post do |req|
|
@@ -404,6 +458,7 @@ module Pinnacle
|
|
404
458
|
companyId: company_id,
|
405
459
|
company: company,
|
406
460
|
companyContact: company_contact,
|
461
|
+
messaging: messaging,
|
407
462
|
pointOfContact: point_of_contact,
|
408
463
|
optionals: optionals
|
409
464
|
}.compact
|
@@ -0,0 +1,207 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../requests"
|
4
|
+
require "date"
|
5
|
+
require_relative "types/tools_shorten_url_response"
|
6
|
+
require_relative "types/tools_upload_url_response"
|
7
|
+
require "async"
|
8
|
+
|
9
|
+
module Pinnacle
|
10
|
+
class ToolsClient
|
11
|
+
# @return [Pinnacle::RequestClient]
|
12
|
+
attr_reader :request_client
|
13
|
+
|
14
|
+
# @param request_client [Pinnacle::RequestClient]
|
15
|
+
# @return [Pinnacle::ToolsClient]
|
16
|
+
def initialize(request_client:)
|
17
|
+
@request_client = request_client
|
18
|
+
end
|
19
|
+
|
20
|
+
# Create a shortened URL with an optional expiration date (default and max
|
21
|
+
# expiration is 90 days). The shortened URL will redirect to the original URL and
|
22
|
+
# will have the following format https://urls.p1n.io/ABCD5678.
|
23
|
+
#
|
24
|
+
# @param url [String] The URL to be shortened. Must be a valid URL with either http or https protocol.
|
25
|
+
# @param expires_at [DateTime] Optional expiration date for the shortened URL in ISO 8601 format. Default and
|
26
|
+
# max expiration is 90 days.
|
27
|
+
# @param request_options [Pinnacle::RequestOptions]
|
28
|
+
# @return [Pinnacle::Tools::ToolsShortenUrlResponse]
|
29
|
+
# @example
|
30
|
+
# api = Pinnacle::Client.new(
|
31
|
+
# base_url: "https://api.example.com",
|
32
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
33
|
+
# api_key: "YOUR_API_KEY"
|
34
|
+
# )
|
35
|
+
# api.tools.shorten_url(url: "https://example.com")
|
36
|
+
def shorten_url(url:, expires_at: nil, request_options: nil)
|
37
|
+
response = @request_client.conn.post do |req|
|
38
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
39
|
+
req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
|
40
|
+
req.headers = {
|
41
|
+
**(req.headers || {}),
|
42
|
+
**@request_client.get_headers,
|
43
|
+
**(request_options&.additional_headers || {})
|
44
|
+
}.compact
|
45
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
46
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
47
|
+
end
|
48
|
+
req.body = { **(request_options&.additional_body_parameters || {}), url: url, expiresAt: expires_at }.compact
|
49
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/tools/urls/shorten"
|
50
|
+
end
|
51
|
+
Pinnacle::Tools::ToolsShortenUrlResponse.from_json(json_object: response.body)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Generate signed upload (expires in 2 hours) and download URLs for a file
|
55
|
+
# (expires in 1 hour).
|
56
|
+
#
|
57
|
+
# @param content_type [String] The MIME type of the file.
|
58
|
+
# Supported types are audio/basic, audio/L24, audio/mp4, audio/mpeg, audio/mpg,
|
59
|
+
# audio/mp3, audio/ogg, audio/aac, audio/vndrn-realaudio, audio/vndwave,
|
60
|
+
# audio/3gpp, audio/3gpp2, audio/ac3, audio/webm, audio/amrnb, audio/amr,
|
61
|
+
# video/mpeg, video/mp4, video/quicktime, video/webm, video/3gpp, video/3gpp2,
|
62
|
+
# video/3gpptt, video/H261, video/H263, video/H2631998, video/H2632000,
|
63
|
+
# video/H264, video/m4v, video/mpeg4, video/webm, image/jpeg, image/gif,
|
64
|
+
# image/png, image/gif, image/bmp, image/tiff, image/webp, text/vcard,
|
65
|
+
# text/xvcard, text/csv, text/rtf, text/richtext, text/calendar, text/directory,
|
66
|
+
# application/ogg, application/pdf, application/vcard,
|
67
|
+
# application/vndapple.pkpass.
|
68
|
+
# @param size [Integer] The size of the file in bytes. Should be less than 100 MB.
|
69
|
+
# @param name [String] The name of the file.
|
70
|
+
# @param request_options [Pinnacle::RequestOptions]
|
71
|
+
# @return [Pinnacle::Tools::ToolsUploadUrlResponse]
|
72
|
+
# @example
|
73
|
+
# api = Pinnacle::Client.new(
|
74
|
+
# base_url: "https://api.example.com",
|
75
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
76
|
+
# api_key: "YOUR_API_KEY"
|
77
|
+
# )
|
78
|
+
# api.tools.upload_url(
|
79
|
+
# content_type: "image/png",
|
80
|
+
# size: 1024,
|
81
|
+
# name: "example.png"
|
82
|
+
# )
|
83
|
+
def upload_url(content_type:, size:, name:, request_options: nil)
|
84
|
+
response = @request_client.conn.post do |req|
|
85
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
86
|
+
req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
|
87
|
+
req.headers = {
|
88
|
+
**(req.headers || {}),
|
89
|
+
**@request_client.get_headers,
|
90
|
+
**(request_options&.additional_headers || {})
|
91
|
+
}.compact
|
92
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
93
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
94
|
+
end
|
95
|
+
req.body = {
|
96
|
+
**(request_options&.additional_body_parameters || {}),
|
97
|
+
contentType: content_type,
|
98
|
+
size: size,
|
99
|
+
name: name
|
100
|
+
}.compact
|
101
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/tools/uploadUrl"
|
102
|
+
end
|
103
|
+
Pinnacle::Tools::ToolsUploadUrlResponse.from_json(json_object: response.body)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
class AsyncToolsClient
|
108
|
+
# @return [Pinnacle::AsyncRequestClient]
|
109
|
+
attr_reader :request_client
|
110
|
+
|
111
|
+
# @param request_client [Pinnacle::AsyncRequestClient]
|
112
|
+
# @return [Pinnacle::AsyncToolsClient]
|
113
|
+
def initialize(request_client:)
|
114
|
+
@request_client = request_client
|
115
|
+
end
|
116
|
+
|
117
|
+
# Create a shortened URL with an optional expiration date (default and max
|
118
|
+
# expiration is 90 days). The shortened URL will redirect to the original URL and
|
119
|
+
# will have the following format https://urls.p1n.io/ABCD5678.
|
120
|
+
#
|
121
|
+
# @param url [String] The URL to be shortened. Must be a valid URL with either http or https protocol.
|
122
|
+
# @param expires_at [DateTime] Optional expiration date for the shortened URL in ISO 8601 format. Default and
|
123
|
+
# max expiration is 90 days.
|
124
|
+
# @param request_options [Pinnacle::RequestOptions]
|
125
|
+
# @return [Pinnacle::Tools::ToolsShortenUrlResponse]
|
126
|
+
# @example
|
127
|
+
# api = Pinnacle::Client.new(
|
128
|
+
# base_url: "https://api.example.com",
|
129
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
130
|
+
# api_key: "YOUR_API_KEY"
|
131
|
+
# )
|
132
|
+
# api.tools.shorten_url(url: "https://example.com")
|
133
|
+
def shorten_url(url:, expires_at: nil, request_options: nil)
|
134
|
+
Async do
|
135
|
+
response = @request_client.conn.post do |req|
|
136
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
137
|
+
req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
|
138
|
+
req.headers = {
|
139
|
+
**(req.headers || {}),
|
140
|
+
**@request_client.get_headers,
|
141
|
+
**(request_options&.additional_headers || {})
|
142
|
+
}.compact
|
143
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
144
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
145
|
+
end
|
146
|
+
req.body = { **(request_options&.additional_body_parameters || {}), url: url, expiresAt: expires_at }.compact
|
147
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/tools/urls/shorten"
|
148
|
+
end
|
149
|
+
Pinnacle::Tools::ToolsShortenUrlResponse.from_json(json_object: response.body)
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# Generate signed upload (expires in 2 hours) and download URLs for a file
|
154
|
+
# (expires in 1 hour).
|
155
|
+
#
|
156
|
+
# @param content_type [String] The MIME type of the file.
|
157
|
+
# Supported types are audio/basic, audio/L24, audio/mp4, audio/mpeg, audio/mpg,
|
158
|
+
# audio/mp3, audio/ogg, audio/aac, audio/vndrn-realaudio, audio/vndwave,
|
159
|
+
# audio/3gpp, audio/3gpp2, audio/ac3, audio/webm, audio/amrnb, audio/amr,
|
160
|
+
# video/mpeg, video/mp4, video/quicktime, video/webm, video/3gpp, video/3gpp2,
|
161
|
+
# video/3gpptt, video/H261, video/H263, video/H2631998, video/H2632000,
|
162
|
+
# video/H264, video/m4v, video/mpeg4, video/webm, image/jpeg, image/gif,
|
163
|
+
# image/png, image/gif, image/bmp, image/tiff, image/webp, text/vcard,
|
164
|
+
# text/xvcard, text/csv, text/rtf, text/richtext, text/calendar, text/directory,
|
165
|
+
# application/ogg, application/pdf, application/vcard,
|
166
|
+
# application/vndapple.pkpass.
|
167
|
+
# @param size [Integer] The size of the file in bytes. Should be less than 100 MB.
|
168
|
+
# @param name [String] The name of the file.
|
169
|
+
# @param request_options [Pinnacle::RequestOptions]
|
170
|
+
# @return [Pinnacle::Tools::ToolsUploadUrlResponse]
|
171
|
+
# @example
|
172
|
+
# api = Pinnacle::Client.new(
|
173
|
+
# base_url: "https://api.example.com",
|
174
|
+
# environment: Pinnacle::Environment::DEFAULT,
|
175
|
+
# api_key: "YOUR_API_KEY"
|
176
|
+
# )
|
177
|
+
# api.tools.upload_url(
|
178
|
+
# content_type: "image/png",
|
179
|
+
# size: 1024,
|
180
|
+
# name: "example.png"
|
181
|
+
# )
|
182
|
+
def upload_url(content_type:, size:, name:, request_options: nil)
|
183
|
+
Async do
|
184
|
+
response = @request_client.conn.post do |req|
|
185
|
+
req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
|
186
|
+
req.headers["PINNACLE-API-Key"] = request_options.api_key unless request_options&.api_key.nil?
|
187
|
+
req.headers = {
|
188
|
+
**(req.headers || {}),
|
189
|
+
**@request_client.get_headers,
|
190
|
+
**(request_options&.additional_headers || {})
|
191
|
+
}.compact
|
192
|
+
unless request_options.nil? || request_options&.additional_query_parameters.nil?
|
193
|
+
req.params = { **(request_options&.additional_query_parameters || {}) }.compact
|
194
|
+
end
|
195
|
+
req.body = {
|
196
|
+
**(request_options&.additional_body_parameters || {}),
|
197
|
+
contentType: content_type,
|
198
|
+
size: size,
|
199
|
+
name: name
|
200
|
+
}.compact
|
201
|
+
req.url "#{@request_client.get_url(request_options: request_options)}/tools/uploadUrl"
|
202
|
+
end
|
203
|
+
Pinnacle::Tools::ToolsUploadUrlResponse.from_json(json_object: response.body)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "date"
|
4
|
+
require "ostruct"
|
5
|
+
require "json"
|
6
|
+
|
7
|
+
module Pinnacle
|
8
|
+
class Tools
|
9
|
+
class ToolsShortenUrlResponse
|
10
|
+
# @return [String] The shortened URL.
|
11
|
+
attr_reader :shortened_url
|
12
|
+
# @return [DateTime] The expiration date of the shortened URL, if provided.
|
13
|
+
attr_reader :expires_at
|
14
|
+
# @return [OpenStruct] Additional properties unmapped to the current class definition
|
15
|
+
attr_reader :additional_properties
|
16
|
+
# @return [Object]
|
17
|
+
attr_reader :_field_set
|
18
|
+
protected :_field_set
|
19
|
+
|
20
|
+
OMIT = Object.new
|
21
|
+
|
22
|
+
# @param shortened_url [String] The shortened URL.
|
23
|
+
# @param expires_at [DateTime] The expiration date of the shortened URL, if provided.
|
24
|
+
# @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
|
25
|
+
# @return [Pinnacle::Tools::ToolsShortenUrlResponse]
|
26
|
+
def initialize(shortened_url: OMIT, expires_at: OMIT, additional_properties: nil)
|
27
|
+
@shortened_url = shortened_url if shortened_url != OMIT
|
28
|
+
@expires_at = expires_at if expires_at != OMIT
|
29
|
+
@additional_properties = additional_properties
|
30
|
+
@_field_set = { "shortenedUrl": shortened_url, "expiresAt": expires_at }.reject do |_k, v|
|
31
|
+
v == OMIT
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Deserialize a JSON object to an instance of ToolsShortenUrlResponse
|
36
|
+
#
|
37
|
+
# @param json_object [String]
|
38
|
+
# @return [Pinnacle::Tools::ToolsShortenUrlResponse]
|
39
|
+
def self.from_json(json_object:)
|
40
|
+
struct = JSON.parse(json_object, object_class: OpenStruct)
|
41
|
+
parsed_json = JSON.parse(json_object)
|
42
|
+
shortened_url = parsed_json["shortenedUrl"]
|
43
|
+
expires_at = (DateTime.parse(parsed_json["expiresAt"]) unless parsed_json["expiresAt"].nil?)
|
44
|
+
new(
|
45
|
+
shortened_url: shortened_url,
|
46
|
+
expires_at: expires_at,
|
47
|
+
additional_properties: struct
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
# Serialize an instance of ToolsShortenUrlResponse to a JSON object
|
52
|
+
#
|
53
|
+
# @return [String]
|
54
|
+
def to_json(*_args)
|
55
|
+
@_field_set&.to_json
|
56
|
+
end
|
57
|
+
|
58
|
+
# Leveraged for Union-type generation, validate_raw attempts to parse the given
|
59
|
+
# hash and check each fields type against the current object's property
|
60
|
+
# definitions.
|
61
|
+
#
|
62
|
+
# @param obj [Object]
|
63
|
+
# @return [Void]
|
64
|
+
def self.validate_raw(obj:)
|
65
|
+
obj.shortened_url&.is_a?(String) != false || raise("Passed value for field obj.shortened_url is not the expected type, validation failed.")
|
66
|
+
obj.expires_at&.is_a?(DateTime) != false || raise("Passed value for field obj.expires_at is not the expected type, validation failed.")
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "ostruct"
|
4
|
+
require "json"
|
5
|
+
|
6
|
+
module Pinnacle
|
7
|
+
class Tools
|
8
|
+
class ToolsUploadUrlResponse
|
9
|
+
# @return [String] The URL to upload the file.
|
10
|
+
attr_reader :upload
|
11
|
+
# @return [String] The URL to download the file.
|
12
|
+
attr_reader :download
|
13
|
+
# @return [OpenStruct] Additional properties unmapped to the current class definition
|
14
|
+
attr_reader :additional_properties
|
15
|
+
# @return [Object]
|
16
|
+
attr_reader :_field_set
|
17
|
+
protected :_field_set
|
18
|
+
|
19
|
+
OMIT = Object.new
|
20
|
+
|
21
|
+
# @param upload [String] The URL to upload the file.
|
22
|
+
# @param download [String] The URL to download the file.
|
23
|
+
# @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
|
24
|
+
# @return [Pinnacle::Tools::ToolsUploadUrlResponse]
|
25
|
+
def initialize(upload: OMIT, download: OMIT, additional_properties: nil)
|
26
|
+
@upload = upload if upload != OMIT
|
27
|
+
@download = download if download != OMIT
|
28
|
+
@additional_properties = additional_properties
|
29
|
+
@_field_set = { "upload": upload, "download": download }.reject do |_k, v|
|
30
|
+
v == OMIT
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Deserialize a JSON object to an instance of ToolsUploadUrlResponse
|
35
|
+
#
|
36
|
+
# @param json_object [String]
|
37
|
+
# @return [Pinnacle::Tools::ToolsUploadUrlResponse]
|
38
|
+
def self.from_json(json_object:)
|
39
|
+
struct = JSON.parse(json_object, object_class: OpenStruct)
|
40
|
+
parsed_json = JSON.parse(json_object)
|
41
|
+
upload = parsed_json["upload"]
|
42
|
+
download = parsed_json["download"]
|
43
|
+
new(
|
44
|
+
upload: upload,
|
45
|
+
download: download,
|
46
|
+
additional_properties: struct
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
# Serialize an instance of ToolsUploadUrlResponse to a JSON object
|
51
|
+
#
|
52
|
+
# @return [String]
|
53
|
+
def to_json(*_args)
|
54
|
+
@_field_set&.to_json
|
55
|
+
end
|
56
|
+
|
57
|
+
# Leveraged for Union-type generation, validate_raw attempts to parse the given
|
58
|
+
# hash and check each fields type against the current object's property
|
59
|
+
# definitions.
|
60
|
+
#
|
61
|
+
# @param obj [Object]
|
62
|
+
# @return [Void]
|
63
|
+
def self.validate_raw(obj:)
|
64
|
+
obj.upload&.is_a?(String) != false || raise("Passed value for field obj.upload is not the expected type, validation failed.")
|
65
|
+
obj.download&.is_a?(String) != false || raise("Passed value for field obj.download is not the expected type, validation failed.")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|