link_oracle 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MWY2ODU0YmEyOWEyOGQwMTM4ZmNiNTE4OGIyNDNhNDYwMjQ3MjdiYQ==
5
- data.tar.gz: !binary |-
6
- NzEwODVkNDg0NmVlZjRlYjQzY2JhY2ViYmJmNzhjZWZjY2RmNDcwMg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MTYyNDAxNjJhMjliOGFiNjQwM2IxM2Y1ZDk4ZmNhMTRjNmRkM2YyOGIzMDFh
10
- ZjZkNjE2ODA1Y2E3MGYwYjQzYzdmZmUwMTViMmEyMTk0OGI4N2QxMjllZWZj
11
- OTdhOTEyNTcyYjJkYjlkYTg3YmQ5YTZkYmZhN2JjMDNjNmJmYTc=
12
- data.tar.gz: !binary |-
13
- M2Y5OGM3ZmRmNTBkYmI2ZWQ2NjlhYmVkZjhjZDkzOGRmNzE4NDRjYThhYzA4
14
- YmM0MDNlMzYwNzkwY2Q1NDgwY2IxYjI0NDNmNDEwOWE2NDI3NmQzNDE5ZmM2
15
- YWRhZmM5YWY2NjVkYzI3ZGZiOWQ1YzUwYWU0MTY3OWRkOTNkNjg=
2
+ SHA1:
3
+ metadata.gz: 31d4f4ed9576a0db912307886f56ee7c908c2508
4
+ data.tar.gz: a20c3f61a0b7c02e1d7cd0c3b1e310264cbdb7b9
5
+ SHA512:
6
+ metadata.gz: 2796582749c379e8e86f1b48025f9be30de7da7d615b146e1ec1733ada8ecf1b77d4cc5b463e927dbb6238e8a6171217c5e65c8ad79830d6ecc4556d657119e6
7
+ data.tar.gz: fbd4ce096e982d9b9bdc9e4b84f5992a7686554836b78ee8140f00a09dfbd71450967291c112752385174d4aa889a39b7ce43ae29ab57e9cda1a79c29c310e6d
data/lib/link_oracle.rb CHANGED
@@ -10,7 +10,7 @@ Dir["#{File.dirname(__FILE__)}/link_oracle/**/*.rb"].each {|f| require f}
10
10
 
11
11
  class LinkOracle
12
12
  def self.extract_from(url)
13
- parsed_data = LinkOracle::Request.new(url).parsed_data
14
- LinkData.new(parsed_data)
13
+ parsed_url = LinkOracle::Request.new(url).parsed_url
14
+ LinkData.new(parsed_url)
15
15
  end
16
16
  end
@@ -0,0 +1,30 @@
1
+ module Utils
2
+ class ImageUrlFormatter
3
+ attr_reader :url, :image_url
4
+
5
+ def initialize(url, image_url)
6
+ @url = url
7
+ @image_url = image_url
8
+ end
9
+
10
+ def perform
11
+ invalid_url? ? "#{scheme}://#{host}#{image_url}" : image_url
12
+ end
13
+
14
+ def host
15
+ parsed_url.host
16
+ end
17
+
18
+ def scheme
19
+ parsed_url.scheme
20
+ end
21
+
22
+ def parsed_url
23
+ @parsed_url ||= URI.parse(url)
24
+ end
25
+
26
+ def invalid_url?
27
+ image_url[0] == '/'
28
+ end
29
+ end
30
+ end
@@ -1,9 +1,10 @@
1
1
  class LinkOracle
2
2
  class LinkData
3
- attr_reader :parsed_data
3
+ attr_reader :parsed_data, :url
4
4
 
5
- def initialize(parsed_data)
6
- @parsed_data = parsed_data
5
+ def initialize(parsed_url)
6
+ @parsed_data = parsed_url[:parsed_data]
7
+ @url = parsed_url[:url]
7
8
  end
8
9
 
9
10
  #TODO: Need to write tests for these
@@ -16,7 +17,7 @@ class LinkOracle
16
17
  end
17
18
 
18
19
  def image_url
19
- og.image_url || meta.image_url || body.image_url
20
+ Utils::ImageUrlFormatter.new(url, og.image_url || meta.image_url || body.image_url).perform
20
21
  end
21
22
 
22
23
  def og
@@ -6,10 +6,17 @@ class LinkOracle
6
6
  @url = url
