Class: PostProxy::Resources::Profiles

Inherits:
Object
  • Object
show all
Defined in:
lib/postproxy/resources/profiles.rb

Instance Method Summary collapse

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) ⇒ 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
# File 'lib/postproxy/resources/profiles.rb', line 42

def assign_placement_to_group(id, placement_id:, target_profile_group_id:, profile_group_id: 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
  )
  Placement.new(**result)
end

#delete(id, profile_group_id: nil) ⇒ Object



74
75
76
77
# File 'lib/postproxy/resources/profiles.rb', line 74

def delete(id, profile_group_id: nil)
  result = @client.request(:delete, "/profiles/#{id}", profile_group_id: profile_group_id)
  SuccessResponse.new(**result)
end

#delete_ice_breakers(id, profile_group_id: nil) ⇒ Object



69
70
71
72
# File 'lib/postproxy/resources/profiles.rb', line 69

def delete_ice_breakers(id, profile_group_id: nil)
  result = @client.request(:delete, "/profiles/#{id}/ice_breakers", profile_group_id: profile_group_id)
  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.



54
55
56
57
# File 'lib/postproxy/resources/profiles.rb', line 54

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

#set_ice_breakers(id, ice_breakers, profile_group_id: nil) ⇒ Object

Replaces the DM ice breakers for a profile (1-4 items).



60
61
62
63
64
65
66
67
# File 'lib/postproxy/resources/profiles.rb', line 60

def set_ice_breakers(id, ice_breakers, profile_group_id: 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
  )
  SuccessResponse.new(**result)
end