Class: Reddit::Submission

Inherits:
Base
  • Object
show all
Includes:
JsonListing
Defined in:
lib/ruby_reddit_api/submission.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from JsonListing

included

Constructor Details

#initialize(data) ⇒ Submission

Returns a new instance of Submission.



6
7
8
9
# File 'lib/ruby_reddit_api/submission.rb', line 6

def initialize(data)
  parse(data)
  @debug    = StringIO.new
end

Instance Attribute Details

#clickedObject (readonly)

Returns the value of attribute clicked.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def clicked
  @clicked
end

#createdObject (readonly)

Returns the value of attribute created.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def created
  @created
end

#created_utcObject (readonly)

Returns the value of attribute created_utc.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def created_utc
  @created_utc
end

#domainObject (readonly)

Returns the value of attribute domain.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def domain
  @domain
end

#downsObject (readonly)

Returns the value of attribute downs.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def downs
  @downs
end

#hiddenObject (readonly)

Returns the value of attribute hidden.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def hidden
  @hidden
end

#is_selfObject (readonly)

Returns the value of attribute is_self.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def is_self
  @is_self
end

#kindObject (readonly)

Returns the value of attribute kind.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def kind
  @kind
end

#last_comment_idObject (readonly)

Returns the value of attribute last_comment_id.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def last_comment_id
  @last_comment_id
end

#likesObject (readonly)

Returns the value of attribute likes.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def likes
  @likes
end

#mediaObject (readonly)

Returns the value of attribute media.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def media
  @media
end

#media_embedObject (readonly)

Returns the value of attribute media_embed.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def media_embed
  @media_embed
end

#nameObject (readonly)

Returns the value of attribute name.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def name
  @name
end

#num_commentsObject (readonly)

Returns the value of attribute num_comments.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def num_comments
  @num_comments
end

#over_18Object (readonly)

Returns the value of attribute over_18.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def over_18
  @over_18
end

Returns the value of attribute permalink.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def permalink
  @permalink
end

#savedObject (readonly)

Returns the value of attribute saved.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def saved
  @saved
end

#scoreObject (readonly)

Returns the value of attribute score.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def score
  @score
end

#selftextObject (readonly)

Returns the value of attribute selftext.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def selftext
  @selftext
end

#selftext_htmlObject (readonly)

Returns the value of attribute selftext_html.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def selftext_html
  @selftext_html
end

#subredditObject (readonly)

Returns the value of attribute subreddit.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def subreddit
  @subreddit
end

#subreddit_idObject (readonly)

Returns the value of attribute subreddit_id.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def subreddit_id
  @subreddit_id
end

#thumbnailObject (readonly)

Returns the value of attribute thumbnail.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def thumbnail
  @thumbnail
end

#titleObject (readonly)

Returns the value of attribute title.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def title
  @title
end

#upsObject (readonly)

Returns the value of attribute ups.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def ups
  @ups
end

#urlObject (readonly)

Returns the value of attribute url.



4
5
6
# File 'lib/ruby_reddit_api/submission.rb', line 4

def url
  @url
end

Instance Method Details

#add_comment(text) ⇒ Object



23
24
25
26
# File 'lib/ruby_reddit_api/submission.rb', line 23

def add_comment(text)
  resp = self.class.post("/api/comment", {:body => {:thing_id => id, :text => text, :uh => modhash, :r => subreddit }, :headers => base_headers, :debug_output => @debug })
  resp.code == 200
end

#admin_distinguishObject



60
61
62
# File 'lib/ruby_reddit_api/submission.rb', line 60

def admin_distinguish
  add_distinction "admin"
end

#authorObject



19
20
21
# File 'lib/ruby_reddit_api/submission.rb', line 19

def author
  @author_data ||= read("/user/#{@author}/about.json", :handler => "User")
end

#comments(more = false) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/ruby_reddit_api/submission.rb', line 68

def comments(more=false)
  #TODO Get morechildren to work correctly
  if more && last_comment_id
    opts = {:handler => "Comment",
            :verb => "post",
            :body =>
              {:link_id => last_comment_id, :depth => 0, :r => subreddit, :uh => modhash, :renderstyle => "json", :pv_hex => "", :id => id}
            }
    return read("/api/morechildren", opts )

  else
    _comments = read( permalink + ".json", {:handler => "Comment", :query => {:limit => 50}} )
    @last_comment_id = _comments.last.id if _comments && _comments.any?
    return _comments
  end
end

#downvoteObject



32
33
34
# File 'lib/ruby_reddit_api/submission.rb', line 32

def downvote
  Reddit::Vote.new(self).down
end

#hideObject



44
45
46
# File 'lib/ruby_reddit_api/submission.rb', line 44

def hide
  toggle :hide
end

#idObject



15
16
17
# File 'lib/ruby_reddit_api/submission.rb', line 15

def id
  "#{kind}_#{@id}"
end

#indistinguishObject



64
65
66
# File 'lib/ruby_reddit_api/submission.rb', line 64

def indistinguish
  add_distinction "no"
end

#inspectObject



11
12
13
# File 'lib/ruby_reddit_api/submission.rb', line 11

def inspect
  "<Reddit::Submission id='#{id}' author='#{@author}' title='#{title}'>"
end

#moderator_distinguishObject



56
57
58
# File 'lib/ruby_reddit_api/submission.rb', line 56

def moderator_distinguish
  add_distinction "yes"
end

#reportObject



52
53
54
# File 'lib/ruby_reddit_api/submission.rb', line 52

def report
  toggle :report
end

#saveObject



36
37
38
# File 'lib/ruby_reddit_api/submission.rb', line 36

def save
  toggle :save
end

#unhideObject



48
49
50
# File 'lib/ruby_reddit_api/submission.rb', line 48

def unhide
  toggle :unhide
end

#unsaveObject



40
41
42
# File 'lib/ruby_reddit_api/submission.rb', line 40

def unsave
  toggle :unsave
end

#upvoteObject



28
29
30
# File 'lib/ruby_reddit_api/submission.rb', line 28

def upvote
  Reddit::Vote.new(self).up
end