Rubbit 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/Rubbit.rb +66 -6
- data/lib/Rubbit/Reddit_Net_Wrapper.rb +1 -0
- data/lib/Rubbit/Rubbit_Construction_Layer.rb +1 -1
- data/lib/Rubbit/Rubbit_Objects.rb +183 -13
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                NjljN2VjOTY3MGYwMjg4YzY5YWU3MTExNTc4MDE5NzEyYTI1OGY5OQ==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                ZWQ3MTc4YTY5MjQyYzcxMDk3YjViZjE1NTA3NDU3NDk0NDg0MDkwMQ==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                N2JmNmRkMmJjOGIxZDc0MDY2NmU2OWVhZTE1YjlhZTEwYzA2NTE1ZTY5ZDVm
         | 
| 10 | 
            +
                OGViM2ZkMjdiMzk5ZDk2M2I0MWVlNzc3ZWVhMzNhZWY3ZjI4M2VmMDgwOTVl
         | 
| 11 | 
            +
                NTA1OTE5NmIzY2VlYTliMzI0ZjkxY2M5MWJlNzZkMzhjZjExYjk=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                NmM3ZGIyYWZlZGYwYjBkZWY4YmFmYmNmMWFjYWQ5ZDkzNDI4ZjcxM2VhY2Fl
         | 
| 14 | 
            +
                MWE1MDYwMTBmMjJjYzk5MWJjMzRkYzNjNzcwYzExZDc4YmUwMjgzYTM3Mjg4
         | 
| 15 | 
            +
                ZDk1MTI4MGFhMzBlMzJlOGU5NGIzMDk3NGFkNzZhMTFmNWE0NTk=
         | 
    
        data/lib/Rubbit.rb
    CHANGED
    
    | @@ -2,9 +2,20 @@ require 'Rubbit/Rubbit_Objects' | |
| 2 2 | 
             
            require 'Rubbit/Rubbit_Construction_Layer'
         | 
| 3 3 | 
             
            require 'io/console'
         | 
| 4 4 |  | 
| 5 | 
            +
            # == Rubbit Client
         | 
| 6 | 
            +
            #
         | 
| 7 | 
            +
            # Contains highest level Rubbit functionality
         | 
| 8 | 
            +
            #
         | 
| 5 9 | 
             
            class Rubbit
         | 
| 6 10 | 
             
            	attr_accessor :client_name, :object_builder, :rubbit_poster, :me
         | 
| 7 11 |  | 
| 12 | 
            +
            	# ==== Description
         | 
| 13 | 
            +
            	#
         | 
| 14 | 
            +
            	# Initialize the Rubbit client with an ID that's added to the user agent
         | 
| 15 | 
            +
            	#
         | 
| 16 | 
            +
            	# ==== Attributes
         | 
| 17 | 
            +
            	#
         | 
| 18 | 
            +
            	# * +name+ - Attribute that identifies the bot using Rubbit. Is added to the user-agent.
         | 
| 8 19 | 
             
            	def initialize(name)
         | 
| 9 20 | 
             
            		@client_name = name
         | 
| 10 21 | 
             
            		@object_builder = Rubbit_Object_Builder.instance(name)
         | 
| @@ -12,18 +23,49 @@ class Rubbit | |
| 12 23 | 
             
            		@me = nil
         | 
| 13 24 | 
             
            	end
         | 
| 14 25 |  | 
| 26 | 
            +
            	# ==== Description
         | 
| 27 | 
            +
            	#
         | 
| 28 | 
            +
            	# Gets a Subreddit object, created by subreddit name
         | 
| 29 | 
            +
            	#
         | 
| 30 | 
            +
            	# ==== Attributes
         | 
| 31 | 
            +
            	#
         | 
| 32 | 
            +
            	# * +display_name+ - Display name of the subreddit a user wishes to create an object representation for
         | 
| 15 33 | 
             
            	def get_subreddit(display_name)
         | 
| 16 34 | 
             
            		return @object_builder.build_subreddit(display_name)
         | 
| 17 35 | 
             
            	end
         | 
| 18 36 |  | 
| 37 | 
            +
            	# ==== Description
         | 
| 38 | 
            +
            	#
         | 
