rails-pinterest 0.2.3 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: acea05888eb1f4e066d2ccd569c06247dafcc2017c6d00ce8ca8d6ba09123e79
4
- data.tar.gz: 34f53ac40b094a888c2a2ddde8ebe4b21c6abe012a262e60ad337c3257607ad2
3
+ metadata.gz: c2511d23d52e43b2316914cd9ae42d5420a9677471f417c3d725c36c58abaabe
4
+ data.tar.gz: 17ca93046f01b103c386a01fcf3048da5736f14168cb6f9e27ddb4a3f554d5e9
5
5
  SHA512:
6
- metadata.gz: aa1d8f190e023964ee127492199ea371d27a9c4701f6cd15d152ff16fcfe2cdafc3d33d81b132fff78eaf9862063943f6d6f5f30e6bf0080cf97024f73adfde9
7
- data.tar.gz: 7a1019812589c76673aee7ebd408dc2496dc8b31cbbb2665d42c72824cfa46b84661b22a78327698f17d029f74858a226d4b2d5fe5b2d14c2ddce3c9b5fc6037
6
+ metadata.gz: dd55a3c51bb89ea98999bc7b9c11c79aeb2fc5ba03f9fbc0fe69dcc4b0fd2156725a57261fea987450329e7242c4841c820c300a290f04f3db11ca9104fc4a9a
7
+ data.tar.gz: 2cff0ae0bfe401e66c8445f8aef9222576c69d6227f05b2e229e9c043df2129b36bb1e71f43545e8b2f6ac4874135b2d0f73b4c89d22e92a9557a4de92b4c1e1
data/CHANGELOG.md CHANGED
@@ -44,4 +44,21 @@
44
44
  - Fix param requirement for Media#register_media_upload
45
45
 
46
46
  ## [0.2.3] - 2024-03-11
47
- - Revert V.0.2.3
47
+ - Revert V.0.2.3
48
+
49
+ ## [0.2.4] - 2024-04-09
50
+ - Add User Account to API
51
+
52
+ ## [0.2.5] - 2024-05-10
53
+ - Add the beta endpoint https://developer.pinterest.com/docs/api/v5/#operation/multi_pins/analytics (it doesn't really work right now)
54
+ - Example usage:
55
+ ```ruby
56
+ client = Pinterest::Client.new(access_token: "some-access-token")
57
+ params = {
58
+ pin_ids: ["920634348815764178","920634348815790715","920634348815829069","920634348815865049","920634348815897303","920634348815911959","920634348815943797","920634348816238458","920634348816183143","920634348816403644","920634348816488886","920634348816699966"],
59
+ start_date: "2024-03-01",
60
+ end_date: "2024-05-10",
61
+ metric_types: ["IMPRESSION", "OUTBOUND_CLICK", "PIN_CLICK", "SAVE", "SAVE_RATE", "VIDEO_MRC_VIEW", "VIDEO_10S_VIEW", "QUARTILE_95_PERCENT_VIEW", "VIDEO_V50_WATCH_TIME", "VIDEO_START", "VIDEO_AVG_WATCH_TIME", "TOTAL_COMMENTS", "TOTAL_REACTIONS"]
62
+ }
63
+ response = client.pins.get_multiple_pin_analytics(ids: params[:pin_ids], start_date: params[:start_date], end_date: params[:end_date], metric_types: params[:metric_types], parameters: {})
64
+ ```
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rails-pinterest (0.2.3)
4
+ rails-pinterest (0.2.5)
5
5
  faraday (>= 1)
6
6
  faraday-multipart (>= 1)
7
7
 
data/README.md CHANGED
@@ -260,4 +260,7 @@ The gem is available as open source under the terms of the [MIT License](https:/
260
260
  Everyone interacting in the Ruby Pinterest project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/royalgiant/rails-pinterest/blob/main/CODE_OF_CONDUCT.md).
261
261
 
262
262
  ## Influences
