post-for-me 0.1.0.pre.alpha.10 → 0.1.0.pre.alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -0
  3. data/README.md +10 -1
  4. data/lib/post_for_me/client.rb +4 -0
  5. data/lib/post_for_me/internal/transport/pooled_net_requester.rb +12 -10
  6. data/lib/post_for_me/internal/util.rb +7 -2
  7. data/lib/post_for_me/models/create_social_post.rb +158 -8
  8. data/lib/post_for_me/models/platform_post.rb +843 -0
  9. data/lib/post_for_me/models/social_account_create_auth_url_params.rb +245 -9
  10. data/lib/post_for_me/models/social_account_feed_list_params.rb +81 -0
  11. data/lib/post_for_me/models/social_account_feed_list_response.rb +58 -0
  12. data/lib/post_for_me/models/social_post.rb +155 -8
  13. data/lib/post_for_me/models/social_post_list_params.rb +9 -1
  14. data/lib/post_for_me/models/social_post_result_list_params.rb +10 -1
  15. data/lib/post_for_me/models/youtube_configuration_dto.rb +31 -1
  16. data/lib/post_for_me/models.rb +4 -0
  17. data/lib/post_for_me/resources/social_account_feeds.rb +51 -0
  18. data/lib/post_for_me/resources/social_accounts.rb +8 -1
  19. data/lib/post_for_me/resources/social_post_results.rb +3 -1
  20. data/lib/post_for_me/resources/social_posts.rb +3 -1
  21. data/lib/post_for_me/version.rb +1 -1
  22. data/lib/post_for_me.rb +5 -0
  23. data/manifest.yaml +1 -0
  24. data/rbi/post_for_me/client.rbi +3 -0
  25. data/rbi/post_for_me/models/create_social_post.rbi +328 -8
  26. data/rbi/post_for_me/models/platform_post.rbi +1287 -0
  27. data/rbi/post_for_me/models/social_account_create_auth_url_params.rbi +545 -15
  28. data/rbi/post_for_me/models/social_account_feed_list_params.rbi +157 -0
  29. data/rbi/post_for_me/models/social_account_feed_list_response.rbi +110 -0
  30. data/rbi/post_for_me/models/social_post.rbi +328 -8
  31. data/rbi/post_for_me/models/social_post_list_params.rbi +11 -0
  32. data/rbi/post_for_me/models/social_post_result_list_params.rbi +13 -0
  33. data/rbi/post_for_me/models/youtube_configuration_dto.rbi +63 -0
  34. data/rbi/post_for_me/models.rbi +4 -0
  35. data/rbi/post_for_me/resources/social_account_feeds.rbi +51 -0
  36. data/rbi/post_for_me/resources/social_accounts.rbi +13 -0
  37. data/rbi/post_for_me/resources/social_post_results.rbi +4 -0
  38. data/rbi/post_for_me/resources/social_posts.rbi +3 -0
  39. data/sig/post_for_me/client.rbs +2 -0
  40. data/sig/post_for_me/models/create_social_post.rbs +120 -8
  41. data/sig/post_for_me/models/platform_post.rbs +660 -0
  42. data/sig/post_for_me/models/social_account_create_auth_url_params.rbs +193 -10
  43. data/sig/post_for_me/models/social_account_feed_list_params.rbs +75 -0
  44. data/sig/post_for_me/models/social_account_feed_list_response.rbs +54 -0
  45. data/sig/post_for_me/models/social_post.rbs +120 -8
  46. data/sig/post_for_me/models/social_post_list_params.rbs +7 -0
  47. data/sig/post_for_me/models/social_post_result_list_params.rbs +8 -1
  48. data/sig/post_for_me/models/youtube_configuration_dto.rbs +22 -0
  49. data/sig/post_for_me/models.rbs +4 -0
  50. data/sig/post_for_me/resources/social_account_feeds.rbs +18 -0
  51. data/sig/post_for_me/resources/social_accounts.rbs +2 -0
  52. data/sig/post_for_me/resources/social_post_results.rbs +1 -0
  53. data/sig/post_for_me/resources/social_posts.rbs +1 -0
  54. metadata +28 -2
@@ -44,12 +44,21 @@ module PostForMe
44
44
  sig { params(post_id: T::Array[String]).void }
45
45
  attr_writer :post_id
46
46
 
47
+ # Filter by social account ID(s). Multiple values imply OR logic (e.g.,
48
+ # ?social_account_id=123&social_account_id=456).
49
+ sig { returns(T.nilable(T::Array[String])) }
50
+ attr_reader :social_account_id
51
+
52
+ sig { params(social_account_id: T::Array[String]).void }
53
+ attr_writer :social_account_id
54
+
47
55
  sig do