7
7
  end
8
8
 
9
- def parsed_data
9
+ def parsed_url
10
10
  validate_url
11
11
  validate_request
12
- parsed_body
12
+ results
13
+ end
14
+
15
+ def results
16
+ {
17
+ parsed_data: parsed_data,
18
+ url: url
19
+ }
13
20
  end
14
21
 
15
22
  def validate_request
@@ -38,7 +45,7 @@ class LinkOracle
38
45
  }[response.code] || BadThingsHappened
39
46
  end
40
47
 
41
- def parsed_body
48
+ def parsed_data
42
49
  ::Nokogiri::HTML.parse(response.body)
43
50
  rescue
44
51
  raise ParsingError
@@ -1,4 +1,4 @@
1
1
  class LinkOracle
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
4
4
 
data/link_preview.gemspec CHANGED
@@ -7,7 +7,7 @@ require 'link_oracle/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = "link_oracle"
9
9
  spec.version = LinkOracle::VERSION
10
- spec.authors = ["Ian Cooper", 'Fito von Zastrow', 'Kane Baccigalupi']
10
+ spec.authors = ["Ian Cooper", 'Fito von Zastrow', 'Kane Baccigalupi', 'Sowjanya Mudunuri']
11
11
  spec.email = ["developers@socialchorus.com"]
12
12
  spec.description = %q{Scrapes pages for open graph, meta, and lastly, body preview data}
13
13
  spec.summary = %q{Scrapes pages for open graph, meta, and lastly, body preview data}
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Utils::ImageUrlFormatter do
4
+ let(:url) { "http://berkin.com/whatever/else/is/here" }
5
+ let(:image_url) { "/some/stupid/path" }
6
+ let(:formatted_url) { Utils::ImageUrlFormatter.new(url, image_url).perform }
7
+
8
+ context 'scheme is http' do
9
+ it 'should return the image as a full url using the host as domain' do
10
+ formatted_url.should == 'http://berkin.com/some/stupid/path'
11
+ end
12
+ end
13
+
14
+ context 'scheme is https' do
15
+ let(:url) { "https://berkin.com/whatever/else/is/here" }
16
+ it 'should return the image as a full url using the host as domain' do
17
+ formatted_url.should == 'https://berkin.com/some/stupid/path'
18
+ end
19
+ end
20
+ end
@@ -42,7 +42,7 @@ describe LinkOracle::Request do
42
42
 
43
43
  it 'should raise PageNotFound' do
44
44
  expect {
45
- requester.parsed_data
45
+ requester.parsed_url
46
46
  }.to raise_error(LinkOracle::PageNotFound)
47
47
  end
48
48
  end
@@ -52,7 +52,7 @@ describe LinkOracle::Request do
52
52
 
53
53
  it 'should raise PermissionDenied' do
54
54
  expect {
55
- requester.parsed_data
55
+ requester.parsed_url
56
56
  }.to raise_error(LinkOracle::PermissionDenied)
57
57
  end
58
58
  end
@@ -62,7 +62,7 @@ describe LinkOracle::Request do
62
62
 
63
63
  it 'should raise BadThingsHappened' do
64
64
  expect {
65
- requester.parsed_data
65
+ requester.parsed_url
66
66
  }.to raise_error(LinkOracle::BadThingsHappened)
67
67
  end
68
68
  end
@@ -72,7 +72,7 @@ describe LinkOracle::Request do
72
72
 
73
73
  it 'should raise InvalidUrl' do
74
74
  expect {
75
- requester.parsed_data
75
+ requester.parsed_url
76
76
  }.to raise_error(LinkOracle::InvalidUrl)
77
77
  end
78
78
  end
@@ -84,7 +84,7 @@ describe LinkOracle::Request do
84
84
 
85
85
  it 'should raise ParsingError' do
86
86
  expect {
87
- requester.parsed_data
87
+ requester.parsed_url
88
88
  }.to raise_error(LinkOracle::ParsingError)
89
89
  end
90
90
  end
@@ -59,5 +59,4 @@ describe LinkOracle do
59
59
  link_data.description.should == 'A description for your face'
60
60
  end
61
61
  end
62
-
63
62
  end
metadata CHANGED
@@ -1,43 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: link_oracle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Cooper
8
8
  - Fito von Zastrow
9
9
  - Kane Baccigalupi
