Class: PostProxy::Resources::Profiles
- Inherits:
-
Object
- Object
- PostProxy::Resources::Profiles
- Defined in:
- lib/postproxy/resources/profiles.rb
Instance Method Summary collapse
-
#assign_placement_to_group(id, placement_id:, target_profile_group_id:, profile_group_id: nil, idempotency_key: nil) ⇒ Object
Moves a placement (e.g. a Facebook Page or Telegram channel) to another profile group.
-
#backfill_posts(id, from:, profile_group_id: nil, idempotency_key: nil) ⇒ Object
Imports older posts from the platform.
- #delete(id, profile_group_id: nil, idempotency_key: nil) ⇒ Object
- #delete_ice_breakers(id, profile_group_id: nil, idempotency_key: nil) ⇒ Object
- #get(id, profile_group_id: nil) ⇒ Object
-
#get_profile_stats(id, placement_id: nil, from: nil, to: nil, profile_group_id: nil) ⇒ Object
placement_idis required for facebook, linkedin, and telegram profiles. -
#ice_breakers(id, profile_group_id: nil) ⇒ Object
Lists DM ice breakers.
-
#initialize(client) ⇒ Profiles
constructor
A new instance of Profiles.
- #list(profile_group_id: nil) ⇒ Object
- #placements(id, profile_group_id: nil) ⇒ Object
-
#post_sync(id, post_sync_id, profile_group_id: nil) ⇒ Object
Fetches a single run.
-
#post_syncs(id, trigger: nil, status: nil, page: nil, per_page: nil, profile_group_id: nil) ⇒ Object
Lists post sync runs, newest first.
-
#set_ice_breakers(id, ice_breakers, profile_group_id: nil, idempotency_key: nil) ⇒ Object
Replaces the DM ice breakers for a profile (1-4 items).
Constructor Details
#initialize(client) ⇒ Profiles
Returns a new instance of Profiles.
4 5 6 |
# File 'lib/postproxy/resources/profiles.rb', line 4 def initialize(client) @client = client end |
Instance Method Details
#assign_placement_to_group(id, placement_id:, target_profile_group_id:, profile_group_id: nil, idempotency_key: nil) ⇒ Object
Moves a placement (e.g. a Facebook Page or Telegram channel) to another
profile group. placement_id is the placement's external ID as
returned by #placements.
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/postproxy/resources/profiles.rb', line 42 def assign_placement_to_group(id, placement_id:, target_profile_group_id:, profile_group_id: nil, idempotency_key: nil) result = @client.request(:patch, "/profiles/#{id}/assign_placement_to_group", json: { placement_id: placement_id, target_profile_group_id: target_profile_group_id }, profile_group_id: profile_group_id, idempotency_key: idempotency_key ) Placement.new(**result) end |
#backfill_posts(id, from:, profile_group_id: nil, idempotency_key: nil) ⇒ Object
Imports older posts from the platform. Walks the profile's feed
backwards from the newest post until it reaches from or the platform
stops returning posts. Runs in the background — poll #post_sync with
the returned id for progress. Only one backfill runs per profile;
starting a second raises ConflictError carrying the running one's
profile_sync_id.
61 62 63 64 65 66 67 68 |
# File 'lib/postproxy/resources/profiles.rb', line 61 def backfill_posts(id, from:, profile_group_id: nil, idempotency_key: nil) result = @client.request(:post, "/profiles/#{id}/backfill_posts", json: { from: from }, profile_group_id: profile_group_id, idempotency_key: idempotency_key ) PostSync.new(**result) end |
#delete(id, profile_group_id: nil, idempotency_key: nil) ⇒ Object
125 126 127 128 129 130 131 |
# File 'lib/postproxy/resources/profiles.rb', line 125 def delete(id, profile_group_id: nil, idempotency_key: nil) result = @client.request(:delete, "/profiles/#{id}", profile_group_id: profile_group_id, idempotency_key: idempotency_key ) SuccessResponse.new(**result) end |
#delete_ice_breakers(id, profile_group_id: nil, idempotency_key: nil) ⇒ Object
117 118 119 120 121 122 123 |
# File 'lib/postproxy/resources/profiles.rb', line 117 def delete_ice_breakers(id, profile_group_id: nil, idempotency_key: nil) result = @client.request(:delete, "/profiles/#{id}/ice_breakers", profile_group_id: profile_group_id, idempotency_key: idempotency_key ) SuccessResponse.new(**result) end |
#get(id, profile_group_id: nil) ⇒ Object
14 15 16 17 |
# File 'lib/postproxy/resources/profiles.rb', line 14 def get(id, profile_group_id: nil) result = @client.request(:get, "/profiles/#{id}", profile_group_id: profile_group_id) Profile.new(**result) end |
#get_profile_stats(id, placement_id: nil, from: nil, to: nil, profile_group_id: nil) ⇒ Object
placement_id is required for facebook, linkedin, and telegram profiles.
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/postproxy/resources/profiles.rb', line 26 def get_profile_stats(id, placement_id: nil, from: nil, to: nil, profile_group_id: nil) params = {} params[:placement_id] = placement_id if placement_id params[:from] = from if from params[:to] = to if to result = @client.request(:get, "/profiles/#{id}/stats", params: params.empty? ? nil : params, profile_group_id: profile_group_id ) ProfileStatsResponse.new(data: result[:data]) end |
#ice_breakers(id, profile_group_id: nil) ⇒ Object
Lists DM ice breakers. Supported for Instagram profiles only.
101 102 103 104 |
# File 'lib/postproxy/resources/profiles.rb', line 101 def ice_breakers(id, profile_group_id: nil) result = @client.request(:get, "/profiles/#{id}/ice_breakers", profile_group_id: profile_group_id) IceBreakersResponse.new(**result) end |
#list(profile_group_id: nil) ⇒ Object
8 9 10 11 12 |
# File 'lib/postproxy/resources/profiles.rb', line 8 def list(profile_group_id: nil) result = @client.request(:get, "/profiles", profile_group_id: profile_group_id) profiles = (result[:data] || []).map { |p| Profile.new(**p) } ListResponse.new(data: profiles) end |
#placements(id, profile_group_id: nil) ⇒ Object
19 20 21 22 23 |
# File 'lib/postproxy/resources/profiles.rb', line 19 def placements(id, profile_group_id: nil) result = @client.request(:get, "/profiles/#{id}/placements", profile_group_id: profile_group_id) items = (result[:data] || []).map { |p| Placement.new(**p) } ListResponse.new(data: items) end |
#post_sync(id, post_sync_id, profile_group_id: nil) ⇒ Object
Fetches a single run. Poll this to follow a backfill to completion —
the run is finished when status is "completed" or "failed".
93 94 95 96 97 98 |
# File 'lib/postproxy/resources/profiles.rb', line 93 def post_sync(id, post_sync_id, profile_group_id: nil) result = @client.request(:get, "/profiles/#{id}/post_syncs/#{post_sync_id}", profile_group_id: profile_group_id ) PostSync.new(**result) end |
#post_syncs(id, trigger: nil, status: nil, page: nil, per_page: nil, profile_group_id: nil) ⇒ Object
Lists post sync runs, newest first. Runs are kept for 30 days.
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/postproxy/resources/profiles.rb', line 71 def post_syncs(id, trigger: nil, status: nil, page: nil, per_page: nil, profile_group_id: nil) params = {} params[:trigger] = trigger if trigger params[:status] = status if status params[:page] = page if page params[:per_page] = per_page if per_page result = @client.request(:get, "/profiles/#{id}/post_syncs", params: params.empty? ? nil : params, profile_group_id: profile_group_id ) syncs = (result[:data] || []).map { |s| PostSync.new(**s) } PaginatedResponse.new( data: syncs, total: result[:total], page: result[:page], per_page: result[:per_page] ) end |
#set_ice_breakers(id, ice_breakers, profile_group_id: nil, idempotency_key: nil) ⇒ Object
Replaces the DM ice breakers for a profile (1-4 items).
107 108 109 110 111 112 113 114 115 |
# File 'lib/postproxy/resources/profiles.rb', line 107 def set_ice_breakers(id, ice_breakers, profile_group_id: nil, idempotency_key: nil) items = ice_breakers.map { |ib| ib.is_a?(IceBreaker) ? ib.to_h : ib } result = @client.request(:post, "/profiles/#{id}/ice_breakers", json: { ice_breakers: items }, profile_group_id: profile_group_id, idempotency_key: idempotency_key ) SuccessResponse.new(**result) end |