Sha256: 57300032f3721fcd9a49fcf10a94bf317a15a159ad7a88f0d951569a567e7a93

Contents?: true

Size: 1.78 KB

Versions: 3

Compression:

Stored size: 1.78 KB

Contents

module DiscourseApi
  module API
    module Topics
      # :category OPTIONAL name of category, not ID
      # :skip_validations OPTIONAL boolean
      # :auto_track OPTIONAL boolean
      def create_topic(args={})
        args = API.params(args)
                  .required(:title, :raw)
                  .optional(:skip_validations, :category, :auto_track)
        post("/posts", args.to_h)
      end

      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

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

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

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

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

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

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

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

      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
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
discourse_api-0.10.1 lib/discourse_api/api/topics.rb
discourse_api-0.10.0 lib/discourse_api/api/topics.rb
discourse_api-0.9.1 lib/discourse_api/api/topics.rb