Class: IgApi::Thread

Inherits:
Object
  • Object
show all
Defined in:
lib/ig_api/thread.rb

Instance Method Summary collapse

Constructor Details

#initializeThread

Returns a new instance of Thread.



6
7
8
# File 'lib/ig_api/thread.rb', line 6

def initialize
  @api = Http.singleton
end

Instance Method Details

#configure_media(users, media_id, text) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/ig_api/thread.rb', line 46

def configure_media(users, media_id, text)
  payload = {
    recipient_users: [users].to_json,
    client_context: IgApi::Http.generate_uuid,
    media_id: media_id
  }

  payload[:text] = text unless text.empty?
  response = @api.multipart(Constants::URL + 'direct_v2/threads/broadcast/media_share/?media_type=photo',
                            payload)
                 .with(session: @user[:session], ua: @user[:ua])
                 .exec

  response.body
end

#configure_story(users, media_id, text) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/ig_api/thread.rb', line 62

def configure_story(users, media_id, text)
  payload = {
      action: 'send_item',
      _uuid: IgApi::Http.generate_uuid,
      client_context: IgApi::Http.generate_uuid,
      recipient_users: [users].to_json,
      story_media_id: media_id,
      reel_id: media_id.split('_')[1],
      text: text
  }

  signature = Http.generate_signature payload

  response = @api.post(
    Constants::URL + 'direct_v2/threads/broadcast/story_share/',
    "ig_sig_key_version=4&signed_body=#{signature}"
  )
                 .with(ua: @user[:ua], session: @user[:session])
                 .exec

  response.body
end

#configure_text(users, text) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/ig_api/thread.rb', line 20

def configure_text(users, text)
  uris = URI.extract(text, %w[http https])
  broadcast = 'text'

  body = {
    recipient_users: [users].to_json,
    client_context: Http.generate_uuid,
  }

  if uris.empty?
    body[:text] = text
  else
    broadcast = 'link'
    body[:link_text] = text
    body[:link_urls] = uris.to_json
  end

  response = @api.multipart(Constants::URL +
                                "direct_v2/threads/broadcast/#{broadcast}/",
                            body)
                 .with(ua: @user[:ua], session: @user[:session])
                 .exec

  response.body
end

#using(user) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/ig_api/thread.rb', line 10

def using(user)
  @user = {
    id: user.data[:id],
    session: user.session,
    ua: user.useragent
  }

  self
end