48
56
  params(
49
57
  limit: Float,
50
58
  offset: Float,
51
59
  platform: T::Array[String],
52
60
  post_id: T::Array[String],
61
+ social_account_id: T::Array[String],
53
62
  request_options: PostForMe::RequestOptions::OrHash
54
63
  ).returns(T.attached_class)
55
64
  end
@@ -64,6 +73,9 @@ module PostForMe
64
73
  # Filter by post IDs. Multiple values imply OR logic (e.g.,
65
74
  # ?post_id=123&post_id=456).
66
75
  post_id: nil,
76
+ # Filter by social account ID(s). Multiple values imply OR logic (e.g.,
77
+ # ?social_account_id=123&social_account_id=456).
78
+ social_account_id: nil,
67
79
  request_options: {}
68
80
  )
69
81
  end
@@ -75,6 +87,7 @@ module PostForMe
75
87
  offset: Float,
76
88
  platform: T::Array[String],
77
89
  post_id: T::Array[String],
90
+ social_account_id: T::Array[String],
78
91
  request_options: PostForMe::RequestOptions
79
92
  }
80
93
  )
@@ -15,12 +15,24 @@ module PostForMe
15
15
  sig { returns(T.nilable(T.anything)) }
16
16
  attr_accessor :caption
17
17
 
18
+ # If true will notify YouTube the video is intended for kids, defaults to false
19
+ sig { returns(T.nilable(T::Boolean)) }
20
+ attr_accessor :made_for_kids
21
+
18
22
  # Overrides the `media` from the post
19
23
  sig do
20
24
  returns(T.nilable(T::Array[PostForMe::YoutubeConfigurationDto::Media]))
21
25
  end
22
26
  attr_accessor :media
23
27
 
28
+ # Sets the privacy status of the video, will default to public
29
+ sig do
30
+ returns(
31
+ T.nilable(PostForMe::YoutubeConfigurationDto::PrivacyStatus::OrSymbol)
32
+ )
33
+ end
34
+ attr_accessor :privacy_status
35
+
24
36
  # Overrides the `title` from the post
25
37
  sig { returns(T.nilable(String)) }
26
38
  attr_accessor :title
@@ -28,18 +40,27 @@ module PostForMe
28
40
  sig do
29
41
  params(
30
42
  caption: T.nilable(T.anything),
43
+ made_for_kids: T.nilable(T::Boolean),
31
44
  media:
32
45
  T.nilable(
33
46
  T::Array[PostForMe::YoutubeConfigurationDto::Media::OrHash]
34
47
  ),
48
+ privacy_status:
49
+ T.nilable(
50
+ PostForMe::YoutubeConfigurationDto::PrivacyStatus::OrSymbol
51
+ ),
35
52
  title: T.nilable(String)
36
53
  ).returns(T.attached_class)
37
54
  end
38
55
  def self.new(
39
56
  # Overrides the `caption` from the post
40
57
  caption: nil,
58
+ # If true will notify YouTube the video is intended for kids, defaults to false
59
+ made_for_kids: nil,
41
60
  # Overrides the `media` from the post
42
61
  media: nil,
62
+ # Sets the privacy status of the video, will default to public
63
+ privacy_status: nil,
43
64
  # Overrides the `title` from the post
44
65
  title: nil
45
66
  )
@@ -49,8 +70,13 @@ module PostForMe
49
70
  override.returns(
50
71
  {
51
72
  caption: T.nilable(T.anything),
73
+ made_for_kids: T.nilable(T::Boolean),
52
74
  media:
53
75
  T.nilable(T::Array[PostForMe::YoutubeConfigurationDto::Media]),
76
+ privacy_status:
77
+ T.nilable(
78
+ PostForMe::YoutubeConfigurationDto::PrivacyStatus::OrSymbol
79
+ ),
54
80
  title: T.nilable(String)
55
81
  }
56
82
  )
@@ -288,6 +314,43 @@ module PostForMe
288
314
  end
289
315
  end
290
316
  end
