wreddit 1.0.2 → 1.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7baadbacdc155586c41211dcc1d043832e7ef30c
4
- data.tar.gz: 5c4fca23befb9658860583b47c1b4534e71062fd
3
+ metadata.gz: 760fddb85005b35720778c70127079a95d7c4ebe
4
+ data.tar.gz: 4fc6dce87175ecba6c3475c9bc187bcc226e06fe
5
5
  SHA512:
6
- metadata.gz: f6dc0d37f1ab45cc6db10c272eaf8045d0e9669b046a8b4bb8b8f217c9eac646bd8e864df81f21c4c86872ba69d70d933be5b8b626df5ca4678c747adfd70829
7
- data.tar.gz: 22868bab14fa9d22607dd4ae1b88841706f42eaea8874e3a454c28870bc3cd1996996693327f512914a92f0ca31e34ab64037526d879fe3d22c900a544ed1178
6
+ metadata.gz: e9de36c68b463825c2ada5caba6b3db5f496e09b8f123590833a788f836b7f2eba2fd340c2b525c457f7d4e24c23ddbcd518f87ed4d09e614e711998819eebed
7
+ data.tar.gz: 8d1f25e8f669e41dc691154a7e0222626a566a5ff8aa04d669ff79ec5c18dbee004408dffc1aab741d1da955fa66a1d5049bea1d68b068c8939cee46e9cbea0a
@@ -0,0 +1 @@
1
+ REDIS0006�ܳC�Z��V
@@ -2,4 +2,4 @@ require_relative 'wreddit'
2
2
  puts "Hello world"
3
3
 
4
4
  reddit = Wreddit.new
5
- puts reddit.subreddit.titles
5
+ puts reddit.subreddit('learnprogramming').parse('xml')
@@ -1,11 +1,13 @@
1
1
  require 'json'
2
2
  require 'nokogiri'
3
3
  require 'httparty'
4
-
4
+ require 'redis'
5
5
 
6
6
  class Wreddit
7
7
  include HTTParty
8
+
8
9
  def initialize
10
+ @client = Redis.new
9
11
  @uri = "https://www.reddit.com"
10
12
  end
11
13
  # standard requests
@@ -42,8 +44,8 @@ class Wreddit
42
44
  # unique parsing (currently only works in JSON)
43
45
  def links
44
46
  links = []
45
- response = self.json
46
- if response.code == 200
47
+ response = JSON.parse(self.json)
48
+ unless response['data']['children'].nil?
47
49
  response['data']['children'].each do |child|
48
50
  links.push(child['data']['url'])
49
51
  end
@@ -55,8 +57,8 @@ class Wreddit
55
57
 
56
58
  def titles
57
59
  titles = []
58
- response = self.json
59
- if response.code == 200
60
+ response = JSON.parse(self.json)
61
+ unless response['data']['children'].nil?
60
62
  response['data']['children'].each do |child|
61
63
  titles.push(child['data']['title'])
62
64
  end
@@ -68,8 +70,8 @@ class Wreddit
68
70
 
69
71
  def descriptions
70
72
  descriptions = []
71
- response = self.json
72
- if response.code == 200
73
+ response = JSON.parse(self.json)
74
+ unless response['data']['children'].nil?
73
75
  response['data']['children'].each do |child|
74
76
  descriptions.push(child['data']['selftext'])
75
77
  end
@@ -81,15 +83,63 @@ class Wreddit
81
83
 
82
84
  # parse helpers
83
85
  def json
84
- HTTParty.get(URI(@uri + '.json'))
86
+ response = ''
87
+ @uri+='.json'
88
+ res = @client.get(@uri)
89
+ if res
90
+ # if res exists
91
+ return res
92
+ else
93
+ # if res doesn't exist get it from HTTParty
94
+ res = HTTParty.get(URI(@uri))
95
+ if res.code == 200
96
+ # if res is an OK (we are getting data)
97
+ @client.set(@uri, res, ex: 1)
98
+ else
99
+ # return 401, 429, or 500 error codes
100
+ return res
101
+ end
102
+ return res
103
+ end
85
104
  end
86
105
 
87
106
  def xml
88
- HTTParty.get(URI(@uri + '.xml'))
107
+ @uri+='.xml'
108
+ res = @client.get(@uri)
109
+ if res
110
+ # if res exists
111
+ return res
112
+ else
113
+ # if res doesn't exist get it from HTTParty
114
+ res = HTTParty.get(URI(@uri))
115
+ if res.code == 200
116
+ # if res is an OK (we are getting data)
117
+ @client.set(@uri, res)
118
+ else
119
+ # return 401, 429, or 500 error codes
120
+ return res
121
+ end
122
+ return res
123
+ end
89
124
  end
90
125
 
91
126
  def html
92
- HTTParty.get(URI(@uri))
127
+ res = @client.get(@uri)
128
+ if res
129
+ # if res exists
130
+ return res
131
+ else
132
+ # if res doesn't exist get it from HTTParty
133
+ res = HTTParty.get(URI(@uri))
134
+ if res.code == 200
135
+ # if res is an OK (we are getting data)
136
+ @client.set(@uri, res)
137
+ else
138
+ # return 401, 429, or 500 error codes
139
+ return res
140
+ end
141
+ return res
142
+ end
93
143
  end
94
144
 
95
145
  # general parsing
@@ -1,3 +1,3 @@
1
1
  class Wreddit
2
- VERSION = "1.0.2"
2
+ VERSION = "1.1.2"
3
3
  end
@@ -34,5 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency "rake", "~> 10.0"
35
35
  spec.add_development_dependency "rspec", "~> 3.0"
36
36
  spec.add_dependency "nokogiri"
37
+ spec.add_dependency "redis"
37
38
  spec.add_dependency "httparty"
38
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wreddit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Hulse
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
11
+ date: 2017-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: redis
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: httparty
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -98,6 +112,7 @@ files:
98
112
  - Rakefile
99
113
  - bin/console
100
114
  - bin/setup
115
+ - dump.rdb
101
116
  - lib/test.rb
102
117
  - lib/wreddit.rb
103
118
  - lib/wreddit/version.rb