263
- Project heavily influenced by [https://github.com/alexrudall/ruby-openai](https://github.com/alexrudall/ruby-openai). Great project, go give them a star!
263
+ Project heavily influenced by [https://github.com/alexrudall/ruby-openai](https://github.com/alexrudall/ruby-openai). Great project, go give them a star!
264
+
265
+ ## Where Is Rails-Pinterest Used?
266
+ Currently used by [Imagifyr](https://imagifyr.com) to allow creators to schedule their content. SEO Optimized with AI.
@@ -46,5 +46,9 @@ module Pinterest
46
46
  def media
47
47
  @media ||= Pinterest::Media.new(client: self)
48
48
  end
49
+
50
+ def user_account
51
+ @user_account ||= Pinterest::UserAccount.new(client: self)
52
+ end
49
53
  end
50
54
  end
@@ -24,8 +24,12 @@ module Pinterest
24
24
  @client.patch(path: "/pins/#{id}", parameters: parameters)
25
25
  end
26
26
 
27
- def get_pin_analytics(id:, parameters: {})
28
- @client.get(path: "/pins/#{id}/analytics", parameters: parameters)
27
+ def get_pin_analytics(id:, start_date:, end_date:, metric_types:, parameters: {})
28
+ @client.get(path: "/pins/#{id}/analytics?start_date=#{start_date}&end_date=#{end_date}&metric_types=#{metric_types}", parameters: parameters)
29
+ end
30
+
31
+ def get_multiple_pin_analytics(ids:, start_date:, end_date:, metric_types:, parameters: {})
32
+ @client.get(path: "/pins/analytics?pin_ids=#{ids}&start_date=#{start_date}&end_date=#{end_date}&metric_types=#{metric_types}", parameters: parameters)
29
33
  end
30
34
 
31
35
  def save_pin(id: , parameters: {})
@@ -0,0 +1,144 @@
1
+ module Pinterest
2
+ class UserAccount
3
+ def initialize(client: nil)
4
+ @client = client
5
+ end
6
+
7
+ def get_user_account(parameters: {})
8
+ @client.get(path: "/user_account", parameters: parameters)
9
+ end
10
+
11
+ def get_user_account_analytics(start_date:, end_date:, parameters: {})
12
+ query_string = "/user_account/analytics?start_date=#{start_date}&end_date=#{end_date}"
13
+ if parameters[:from_claimed_content] && !parameters[:from_claimed_content].empty?
14
+ query_string += "&from_claimed_content=#{parameters[:from_claimed_content]}"
15
+ end
16
+ if parameters[:pin_format] && !parameters[:pin_format].empty?
17
+ query_string += "&pin_format=#{parameters[:pin_format]}"
18
+ end
19
+ if parameters[:app_types] && !parameters[:app_types].empty?
20
+ query_string += "&app_types=#{parameters[:app_types]}"
21
+ end
22
+ if parameters[:content_type] && !parameters[:content_type].empty?
23
+ query_string += "&content_type=#{parameters[:content_type]}"
24
+ end
25
+ if parameters[:source] && !parameters[:source].empty?
26
+ query_string += "&source=#{parameters[:source]}"
27
+ end
28
+ if parameters[:metric_types] && !parameters[:metric_types].empty?
29
+ query_string += "&metric_types=#{parameters[:metric_types]}"
30
+ end
31
+ if parameters[:split_field] && !parameters[:split_field].empty?
32
+ query_string += "&split_field=#{parameters[:split_field]}"
33
+ end
34
+ if parameters[:ad_account_id] && !parameters[:ad_account_id].empty?
35
+ query_string += "&ad_account_id=#{parameters[:ad_account_id]}"
36
+ end
37
+ @client.get(path: query_string, parameters: parameters)
38
+ end
39
+
40
+ def get_user_account_top_pins_analytics(start_date:, end_date:, sort_by:, parameters: {})
41
+ query_string = "/user_account/analytics?start_date=#{start_date}&end_date=#{end_date}&sort_by=#{sort_by}"
42
+ if parameters[:from_claimed_content] && !parameters[:from_claimed_content].empty?
43
+ query_string += "&from_claimed_content=#{parameters[:from_claimed_content]}"
44
+ end
45
+ if parameters[:pin_format] && !parameters[:pin_format].empty?
46
+ query_string += "&pin_format=#{parameters[:pin_format]}"
47
+ end
48
+ if parameters[:app_types] && !parameters[:app_types].empty?
49
+ query_string += "&app_types=#{parameters[:app_types]}"
50
+ end
51
+ if parameters[:content_type] && !parameters[:content_type].empty?
52
+ query_string += "&content_type=#{parameters[:content_type]}"
53
+ end
54
+ if parameters[:source] && !parameters[:source].empty?
55
+ query_string += "&source=#{parameters[:source]}"
56
+ end
57
+ if parameters[:metric_types] && !parameters[:metric_types].empty?
58
+ query_string += "&metric_types=#{parameters[:metric_types]}"
59
+ end
60
+ if parameters[:num_of_pins] && !parameters[:num_of_pins].empty?
61
+ query_string += "&num_of_pins=#{parameters[:num_of_pins]}"
62
+ end
63
+ if parameters[:created_in_last_n_days] && !parameters[:created_in_last_n_days].empty?
64
+ query_string += "&created_in_last_n_days=#{parameters[:created_in_last_n_days]}"
65
+ end
66
+ if parameters[:ad_account_id] && !parameters[:ad_account_id].empty?
67
+ query_string += "&ad_account_id=#{parameters[:ad_account_id]}"
68
+ end
69
+ @client.get(path: query_string, parameters: parameters)
70
+ end
71
+
72
+ def get_user_account_top_video_pins_analytics(start_date:, end_date:, sort_by:, parameters: {})
73
+ query_string = "/user_account/analytics?start_date=#{start_date}&end_date=#{end_date}&sort_by=#{sort_by}"
74
+ if parameters[:from_claimed_content] && !parameters[:from_claimed_content].empty?
75
+ query_string += "&from_claimed_content=#{parameters[:from_claimed_content]}"
76
+ end
77
+ if parameters[:pin_format] && !parameters[:pin_format].empty?
78
+ query_string += "&pin_format=#{parameters[:pin_format]}"
79
+ end
80
+ if parameters[:app_types] && !parameters[:app_types].empty?
81
+ query_string += "&app_types=#{parameters[:app_types]}"
82
+ end
83
+ if parameters[:content_type] && !parameters[:content_type].empty?
84
+ query_string += "&content_type=#{parameters[:content_type]}"
85
+ end
86
+ if parameters[:source] && !parameters[:source].empty?
87
+ query_string += "&source=#{parameters[:source]}"
88
+ end
89
+ if parameters[:metric_types] && !parameters[:metric_types].empty?
90
+ query_string += "&metric_types=#{parameters[:metric_types]}"
91
+ end
92
+ if parameters[:num_of_pins] && !parameters[:num_of_pins].empty?
93
+ query_string += "&num_of_pins=#{parameters[:num_of_pins]}"
94
+ end
95
+ if parameters[:created_in_last_n_days] && !parameters[:created_in_last_n_days].empty?
96
+ query_string += "&created_in_last_n_days=#{parameters[:created_in_last_n_days]}"
97
+ end
98
+ if parameters[:ad_account_id] && !parameters[:ad_account_id].empty?
99
+ query_string += "&ad_account_id=#{parameters[:ad_account_id]}"
100
+ end
101
+ @client.get(path: query_string, parameters: parameters)
102
+ end
103
+
104
+ def list_linked_businesses(parameters: {})
105
+ @client.get(path: "/user_account/businesses", parameters: parameters)
106
+ end
107
+
108
+ def list_followers(parameters: {})
109
+ @client.get(path: "/user_account/followers", parameters: parameters)
110
+ end
111
+
112
+ def list_following(parameters: {})
113
+ @client.get(path: "/user_account/following", parameters: parameters)
114
+ end
115
+
116
+ def list_following_boards(parameters: {})
117
+ @client.get(path: "/user_account/following/boards", parameters: parameters)
118
+ end
119
+
120
+ def follow_user(username:, parameters: {})
121
+ @client.json_post(path: "/user_account/following/#{username}", parameters: parameters)
122
+ end
123
+
124
+ def verify_website(parameters: {})
125
+ @client.json_post(path: "/user_account/websites", parameters: parameters)
126
+ end
127
+
128
+ def get_user_websites(parameters: {})
129
+ @client.get(path: "/user_account/websites", parameters: parameters)
130
+ end
131
+
132
+ def unverify_website(website:)
133
+ @client.delete(path: "/user_account/websites?website=#{website}")
134
+ end
135
+
136
+ def get_user_verification_code_for_website_claiming(parameters: {})
137
+ @client.get(path: "/user_account/websites/verification", parameters: parameters)
138
+ end
139
+
140
+ def list_following_interests(username:, parameters: {})
141
+ @client.get(path: "/users/#{username}/interests/follow", parameters: parameters)
142
+ end
143
+ end
144
+ end
@@ -1,3 +1,3 @@
1
1
  module Pinterest
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.5"
3
3
  end
data/lib/pinterest.rb CHANGED
@@ -8,6 +8,7 @@ require_relative "pinterest/media"
8
8
  require_relative "pinterest/oauth"
9
9
  require_relative "pinterest/pins"
10
10
  require_relative "pinterest/terms"
11
+ require_relative "pinterest/user_account"
11
12
  require_relative "pinterest/version"
12
13
 
13
14
  module Pinterest
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-pinterest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Donald Lee
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-12 00:00:00.000000000 Z
11
+ date: 2024-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -65,6 +65,7 @@ files:
65
65
  - lib/pinterest/oauth.rb
66
66
  - lib/pinterest/pins.rb
67
67
  - lib/pinterest/terms.rb
68
+ - lib/pinterest/user_account.rb
68
69
  - lib/pinterest/version.rb
69
70
  - lib/ruby/pinterest.rb
70
71
  - rails-pinterest.gemspec