317
+
318
+ # Sets the privacy status of the video, will default to public
319
+ module PrivacyStatus
320
+ extend PostForMe::Internal::Type::Enum
321
+
322
+ TaggedSymbol =
323
+ T.type_alias do
324
+ T.all(Symbol, PostForMe::YoutubeConfigurationDto::PrivacyStatus)
325
+ end
326
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
327
+
328
+ PUBLIC =
329
+ T.let(
330
+ :public,
331
+ PostForMe::YoutubeConfigurationDto::PrivacyStatus::TaggedSymbol
332
+ )
333
+ PRIVATE =
334
+ T.let(
335
+ :private,
336
+ PostForMe::YoutubeConfigurationDto::PrivacyStatus::TaggedSymbol
337
+ )
338
+ UNLISTED =
339
+ T.let(
340
+ :unlisted,
341
+ PostForMe::YoutubeConfigurationDto::PrivacyStatus::TaggedSymbol
342
+ )
343
+
344
+ sig do
345
+ override.returns(
346
+ T::Array[
347
+ PostForMe::YoutubeConfigurationDto::PrivacyStatus::TaggedSymbol
348
+ ]
349
+ )
350
+ end
351
+ def self.values
352
+ end
353
+ end
291
354
  end
292
355
  end
293
356
  end
@@ -17,6 +17,8 @@ module PostForMe
17
17
 
18
18
  PlatformConfigurationsDto = PostForMe::Models::PlatformConfigurationsDto
19
19
 
20
+ PlatformPost = PostForMe::Models::PlatformPost
21
+
20
22
  SocialAccount = PostForMe::Models::SocialAccount
21
23
 
22
24
  SocialAccountCreateAuthURLParams =
@@ -27,6 +29,8 @@ module PostForMe
27
29
  SocialAccountDisconnectParams =
28
30
  PostForMe::Models::SocialAccountDisconnectParams
29
31
 
32
+ SocialAccountFeedListParams = PostForMe::Models::SocialAccountFeedListParams
33
+
30
34
  SocialAccountListParams = PostForMe::Models::SocialAccountListParams
31
35
 
32
36
  SocialAccountRetrieveParams = PostForMe::Models::SocialAccountRetrieveParams
@@ -0,0 +1,51 @@
1
+ # typed: strong
2
+
3
+ module PostForMe
4
+ module Resources
5
+ class SocialAccountFeeds
6
+ # Get a paginated result for the social account based on the applied filters
7
+ sig do
8
+ params(
9
+ social_account_id: String,
10
+ cursor: String,
11
+ expand:
12
+ T::Array[PostForMe::SocialAccountFeedListParams::Expand::OrSymbol],
13
+ external_post_id: T::Array[String],
14
+ limit: Float,
15
+ platform_post_id: T::Array[String],
16
+ social_post_id: T::Array[String],
17
+ request_options: PostForMe::RequestOptions::OrHash
18
+ ).returns(PostForMe::Models::SocialAccountFeedListResponse)
19
+ end
20
+ def list(
21
+ # Social Account ID
22
+ social_account_id,
23
+ # Cursor identifying next page of results
24
+ cursor: nil,
25
+ # Expand additional data in the response. Currently supports: "metrics" to include
26
+ # post analytics data.
27
+ expand: nil,
28
+ # Filter by Post for Me Social Postexternal ID. Multiple values imply OR logic
29
+ # (e.g., ?external_post_id=xxxxxx&external_post_id=yyyyyy).
30
+ external_post_id: nil,
31
+ # Number of items to return; Note: some platforms will have different max limits,
32
+ # in the case the provided limit is over the platform's limit we will return the
33
+ # max allowed by the platform.
34
+ limit: nil,
35
+ # Filter by the platform's id(s). Multiple values imply OR logic (e.g.,
36
+ # ?social_post_id=spr_xxxxxx&social_post_id=spr_yyyyyy).
37
+ platform_post_id: nil,
38
+ # Filter by Post for Me Social Post id(s). Multiple values imply OR logic (e.g.,
39
+ # ?social_post_id=sp_xxxxxx&social_post_id=sp_yyyyyy).
40
+ social_post_id: nil,
41
+ request_options: {}
42
+ )
43
+ end
44
+
45
+ # @api private
46
+ sig { params(client: PostForMe::Client).returns(T.attached_class) }
47
+ def self.new(client:)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -117,8 +117,13 @@ module PostForMe
117
117
  params(
118
118
  platform: String,
119
119
  external_id: String,
120
+ permissions:
121
+ T::Array[
122
+ PostForMe::SocialAccountCreateAuthURLParams::Permission::OrSymbol
123
+ ],
120
124
  platform_data:
121
125
  PostForMe::SocialAccountCreateAuthURLParams::PlatformData::OrHash,
126
+ redirect_url_override: String,
122
127
  request_options: PostForMe::RequestOptions::OrHash
123
128
  ).returns(PostForMe::Models::SocialAccountCreateAuthURLResponse)
