Module: DiscourseApi::API::Topics

Included in:
Client
Defined in:
lib/discourse_api/api/topics.rb

Instance Method Summary collapse

Instance Method Details

#change_topic_status(topic_slug, topic_id, params = {}) ⇒ Object



44
45
46
47
48
49
# File 'lib/discourse_api/api/topics.rb', line 44

def change_topic_status(topic_slug, topic_id, params={})
  params = API.params(params)
               .required(:status, :enabled)
               .optional(:api_username)
  put("/t/#{topic_slug}/#{topic_id}/status", params.to_h)
end

#create_topic(args = {}) ⇒ Object

:category OPTIONAL name of category, not ID :skip_validations OPTIONAL boolean :auto_track OPTIONAL boolean :created_at OPTIONAL seconds since epoch.



8
9
10
11
12
13
# File 'lib/discourse_api/api/topics.rb', line 8

def create_topic(args={})
  args = API.params(args)
            .required(:title, :raw)
            .optional(:skip_validations, :category, :auto_track, :created_at, :api_username)
  post("/posts", args.to_h)
end

#create_topic_action(args) ⇒ Object



15
16
17
18
19
# File 'lib/discourse_api/api/topics.rb', line 15

def create_topic_action(args)
  args = API.params(args)
             .required(:id, :post_action_type_id)
  post("/post_actions", args.to_h.merge(flag_topic: true))
end

#delete_topic(id) ⇒ Object



61
62
63
# File 'lib/discourse_api/api/topics.rb', line 61

def delete_topic(id)
  delete("/t/#{id}.json")
end

#edit_topic_timestamp(topic_id, timestamp) ⇒ Object

timestamp is seconds past the epoch.



22
23
24
# File 'lib/discourse_api/api/topics.rb', line 22

def edit_topic_timestamp(topic_id,timestamp)
  put("/t/#{topic_id}/change-timestamp", { timestamp: timestamp })
end

#latest_topics(params = {}) ⇒ Object



26
27
28
29
# File 'lib/discourse_api/api/topics.rb', line 26

def latest_topics(params={})
  response = get('/latest.json', params)
  response[:body]['topic_list']['topics']
end

#new_topics(params = {}) ⇒ Object



31
32
33
34
# File 'lib/discourse_api/api/topics.rb', line 31

def new_topics(params={})
  response = get("/new.json", params)
  response[:body]['topic_list']['topics']
end

#recategorize_topic(topic_id, category_id) ⇒ Object



40
41
42
# File 'lib/discourse_api/api/topics.rb', line 40

def recategorize_topic(topic_id, category_id)
  put("/t/#{topic_id}.json", { topic_id: topic_id, category_id: category_id })
end

#rename_topic(topic_id, title) ⇒ Object



36
37
38
# File 'lib/discourse_api/api/topics.rb', line 36

def rename_topic(topic_id, title)
  put("/t/#{topic_id}.json", { topic_id: topic_id, title: title })
end

#topic(id, params = {}) ⇒ Object



51
52
53
54
# File 'lib/discourse_api/api/topics.rb', line 51

def topic(id, params={})
  response = get("/t/#{id}.json", params)
  response[:body]
end

#topic_posts(topic_id, post_ids = []) ⇒ Object



65
66
67
68
69
70
71
72
73
74
75
# File 'lib/discourse_api/api/topics.rb', line 65

def topic_posts(topic_id, post_ids=[])
  url = "/t/#{topic_id}/posts.json"
  if post_ids.count > 0
    url << '?'
    post_ids.each do |id|
      url << "post_ids[]=#{id}&"
    end
  end
  response = get(url)
  response[:body]
end

#topics_by(username, params = {}) ⇒ Object



56
57
58
59
# File 'lib/discourse_api/api/topics.rb', line 56

def topics_by(username, params={})
  response = get("/topics/created-by/#{username}.json", params)
  response[:body]['topic_list']['topics']
end