| 39 | 
            +
            	# Gets a Redditor object, created by username
         | 
| 40 | 
            +
            	#
         | 
| 41 | 
            +
            	# ==== Attributes
         | 
| 42 | 
            +
            	#
         | 
| 43 | 
            +
            	# * +user+ - That Redditor's username
         | 
| 19 44 | 
             
            	def get_redditor(user)
         | 
| 20 45 | 
             
            		return @object_builder.build_user(user)
         | 
| 21 46 | 
             
            	end
         | 
| 22 47 |  | 
| 48 | 
            +
            	# ==== Description
         | 
| 49 | 
            +
            	#
         | 
| 50 | 
            +
            	# Gets a Subreddit object, created by subreddit name
         | 
| 51 | 
            +
            	#
         | 
| 52 | 
            +
            	# ==== Attributes
         | 
| 53 | 
            +
            	#
         | 
| 54 | 
            +
            	# * +display_name+ - Display name of the subreddit a user wishes to create an object representation for
         | 
| 23 55 | 
             
            	def set_request_period(period)
         | 
| 24 56 | 
             
            		@object_builder.set_request_period(period)
         | 
| 25 57 | 
             
            	end
         | 
| 26 58 |  | 
| 59 | 
            +
            	# ==== Description
         | 
| 60 | 
            +
            	#
         | 
| 61 | 
            +
            	# Login to Reddit and create a session.
         | 
| 62 | 
            +
            	# User and passwd are *not* required. This function will prompt the user for missing information at runtime.
         | 
| 63 | 
            +
            	#
         | 
| 64 | 
            +
            	# ==== Attributes
         | 
| 65 | 
            +
            	#
         | 
| 66 | 
            +
            	# * +user+ - Username that you wish to log in with
         | 
| 67 | 
            +
            	# * +passwd+ - Password required to log in with that user
         | 
| 68 | 
            +
            	#
         | 
| 27 69 | 
             
            	def login(user=nil,passwd=nil)
         | 
| 28 70 | 
             
            		if(user==nil)
         | 
| 29 71 | 
             
            			print('Enter username: ')
         | 
| @@ -38,17 +80,35 @@ class Rubbit | |
| 38 80 | 
             
            		return @me
         | 
| 39 81 | 
             
            	end
         | 
| 40 82 |  | 
| 41 | 
            -
            	 | 
| 83 | 
            +
            	# ==== Description
         | 
| 84 | 
            +
            	#
         | 
| 85 | 
            +
            	# Clears the current session.
         | 
| 86 | 
            +
            	#
         | 
| 87 | 
            +
            	# ==== Attributes
         | 
| 88 | 
            +
            	#
         | 
| 89 | 
            +
            	# * +curpass+ - Password required to log in with that user
         | 
| 90 | 
            +
            	#
         | 
| 91 | 
            +
            	def clear_session(curpass=nil)
         | 
| 42 92 | 
             
            		if(@me==nil)
         | 
| 43 93 | 
             
            			print('Not logged in. No session to clear')
         | 
| 44 94 | 
             
            		elsif(curpass==nil)
         | 
| 45 95 | 
             
            			print('Enter password for '+user.to_s+': ')
         | 
| 46 96 | 
             
            			passwd = STDIN.noecho(&:gets).chomp
         | 
| 47 97 | 
             
            		end
         | 
