Module: T::RequestableAPI::Mutations

Included in:
T::RequestableAPI
Defined in:
lib/t/requestable_api/mutations.rb

Instance Method Summary collapse

Instance Method Details

#x_block(users) ⇒ Object



4
5
6
# File 'lib/t/requestable_api/mutations.rb', line 4

def x_block(users)
  mutate_users(users) { |target_id, me_id| t_post_v2_json("users/#{me_id}/blocking", target_user_id: target_id) }
end

#x_destroy_status(status_ids) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/t/requestable_api/mutations.rb', line 79

def x_destroy_status(status_ids)
  statuses = normalize_id_list(status_ids).map do |id|
    t_delete_v2("tweets/#{id}")
    {"id" => id.to_i, "id_str" => id.to_s}
  end
  single_or_array(status_ids, statuses)
end

#x_favorite(status_ids) ⇒ Object



52
53
54
55
56
57
58
59
# File 'lib/t/requestable_api/mutations.rb', line 52

def x_favorite(status_ids)
  me_id = current_user_id
  tweets = normalize_id_list(status_ids).map do |id|
    t_post_v2_json("users/#{me_id}/likes", tweet_id: id)
    {"id" => id.to_i, "id_str" => id.to_s}
  end
  single_or_array(status_ids, tweets)
end

#x_follow(users) ⇒ Object



20
21
22
# File 'lib/t/requestable_api/mutations.rb', line 20

def x_follow(users)
  mutate_users(users) { |target_id, me_id| t_post_v2_json("users/#{me_id}/following", target_user_id: target_id) }
end

#x_mute(users) ⇒ Object



12
13
14
# File 'lib/t/requestable_api/mutations.rb', line 12

def x_mute(users)
  mutate_users(users) { |target_id, me_id| t_post_v2_json("users/#{me_id}/muting", target_user_id: target_id) }
end

#x_muted_idsObject



37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/t/requestable_api/mutations.rb', line 37

def x_muted_ids
  ids = []
  params = {max_results: "1000", "user.fields": "id,username"}
  me_id = current_user_id
  MAX_PAGE.times do
    response = t_get_v2("users/#{me_id}/muting", params)
    ids.concat(extract_ids(response))
    token = response.dig("meta", "next_token")
    break if token.nil?

    params = params.merge(pagination_token: token)
  end
  ids
end

#x_report_spam(users) ⇒ Object



28
29
30
31
32
33
34
35
# File 'lib/t/requestable_api/mutations.rb', line 28

def x_report_spam(users)
  Array(users).flatten.map do |entry|
    resolved_user = resolve_user(entry)
    key = numeric_identifier?(entry) ? :user_id : :screen_name
    t_post_v1_form("users/report_spam.json", {key => (key == :user_id ? resolved_user["id"] : resolved_user["screen_name"])})
    resolved_user
  end
end

#x_retweet(status_ids) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/t/requestable_api/mutations.rb', line 70

def x_retweet(status_ids)
  me_id = current_user_id
  tweets = normalize_id_list(status_ids).map do |id|
    t_post_v2_json("users/#{me_id}/retweets", tweet_id: id)
    {"id" => id.to_i, "id_str" => id.to_s}
  end
  single_or_array(status_ids, tweets)
end

#x_unblock(users) ⇒ Object



8
9
10
# File 'lib/t/requestable_api/mutations.rb', line 8

def x_unblock(users)
  mutate_users(users) { |target_id, me_id| t_delete_v2("users/#{me_id}/blocking/#{target_id}") }
end

#x_unfavorite(status_ids) ⇒ Object



61
62
63
64
65
66
67
68
# File 'lib/t/requestable_api/mutations.rb', line 61

def x_unfavorite(status_ids)
  me_id = current_user_id
  tweets = normalize_id_list(status_ids).map do |id|
    t_delete_v2("users/#{me_id}/likes/#{id}")
    {"id" => id.to_i, "id_str" => id.to_s}
  end
  single_or_array(status_ids, tweets)
end

#x_unfollow(users) ⇒ Object



24
25
26
# File 'lib/t/requestable_api/mutations.rb', line 24

def x_unfollow(users)
  mutate_users(users) { |target_id, me_id| t_delete_v2("users/#{me_id}/following/#{target_id}") }
end

#x_unmute(users) ⇒ Object



16
17
18
# File 'lib/t/requestable_api/mutations.rb', line 16

def x_unmute(users)
  mutate_users(users) { |target_id, me_id| t_delete_v2("users/#{me_id}/muting/#{target_id}") }
end