Module: DiscourseApi::API::Topics
- Included in:
- Client
- Defined in:
- lib/discourse_api/api/topics.rb
Instance Method Summary collapse
- #change_topic_status(topic_slug, topic_id, params = {}) ⇒ Object
-
#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.
- #create_topic_action(args) ⇒ Object
- #delete_topic(id) ⇒ Object
-
#edit_topic_timestamp(topic_id, timestamp) ⇒ Object
timestamp is seconds past the epoch.
- #latest_topics(params = {}) ⇒ Object
- #new_topics(params = {}) ⇒ Object
- #recategorize_topic(topic_id, category_id) ⇒ Object
- #rename_topic(topic_id, title) ⇒ Object
- #topic(id, params = {}) ⇒ Object
- #topic_posts(topic_id, post_ids = []) ⇒ Object
- #topics_by(username, params = {}) ⇒ Object
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 (topic_id,) put("/t/#{topic_id}/change-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 |