124
129
  end
@@ -127,8 +132,16 @@ module PostForMe
127
132
  platform:,
128
133
  # Your unique identifier for the social account
129
134
  external_id: nil,
135
+ # List of permissions you want to allow. Will default to only post permissions.
136
+ # You must include the "feeds" permission to request an account feed and metrics
137
+ permissions: nil,
130
138
  # Additional data needed for the provider
131
139
  platform_data: nil,
140
+ # Override the default redirect URL for the OAuth flow. If provided, this URL will
141
+ # be used instead of our redirect URL. Make sure this URL is included in your
142
+ # app's authorized redirect urls. This override will not work when using our
143
+ # system credientals.
144
+ redirect_url_override: nil,
132
145
  request_options: {}
133
146
  )
134
147
  end
@@ -24,6 +24,7 @@ module PostForMe
24
24
  offset: Float,
25
25
  platform: T::Array[String],
26
26
  post_id: T::Array[String],
27
+ social_account_id: T::Array[String],
27
28
  request_options: PostForMe::RequestOptions::OrHash
28
29
  ).returns(PostForMe::Models::SocialPostResultListResponse)
29
30
  end
@@ -38,6 +39,9 @@ module PostForMe
38
39
  # Filter by post IDs. Multiple values imply OR logic (e.g.,
39
40
  # ?post_id=123&post_id=456).
40
41
  post_id: nil,
42
+ # Filter by social account ID(s). Multiple values imply OR logic (e.g.,
43
+ # ?social_account_id=123&social_account_id=456).
44
+ social_account_id: nil,
41
45
  request_options: {}
42
46
  )
43
47
  end
@@ -114,6 +114,7 @@ module PostForMe
114
114
  offset: Float,
115
115
  platform:
116
116
  T::Array[PostForMe::SocialPostListParams::Platform::OrSymbol],
117
+ social_account_id: T::Array[String],
117
118
  status: T::Array[PostForMe::SocialPostListParams::Status::OrSymbol],
118
119
  request_options: PostForMe::RequestOptions::OrHash
119
120
  ).returns(PostForMe::Models::SocialPostListResponse)
@@ -127,6 +128,8 @@ module PostForMe
127
128
  offset: nil,
128
129
  # Filter by platforms. Multiple values imply OR logic.
129
130
  platform: nil,
131
+ # Filter by social account ID. Multiple values imply OR logic.
132
+ social_account_id: nil,
130
133
  # Filter by post status. Multiple values imply OR logic.
131
134
  status: nil,
132
135
  request_options: {}
@@ -18,6 +18,8 @@ module PostForMe
18
18
 
19
19
  attr_reader social_accounts: PostForMe::Resources::SocialAccounts
20
20
 
21
+ attr_reader social_account_feeds: PostForMe::Resources::SocialAccountFeeds
22
+
21
23
  private def auth_headers: -> ::Hash[String, String]
22
24
 
23
25
  def initialize: (
@@ -88,10 +88,11 @@ module PostForMe
88
88
  is_draft: bool?,
89
89
  link: String?,
90
90
  location: String?,
91
- media: ::Array[String]?,
91
+ made_for_kids: bool?,
92
+ media: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media]?,
92
93
  placement: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::placement?,
93
94
  poll: PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Poll,
94
- privacy_status: String?,
95
+ privacy_status: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::privacy_status?,
95
96
  quote_tweet_id: String,
96
97
  reply_settings: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::reply_settings?,
97
98
  share_to_feed: bool?,
@@ -129,7 +130,9 @@ module PostForMe
129
130
 
130
131
  attr_accessor location: String?
131
132
 
132
- attr_accessor media: ::Array[String]?
133
+ attr_accessor made_for_kids: bool?
134
+
135
+ attr_accessor media: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media]?
133
136
 
134
137
  attr_accessor placement: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::placement?
135
138
 
@@ -139,7 +142,7 @@ module PostForMe
139
142
  PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Poll
140
143
  ) -> PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Poll
141
144
 
142
- attr_accessor privacy_status: String?
145
+ attr_accessor privacy_status: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::privacy_status?
143
146
 
144
147
  attr_reader quote_tweet_id: String?
145
148
 
@@ -166,10 +169,11 @@ module PostForMe
166
169
  ?is_draft: bool?,
167
170
  ?link: String?,
168
171
  ?location: String?,