10
+ - Sowjanya Mudunuri
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2013-08-28 00:00:00.000000000 Z
14
+ date: 2013-09-09 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: nokogiri
17
18
  requirement: !ruby/object:Gem::Requirement
18
19
  requirements:
19
- - - ! '>='
20
+ - - '>='
20
21
  - !ruby/object:Gem::Version
21
22
  version: '0'
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
26
  requirements:
26
- - - ! '>='
27
+ - - '>='
27
28
  - !ruby/object:Gem::Version
28
29
  version: '0'
29
30
  - !ruby/object:Gem::Dependency
30
31
  name: rest-client
31
32
  requirement: !ruby/object:Gem::Requirement
32
33
  requirements:
33
- - - ! '>='
34
+ - - '>='
34
35
  - !ruby/object:Gem::Version
35
36
  version: '0'
36
37
  type: :runtime
37
38
  prerelease: false
38
39
  version_requirements: !ruby/object:Gem::Requirement
39
40
  requirements:
40
- - - ! '>='
41
+ - - '>='
41
42
  - !ruby/object:Gem::Version
42
43
  version: '0'
43
44
  - !ruby/object:Gem::Dependency
@@ -58,28 +59,28 @@ dependencies:
58
59
  name: rake
59
60
  requirement: !ruby/object:Gem::Requirement
60
61
  requirements:
61
- - - ! '>='
62
+ - - '>='
62
63
  - !ruby/object:Gem::Version
63
64
  version: '0'
64
65
  type: :development
65
66
  prerelease: false
66
67
  version_requirements: !ruby/object:Gem::Requirement
67
68
  requirements:
68
- - - ! '>='
69
+ - - '>='
69
70
  - !ruby/object:Gem::Version
70
71
  version: '0'
71
72
  - !ruby/object:Gem::Dependency
72
73
  name: rspec
73
74
  requirement: !ruby/object:Gem::Requirement
74
75
  requirements:
75
- - - ! '>='
76
+ - - '>='
76
77
  - !ruby/object:Gem::Version
77
78
  version: '0'
78
79
  type: :development
79
80
  prerelease: false
80
81
  version_requirements: !ruby/object:Gem::Requirement
81
82
  requirements:
82
- - - ! '>='
83
+ - - '>='
83
84
  - !ruby/object:Gem::Version
84
85
  version: '0'
85
86
  description: Scrapes pages for open graph, meta, and lastly, body preview data
@@ -95,6 +96,7 @@ files:
95
96
  - README.md
96
97
  - Rakefile
97
98
  - lib/link_oracle.rb
99
+ - lib/link_oracle/Utils/image_url_formatter.rb
98
100
  - lib/link_oracle/extractor/base.rb
99
101
  - lib/link_oracle/extractor/body.rb
100
102
  - lib/link_oracle/extractor/meta.rb
@@ -104,6 +106,7 @@ files:
104
106
  - lib/link_oracle/request.rb
105
107
  - lib/link_oracle/version.rb
106
108
  - link_preview.gemspec
109
+ - spec/link_oracle/Utils/image_url_formatter_spec.rb
107
110
  - spec/link_oracle/extractor/body_spec.rb
108
111
  - spec/link_oracle/extractor/meta_spec.rb
109
112
  - spec/link_oracle/extractor/og_spec.rb
@@ -120,12 +123,12 @@ require_paths:
120
123
  - lib
121
124
  required_ruby_version: !ruby/object:Gem::Requirement
122
125
  requirements:
123
- - - ! '>='
126
+ - - '>='
124
127
  - !ruby/object:Gem::Version
125
128
  version: '0'
126
129
  required_rubygems_version: !ruby/object:Gem::Requirement
127
130
  requirements:
128
- - - ! '>='
131
+ - - '>='
129
132
  - !ruby/object:Gem::Version
130
133
  version: '0'
131
134
  requirements: []
@@ -135,6 +138,7 @@ signing_key:
135
138
  specification_version: 4
136
139
  summary: Scrapes pages for open graph, meta, and lastly, body preview data
137
140
  test_files:
141
+ - spec/link_oracle/Utils/image_url_formatter_spec.rb
138
142
  - spec/link_oracle/extractor/body_spec.rb
139
143
  - spec/link_oracle/extractor/meta_spec.rb
140
144
  - spec/link_oracle/extractor/og_spec.rb