class Reddit_Net_Wrapper

Public Class Methods

instance(name=nil) click to toggle source
# File lib/Rubbit/Reddit_Net_Wrapper.rb, line 19
def self.instance(name=nil)
        if(@@instance==nil)
                if(name!=nil)
                        @@instance = new(name)
                else
                        return nil
                end
        end
        return @@instance
end

Private Class Methods

new(user) click to toggle source
# File lib/Rubbit/Reddit_Net_Wrapper.rb, line 41
def initialize(user)
        @used = 0
        @remaining = 30
        @reset = 60
        @first_request = 0
        @reset_timer = 60
        @user_agent = 'Rubbit/1.0 Ruby RAW by The1RGood USED BY: '
        @user_agent+=user

        @cookie = ""
end

Public Instance Methods

make_request(request_type,url,params,redirect=false) click to toggle source
# File lib/Rubbit/Reddit_Net_Wrapper.rb, line 53
def make_request(request_type,url,params,redirect=false)
        uri = URI(url)

        if((Time.now - @first_request).to_i > @reset_timer)
                @used = 0
                @remaining = @reset_timer/2
                @reset = @reset_timer
                @first_request = Time.now
        end

        if(redirect==false)
                if(@remaining==0)
                        while((Time.now-@first_request).to_i < @reset_timer)
                        end
                end
                @used += 1
                @remaining -= 1
                @reset = (Time.now - @first_request).to_i
        end

        #puts url

        case request_type.downcase
        when 'post'
                req = Net::HTTP::Post.new uri.request_uri
                req['X-Ratelimit-Used'] = @used
                req['X-Ratelimit-Remaining'] = @remaining
                req['x-Ratelimit-Reset'] = @reset

                req['Cookie']=@cookie

                req.set_form_data(params)

                res = Net::HTTP.start(uri.hostname, uri.port){|http|
                        http.request(req)
                }

                if(res.code=='302' or res.code=='301')
                        res = make_request(request_type,res['location'],params,true)
                elsif(res['set-cookie']!=nil)
                        @cookie = res['set-cookie']
                end

                return res
        when 'get'
                req = Net::HTTP::Get.new uri.request_uri
                req['X-Ratelimit-Used'] = @used
                req['X-Ratelimit-Remaining'] = @remaining
                req['x-Ratelimit-Reset'] = @reset

                req['Cookie']=@cookie

                res = Net::HTTP.start(uri.hostname, uri.port){|http|
                        http.request(req)
                }

                if(res.code=='302' or res.code=='301')
                        res = make_request(request_type,res['location'],params,true)
                elsif(res['set-cookie']!=nil)
                        @cookie=res['set-cookie']
                end

                return res
        when 'delete'
                puts 'delete placeholder'
        else
                puts 'Bad Request Type'
        end
end
set_reset_period(period=60) click to toggle source
# File lib/Rubbit/Reddit_Net_Wrapper.rb, line 30
def set_reset_period(period=60)
        if(period%2!=0 or period>60 or period<2)
                print('Reset period must be an even integer between 2 and 60')
                return false
        else
                @reset_timer = period
                return true
        end

end