| 48 | 
            -
            		return @rubbit_poster.clear_sessions(curpass | 
| 49 | 
            -
            	end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
            	 | 
| 98 | 
            +
            		return @rubbit_poster.clear_sessions(curpass)
         | 
| 99 | 
            +
            	end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
            	# ==== Description
         | 
| 102 | 
            +
            	#
         | 
| 103 | 
            +
            	# Deletes desired user. Requires auth info for that user.
         | 
| 104 | 
            +
            	#
         | 
| 105 | 
            +
            	# ==== Attributes
         | 
| 106 | 
            +
            	#
         | 
| 107 | 
            +
            	# * +user+ - Username of account you wish to delete.
         | 
| 108 | 
            +
            	# * +passwd+ - Password required to log in with that user
         | 
| 109 | 
            +
            	# * +message+ - Reason for deleting account.
         | 
| 110 | 
            +
            	#
         | 
| 111 | 
            +
            	def delete_user(user=nil,passwd=nil,message="")
         | 
| 52 112 | 
             
            		confirm = nil
         | 
| 53 113 | 
             
            		if(user==nil)
         | 
| 54 114 | 
             
            			print('Enter username: ')
         | 
| @@ -71,7 +131,7 @@ class Rubbit | |
| 71 131 | 
             
            			end
         | 
| 72 132 | 
             
            		end
         | 
| 73 133 |  | 
| 74 | 
            -
            		return @rubbit_poster.delete_user(user,passwd,confirm,message | 
| 134 | 
            +
            		return @rubbit_poster.delete_user(user,passwd,confirm,message)
         | 
| 75 135 | 
             
            	end
         | 
| 76 136 |  | 
| 77 137 | 
             
            	def get_me()
         | 
| @@ -1,8 +1,10 @@ | |
| 1 1 | 
             
            require 'Rubbit/Reddit_Net_Wrapper'
         | 
| 2 2 | 
             
            require 'Rubbit/Rubbit_Exceptions'
         | 
| 3 3 |  | 
| 4 | 
            -
            # ==  | 
| 4 | 
            +
            # == Rubbit Object
         | 
| 5 | 
            +
            #
         | 
| 5 6 | 
             
            # Object Representing a Subreddit.
         | 
| 7 | 
            +
            #
         | 
| 6 8 | 
             
            class Subreddit
         | 
| 7 9 | 
             
            	def initialize(json)
         | 
| 8 10 | 
             
            		if(json['kind']=='t5')
         | 
| @@ -170,8 +172,8 @@ class Subreddit | |
| 170 172 | 
             
            	#
         | 
| 171 173 | 
             
            	# * +limit+ - Maximum entries that the returned ContentGenerator will hold. For no limit, use *nil*
         | 
| 172 174 | 
             
            	#
         | 
| 173 | 
            -
            	def get_moderators | 
| 174 | 
            -
            		return ContentGenerator.new('http://www.reddit.com/r/'+@display_name.to_s+'/about/moderators.json', | 
| 175 | 
            +
            	def get_moderators
         | 
| 176 | 
            +
            		return ContentGenerator.new('http://www.reddit.com/r/'+@display_name.to_s+'/about/moderators.json',nil)
         | 
| 175 177 | 
             
            	end
         | 
| 176 178 |  | 
| 177 179 |  | 
| @@ -250,6 +252,12 @@ class Subreddit | |
| 250 252 | 
             
            	end
         | 
| 251 253 | 
             
            end
         | 
| 252 254 |  | 
| 255 | 
            +
            # == Rubbit Object
         | 
| 256 | 
            +
            #
         | 
| 257 | 
            +
            # Object Representing a Redditor.
         | 
| 258 | 
            +
            # If the requested Redditor is logged in, this object also contains a modhash.
         | 
| 259 | 
            +
            # If obtained from a subreddit list, this object will need to be rebuilt using the rebuild function
         | 
| 260 | 
            +
            #
         | 
| 253 261 | 
             
            class Redditor
         | 
| 254 262 | 
             
            	def initialize(json)
         | 
| 255 263 | 
             
            		if(json['kind']=='t2')
         | 
| @@ -267,18 +275,49 @@ class Redditor | |
| 267 275 | 
             
            		end
         | 
| 268 276 | 
             
            	end
         | 
| 269 277 |  | 
| 278 | 
            +
            	# ==== Description
         | 
| 279 | 
            +
            	#
         | 
| 280 | 
            +
            	# Function for getting user overview content from a profile, including both comments and posts
         | 
| 281 | 
            +
            	#
         | 
| 282 | 
            +
            	# ==== Attributes
         | 
| 283 | 
            +
            	#
         | 
| 284 | 
            +
            	# * +limit+ - Maximum entries that the ContentGenerator can contain
         | 
| 285 | 
            +
            	# * +sort+ - Sort order by which the content is returned
         | 
| 286 | 
            +
            	#
         | 
| 270 287 | 
             
            	def get_overview(limit=100,sort='new')
         | 
| 271 288 | 
             
            		return ContentGenerator.new('http://www.reddit.com/user/'+@name.to_s+'/.json?sort='+sort,limit)
         | 
| 272 289 | 
             
            	end
         | 
| 273 290 |  | 
| 291 | 
            +
            	# ==== Description
         | 
| 292 | 
            +
            	#
         | 
| 293 | 
            +
            	# Function for getting user comment from a profile
         | 
| 294 | 
            +
            	#
         | 
| 295 | 
            +
            	# ==== Attributes
         | 
| 296 | 
            +
            	#
         | 
| 297 | 
            +
            	# * +limit+ - Maximum entries that the ContentGenerator can contain
         | 
| 298 | 
            +
            	# * +sort+ - Sort order by which the content is returned
         | 
| 299 | 
            +
            	#
         | 
| 274 300 | 
             
            	def get_comments(limit=100,sort='new')
         | 
| 275 301 | 
             
            		return ContentGenerator.new('http://www.reddit.com/user/'+@name.to_s+'/comments.json?sort='+sort,limit)
         | 
| 276 302 | 
             
            	end
         | 
| 277 303 |  | 
| 304 | 
            +
            	# ==== Description
         | 
| 305 | 
            +
            	#
         | 
| 306 | 
            +
            	# Function for getting user posts from a profile
         | 
| 307 | 
            +
            	#
         | 
| 308 | 
            +
            	# ==== Attributes
         | 
| 309 | 
            +
            	#
         | 
| 310 | 
            +
            	# * +limit+ - Maximum entries that the ContentGenerator can contain
         | 
| 311 | 
            +
            	# * +sort+ - Sort order by which the content is returned
         | 
| 312 | 
            +
            	#
         | 
| 278 313 | 
             
            	def get_submitted(limit=100,sort='new')
         | 
| 279 314 | 
             
            		return ContentGenerator.new('http://www.reddit.com/user/'+@name.to_s+'/submitted.json?sort='+sort,limit)
         | 
| 280 315 | 
             
            	end
         | 
| 281 316 |  | 
| 317 | 
            +
            	# ==== Description
         | 
| 318 | 
            +
            	#
         | 
| 319 | 
            +
            	# Function for rebuilding user object using data from their profile page
         | 
| 320 | 
            +
            	#
         | 
| 282 321 | 
             
            	def rebuild
         | 
| 283 322 | 
             
            		rebuilt_user = Rubbit_Object_Builder.instance.build_user(@name)
         | 
| 284 323 | 
             
            		rebuilt_user.instance_variables.each do |attr_name|
         | 
| @@ -288,6 +327,10 @@ class Redditor | |
| 288 327 | 
             
            	end
         | 
| 289 328 | 
             
            end
         | 
| 290 329 |  | 
| 330 | 
            +
            # == Rubbit Object
         | 
| 331 | 
            +
            #
         | 
| 332 | 
            +
            # Enumerable object that allows a user to iterate over data sets
         | 
| 333 | 
            +
            #
         | 
| 291 334 | 
             
            class ContentGenerator
         | 
| 292 335 | 
             
            	include Enumerable
         | 
| 293 336 | 
             
            	@limit = nil
         | 
| @@ -297,6 +340,18 @@ class ContentGenerator | |
| 297 340 | 
             
            	@after = nil
         | 
| 298 341 | 
             
            	@modhash = nil
         | 
| 299 342 | 
             
            	@index
         | 
| 343 | 
            +
            	@limit_param
         | 
| 344 | 
            +
             | 
| 345 | 
            +
            	# ==== Description
         | 
| 346 | 
            +
            	#
         | 
| 347 | 
            +
            	# Initializes a ContentGenerator Object
         | 
| 348 | 
            +
            	#
         | 
| 349 | 
            +
            	# ==== Attributes
         | 
| 350 | 
            +
            	#
         | 
| 351 | 
            +
            	# * +source+ - *Required.* Link to the .json page for the content
         | 
| 352 | 
            +
            	# * +limit+ - Maximum number of entries the ContentGenerator will load. *nil* for no limit.
         | 
| 353 | 
            +
            	# * +after+ - ID of entry to load content after.
         | 
| 354 | 
            +
            	#
         | 
| 300 355 | 
             
            	def initialize(source,limit=100,after='')
         | 
| 301 356 | 
             
            		@source = source
         | 
| 302 357 | 
             
            		@limit = limit
         | 
| @@ -304,19 +359,28 @@ class ContentGenerator | |
| 304 359 | 
             
            		@data = []
         | 
| 305 360 | 
             
            		@after = after
         | 
| 306 361 | 
             
            		@index = 0
         | 
| 362 | 
            +
            		if(@source.include?('?'))
         | 
| 363 | 
            +
            			@limit_param = '&limit='
         | 
| 364 | 
            +
            		else
         | 
| 365 | 
            +
            			@limit_param = '?limit='
         | 
| 366 | 
            +
            		end
         | 
| 307 367 | 
             
            	end
         | 
| 308 368 |  | 
| 369 | 
            +
            	# ==== Description
         | 
| 370 | 
            +
            	#
         | 
| 371 | 
            +
            	# Iterates over the content from a specific source until there is no content left or until a limit is reached
         | 
| 372 | 
            +
            	#
         | 
| 309 373 | 
             
            	def each
         | 
| 310 374 | 
             
            		if(@data.length==0)
         | 
| 311 375 | 
             
            			if(@limit!=nil)
         | 
| 312 376 | 
             
            				if(@limit-@count>0)
         | 
| 313 | 
            -
            					listing = Rubbit_Object_Builder.instance.build_listing(@source+ | 
| 377 | 
            +
            					listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+[@limit-@count,100].min.to_s+"&after="+@after+"&count="+@count.to_s)
         | 
| 314 378 | 
             
            					@after = listing.after
         | 
| 315 379 | 
             
            					@data += listing.children
         | 
| 316 380 | 
             
            					@count += listing.children.length
         | 
| 317 381 | 
             
            				end
         | 
| 318 382 | 
             
            			else
         | 
| 319 | 
            -
            				listing = Rubbit_Object_Builder.instance.build_listing(@source+ | 
| 383 | 
            +
            				listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+100.to_s+"&after="+@after+"&count="+@count.to_s)
         | 
| 320 384 | 
             
            				@after = listing.after
         | 
| 321 385 | 
             
            				@data += listing.children
         | 
| 322 386 | 
             
            				@count+= listing.children.length
         | 
| @@ -332,14 +396,14 @@ class ContentGenerator | |
| 332 396 | 
             
            				end
         | 
| 333 397 | 
             
            				if(@limit!=nil)
         | 
| 334 398 | 
             
            					if(@limit-@count>0)
         | 
| 335 | 
            -
            						listing = Rubbit_Object_Builder.instance.build_listing(@source+ | 
| 399 | 
            +
            						listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+[@limit-@count,100].min.to_s+"&after="+@after+"&count="+@count.to_s)
         | 
| 336 400 | 
             
            						@after = listing.after
         | 
| 337 401 | 
             
            						@data += listing.children
         | 
| 338 402 | 
             
            						@count += listing.children.length
         | 
| 339 403 | 
             
            					end
         | 
| 340 404 | 
             
            				else
         | 
| 341 | 
            -
            					listing = Rubbit_Object_Builder.instance.build_listing(@source+ | 
| 342 | 
            -
            					puts(@source+ | 
| 405 | 
            +
            					listing = Rubbit_Object_Builder.instance.build_listing(@source+@limit_param+100.to_s+"&after="+@after+"&count="+@count.to_s)
         | 
| 406 | 
            +
            					puts(@source+@limit_param+100.to_s+"&after="+@after+"&count="+@count.to_s)
         | 
| 343 407 | 
             
            					@after = listing.after
         | 
| 344 408 | 
             
            					@data += listing.children
         | 
| 345 409 | 
             
            					@count += listing.children.length
         | 
| @@ -348,10 +412,22 @@ class ContentGenerator | |
| 348 412 | 
             
            		end
         | 
| 349 413 | 
             
            	end
         | 
| 350 414 |  | 
| 351 | 
            -
            	 | 
| 352 | 
            -
             | 
| 415 | 
            +
            	# ==== Description
         | 
| 416 | 
            +
            	#
         | 
| 417 | 
            +
            	# Returns an object in the ContentGenerator at a particular index. Only works after it has been iterated through and loaded.
         | 
| 418 | 
            +
            	#
         | 
| 419 | 
            +
            	# ==== Attributes
         | 
| 420 | 
            +
            	#
         | 
| 421 | 
            +
            	# * +index+ - The index of the object in the ContentGenerator that will be returned.
         | 
| 422 | 
            +
            	#
         | 
| 423 | 
            +
            	def [](index)
         | 
| 424 | 
            +
            		return @data[index]
         | 
| 353 425 | 
             
            	end
         | 
| 354 426 |  | 
| 427 | 
            +
            	# ==== Description
         | 
| 428 | 
            +
            	#
         | 
| 429 | 
            +
            	# Returns the next object in the ContentGenerator. If none is loaded, it will try to load more, until a limit is reached.
         | 
| 430 | 
            +
            	#
         | 
| 355 431 | 
             
            	def next
         | 
| 356 432 | 
             
            		if(@index>=@data.length)
         | 
| 357 433 | 
             
            			if(@limit!=nil)
         | 
| @@ -376,6 +452,10 @@ class ContentGenerator | |
| 376 452 | 
             
            		return to_return
         | 
| 377 453 | 
             
            	end
         | 
| 378 454 |  | 
| 455 | 
            +
            	# ==== Description
         | 
| 456 | 
            +
            	#
         | 
| 457 | 
            +
            	# Returns the previous object in the ContentGenerator. If the index is at 0, nil is returned
         | 
| 458 | 
            +
            	#
         | 
| 379 459 | 
             
            	def prev
         | 
| 380 460 | 
             
            		if(@index>1)
         | 
| 381 461 | 
             
            			@index-=1
         | 
| @@ -385,15 +465,31 @@ class ContentGenerator | |
| 385 465 | 
             
            		end
         | 
| 386 466 | 
             
            	end
         | 
| 387 467 |  | 
| 388 | 
            -
            	 | 
| 389 | 
            -
             | 
| 468 | 
            +
            	# ==== Description
         | 
| 469 | 
            +
            	#
         | 
| 470 | 
            +
            	# Resets the index of the current entry in ContentGenerator
         | 
| 471 | 
            +
            	#
         | 
| 472 | 
            +
            	# ==== Attributes
         | 
| 473 | 
            +
            	#
         | 
| 474 | 
            +
            	# * +index+ - The index that the ContentGenerator will be set to. Defaults to 0.
         | 
| 475 | 
            +
            	#
         | 
| 476 | 
            +
            	def reset_generator(index=0)
         | 
| 477 | 
            +
            		@index=index
         | 
| 390 478 | 
             
            	end
         | 
| 391 479 |  | 
| 480 | 
            +
            	# ==== Description
         | 
| 481 | 
            +
            	#
         | 
| 482 | 
            +
            	# Returns the length of data already loaded into the ContentGenerator.
         | 
| 483 | 
            +
            	#
         | 
| 392 484 | 
             
            	def length
         | 
| 393 485 | 
             
            		return @data.length
         | 
| 394 486 | 
             
            	end
         | 
| 395 487 | 
             
            end
         | 
| 396 488 |  | 
| 489 | 
            +
            # == Rubbit Object
         | 
| 490 | 
            +
            #
         | 
| 491 | 
            +
            # Object that represents an individual comment
         | 
| 492 | 
            +
            #
         | 
| 397 493 | 
             
            class Comment
         | 
| 398 494 | 
             
            	def initialize(json)
         | 
| 399 495 | 
             
            		if(json['kind']=='t1')
         | 
| @@ -417,23 +513,51 @@ class Comment | |
| 417 513 | 
             
            		end
         | 
| 418 514 | 
             
            	end
         | 
| 419 515 |  | 
| 516 | 
            +
            	# ==== Description
         | 
| 517 | 
            +
            	#
         | 
| 518 | 
            +
            	# Submits a reply to a comment.
         | 
| 519 | 
            +
            	#
         | 
| 520 | 
            +
            	# ==== Attributes
         | 
| 521 | 
            +
            	#
         | 
| 522 | 
            +
            	# * +text+ - The body of the response
         | 
| 523 | 
            +
            	#
         | 
| 420 524 | 
             
            	def reply(text)
         | 
| 421 525 | 
             
            		Rubbit_Poster.instance.comment(@name,text)
         | 
| 422 526 | 
             
            	end
         | 
| 423 527 |  | 
| 528 | 
            +
            	# ==== Description
         | 
| 529 | 
            +
            	#
         | 
| 530 | 
            +
            	# Deletes this comment. Only works if the comment was made by you.
         | 
| 531 | 
            +
            	#
         | 
| 424 532 | 
             
            	def delete
         | 
| 425 533 | 
             
            		Rubbit_Poster.instance.delete(@name)
         | 
| 426 534 | 
             
            	end
         | 
| 427 535 |  | 
| 536 | 
            +
            	# ==== Description
         | 
| 537 | 
            +
            	#
         | 
| 538 | 
            +
            	# Modifies the text of this comment. Only works if the comment was made by you.
         | 
| 539 | 
            +
            	#
         | 
| 540 | 
            +
            	# ==== Attributes
         | 
| 541 | 
            +
            	#
         | 
| 542 | 
            +
            	# * +text+ - The new comment body.
         | 
| 543 | 
            +
            	#
         | 
| 428 544 | 
             
            	def edit(text)
         | 
| 429 545 | 
             
            		Rubbit_Poster.instance.edit(@name,text)
         | 
| 430 546 | 
             
            	end
         | 
| 431 547 |  | 
| 548 | 
            +
            	# ==== Description
         | 
| 549 | 
            +
            	#
         | 
| 550 | 
            +
            	# No longer shows the comment to you on Reddit.
         | 
| 551 | 
            +
            	#
         | 
| 432 552 | 
             
            	def hide
         | 
| 433 553 | 
             
            		Rubbit_Poster.instance.hide(@name)
         | 
| 434 554 | 
             
            	end
         | 
| 435 555 | 
             
            end
         | 
| 436 556 |  | 
| 557 | 
            +
            # == Rubbit Object
         | 
| 558 | 
            +
            #
         | 
| 559 | 
            +
            # Object representing a Reddit Post
         | 
| 560 | 
            +
            #
         | 
| 437 561 | 
             
            class Post
         | 
| 438 562 | 
             
            	@comments = nil
         | 
| 439 563 | 
             
            	def initialize(json)
         | 
| @@ -446,10 +570,23 @@ class Post | |
| 446 570 | 
             
            			end
         | 
| 447 571 | 
             
            		end
         | 
| 448 572 | 
             
            	end
         | 
| 573 | 
            +
             | 
| 574 | 
            +
            	# ==== Description
         | 
| 575 | 
            +
            	#
         | 
| 576 | 
            +
            	# Makes a reply to a post
         | 
| 577 | 
            +
            	#
         | 
| 578 | 
            +
            	# ==== Attributes
         | 
| 579 | 
            +
            	#
         | 
| 580 | 
            +
            	# * +text+ - The new comment body.
         | 
| 581 | 
            +
            	#
         | 
| 449 582 | 
             
            	def reply(text)
         | 
| 450 583 | 
             
            		return Rubbit_Poster.instance.comment(@name,text)
         | 
| 451 584 | 
             
            	end
         | 
| 452 585 |  | 
| 586 | 
            +
            	# ==== Description
         | 
| 587 | 
            +
            	#
         | 
| 588 | 
            +
            	# Retrieves the comments of a post in a list tree.
         | 
| 589 | 
            +
            	#
         | 
| 453 590 | 
             
            	def replies
         | 
| 454 591 | 
             
            		if(@comments==nil)
         | 
| 455 592 | 
             
            			@comments = Rubbit_Object_Builder.instance.get_comments('http://www.reddit.com'+@permalink).children
         | 
| @@ -457,23 +594,47 @@ class Post | |
| 457 594 | 
             
            		return @comments
         | 
| 458 595 | 
             
            	end
         | 
| 459 596 |  | 
| 597 | 
            +
            	# ==== Description
         | 
| 598 | 
            +
            	#
         | 
| 599 | 
            +
            	# Deletes this post. Only works if you made the post.
         | 
| 600 | 
            +
            	#
         | 
| 460 601 | 
             
            	def delete
         | 
| 461 602 | 
             
            		Rubbit_Poster.instance.delete(@name)
         | 
| 462 603 | 
             
            	end
         | 
| 463 604 |  | 
| 605 | 
            +
            	# ==== Description
         | 
| 606 | 
            +
            	#
         | 
| 607 | 
            +
            	# Modifies the text of this post. Only works if the post was made by you and is a self post.
         | 
| 608 | 
            +
            	#
         | 
| 609 | 
            +
            	# ==== Attributes
         | 
| 610 | 
            +
            	#
         | 
| 611 | 
            +
            	# * +text+ - The new post body.
         | 
| 612 | 
            +
            	#
         | 
| 464 613 | 
             
            	def edit(text)
         | 
| 465 614 | 
             
            		Rubbit_Poster.instance.edit(@name,text)
         | 
| 466 615 | 
             
            	end
         | 
| 467 616 |  | 
| 617 | 
            +
            	# ==== Description
         | 
| 618 | 
            +
            	#
         | 
| 619 | 
            +
            	# Hides the post and no longer displays it when retrieving Reddit data
         | 
| 620 | 
            +
            	#
         | 
| 468 621 | 
             
            	def hide
         | 
| 469 622 | 
             
            		Rubbit_Poster.instance.hide(@name)
         | 
| 470 623 | 
             
            	end
         | 
| 471 624 |  | 
| 625 | 
            +
            	# ==== Description
         | 
| 626 | 
            +
            	#
         | 
| 627 | 
            +
            	# Marks a post as NSFW. Only works if you made the post or are a moderator of the subreddit it is in.
         | 
| 628 | 
            +
            	#
         | 
| 472 629 | 
             
            	def mark_nsfw
         | 
| 473 630 | 
             
            		Rubbit_Poster.instance.mark_nsfw(@name)
         | 
| 474 631 | 
             
            	end
         | 
| 475 632 | 
             
            end
         | 
| 476 633 |  | 
| 634 | 
            +
            # == Rubbit Object
         | 
| 635 | 
            +
            #
         | 
| 636 | 
            +
            # Object that represents a Personal Message
         | 
| 637 | 
            +
            #
         | 
| 477 638 | 
             
            class Message
         | 
| 478 639 | 
             
            	def initialize(json)
         | 
| 479 640 | 
             
            		if(json['kind']=='t4')
         | 
| @@ -485,6 +646,14 @@ class Message | |
| 485 646 | 
             
            		end
         | 
| 486 647 | 
             
            	end
         | 
| 487 648 |  | 
| 649 | 
            +
            	# ==== Description
         | 
| 650 | 
            +
            	#
         | 
| 651 | 
            +
            	# Responds to an inbox message.
         | 
| 652 | 
            +
            	#
         | 
| 653 | 
            +
            	# ==== Attributes
         | 
| 654 | 
            +
            	#
         | 
| 655 | 
            +
            	# * +text+ - The new message body.
         | 
| 656 | 
            +
            	#
         | 
| 488 657 | 
             
            	def reply(text)
         | 
| 489 658 | 
             
            		Rubbit_Poster.instance.comment(text,@name)
         | 
| 490 659 | 
             
            	end
         | 
| @@ -493,7 +662,8 @@ end | |
| 493 662 | 
             
            class Listing
         | 
| 494 663 | 
             
            	@after = nil
         | 
| 495 664 | 
             
            	def initialize(json)
         | 
| 496 | 
            -
            		if(json['kind']=='Listing')
         | 
| 665 | 
            +
            		if(json['kind']=='Listing' or json['kind']=='UserList')
         | 
| 666 | 
            +
            			@after = nil
         | 
| 497 667 | 
             
            			data = json['data']
         | 
| 498 668 | 
             
            			data.each_key do |k|
         | 
| 499 669 | 
             
            				self.class.module_eval {attr_accessor(k)}
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: Rubbit
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - /u/The1RGood
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014- | 
| 11 | 
            +
            date: 2014-09-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: A simple Ruby-based Reddit API Wrapper
         | 
| 14 14 | 
             
            email: randy@kindofabigdeal.org
         |