169
- ?media: ::Array[String]?,
172
+ ?made_for_kids: bool?,
173
+ ?media: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media]?,
170
174
  ?placement: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::placement?,
171
175
  ?poll: PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Poll,
172
- ?privacy_status: String?,
176
+ ?privacy_status: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::privacy_status?,
173
177
  ?quote_tweet_id: String,
174
178
  ?reply_settings: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::reply_settings?,
175
179
  ?share_to_feed: bool?,
@@ -191,16 +195,112 @@ module PostForMe
191
195
  is_draft: bool?,
192
196
  link: String?,
193
197
  location: String?,
194
- media: ::Array[String]?,
198
+ made_for_kids: bool?,
199
+ media: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media]?,
195
200
  placement: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::placement?,
196
201
  poll: PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Poll,
197
- privacy_status: String?,
202
+ privacy_status: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::privacy_status?,
198
203
  quote_tweet_id: String,
199
204
  reply_settings: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::reply_settings?,
200
205
  share_to_feed: bool?,
201
206
  title: String?
202
207
  }
203
208
 
209
+ type media =
210
+ {
211
+ url: String,
212
+ tags: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag]?,
213
+ thumbnail_timestamp_ms: top?,
214
+ thumbnail_url: top?
215
+ }
216
+
217
+ class Media < PostForMe::Internal::Type::BaseModel
218
+ attr_accessor url: String
219
+
220
+ attr_accessor tags: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag]?
221
+
222
+ attr_accessor thumbnail_timestamp_ms: top?
223
+
224
+ attr_accessor thumbnail_url: top?
225
+
226
+ def initialize: (
227
+ url: String,
228
+ ?tags: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag]?,
229
+ ?thumbnail_timestamp_ms: top?,
230
+ ?thumbnail_url: top?
231
+ ) -> void
232
+
233
+ def to_hash: -> {
234
+ url: String,
235
+ tags: ::Array[PostForMe::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag]?,
236
+ thumbnail_timestamp_ms: top?,
237
+ thumbnail_url: top?
238
+ }
239
+
240
+ type tag =
241
+ {
242
+ id: String,
243
+ platform: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::platform,
244
+ type: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::type_,
245
+ x: Float,
246
+ y_: Float
247
+ }
248
+
249
+ class Tag < PostForMe::Internal::Type::BaseModel
250
+ attr_accessor id: String
251
+
252
+ attr_accessor platform: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::platform
253
+
254
+ attr_accessor type: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::type_
255
+
256
+ attr_reader x: Float?
257
+
258
+ def x=: (Float) -> Float
259
+
260
+ attr_reader y_: Float?
261
+
262
+ def y_=: (Float) -> Float
263
+
264
+ def initialize: (
265
+ id: String,
266
+ platform: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::platform,
267
+ type: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::type_,
268
+ ?x: Float,
269
+ ?y_: Float
270
+ ) -> void
271
+
272
+ def to_hash: -> {
273
+ id: String,
274
+ platform: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::platform,
275
+ type: PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::type_,
276
+ x: Float,
277
+ y_: Float
278
+ }
279
+
280
+ type platform = :facebook | :instagram
281
+
282
+ module Platform
283
+ extend PostForMe::Internal::Type::Enum
284
+
285
+ FACEBOOK: :facebook
286
+ INSTAGRAM: :instagram
287
+
288
+ def self?.values: -> ::Array[PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::platform]
289
+ end
290
+
291
+ type type_ = :user | :product
292
+
293
+ module Type
294
+ extend PostForMe::Internal::Type::Enum
295
+
296
+ USER: :user
297
+ PRODUCT: :product
298
+
299
+ def self?.values: -> ::Array[PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::Media::Tag::type_]
300
+ end
301
+ end
302
+ end
303
+
204
304
  type placement = :reels | :timeline | :stories
205
305
 
206
306
  module Placement
@@ -258,6 +358,18 @@ module PostForMe
258
358
  end
259
359
  end
260
360
 
361
+ type privacy_status = :public | :private | :unlisted
362
+
363
+ module PrivacyStatus
364
+ extend PostForMe::Internal::Type::Enum
365
+
366
+ PUBLIC: :public
367
+ PRIVATE: :private
368
+ UNLISTED: :unlisted
369
+
370
+ def self?.values: -> ::Array[PostForMe::Models::CreateSocialPost::AccountConfiguration::Configuration::privacy_status]
371
+ end
372
+
261
373
  type reply_settings =
262
374
  :following | :mentionedUsers | :subscribers | :verified
263
375