biffbot 1.2.3 → 1.2.4
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/README.md +6 -16
- data/biffbot.gemspec +3 -1
- data/lib/biffbot.rb +6 -0
- data/lib/biffbot/analyze.rb +10 -3
- data/lib/biffbot/article.rb +10 -3
- data/lib/biffbot/base.rb +19 -1
- data/lib/biffbot/bulk.rb +37 -33
- data/lib/biffbot/custom.rb +11 -3
- data/lib/biffbot/image.rb +8 -3
- data/lib/biffbot/product.rb +8 -3
- data/lib/biffbot/version.rb +1 -1
- data/spec/lib/supported/analyze_spec.rb +2 -2
- data/spec/lib/supported/article_spec.rb +2 -2
- data/spec/lib/supported/image_spec.rb +2 -2
- data/spec/lib/supported/product_spec.rb +2 -2
- metadata +33 -5
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YmIwNzhmMTgwNWI3YTExMDE4OGJjMDExN2M1NDFlMjU0MGJhYTI4NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
Zjg4NjU1NmI3OTI1ZTRkZWQwOWNlOTVkZGZiYjQxZDgyNzMyNzVlNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZGI0ZTMzNjRlY2QxOGZmZDFjNjlkMzhhNmQwNDVhY2M2ZjQ2YjIxMGI0OTg5
|
10
|
+
N2ZlNWExNDMyNzQ0MjZmZDFhNDdhZjNmNzVhOWU0NTkzZDc3Njk4YTVjMzRk
|
11
|
+
OWU1MzA3MjNhNDdhOGU4NTBkZmQ5YjVlM2M2MjgyZTY1M2ZkMGI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OGIwY2QwNjAzMGJjNDdhNzcwNzNhZGYwZjBjZGJiMzczMjk1NDg4OTM3OTM0
|
14
|
+
YzNlY2RhMzc2MjJiOWI0YTllMjYzMDM0OWIyMDlkMjlmYjRiMzE1YjBiMWQ0
|
15
|
+
MmE4YTZlODdhZGQ0NDBjM2VjODZiNzkyMzE4NzljZjlkNGU2ZWI=
|
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
# Biffbot
|
2
|
-
[](https://travis-ci.org/tevren/biffbot) [](http://badge.fury.io/rb/biffbot) [](https://codeclimate.com/github/tevren/biffbot)
|
1
|
+
# Biffbot [](https://travis-ci.org/tevren/biffbot) [](http://badge.fury.io/rb/biffbot) [](https://codeclimate.com/github/tevren/biffbot) [](https://codeclimate.com/github/tevren/biffbot)
|
3
2
|
|
4
3
|
Ruby gem to connect to diffbot's APIs
|
5
4
|
|
@@ -19,23 +18,14 @@ Or install it yourself as:
|
|
19
18
|
|
20
19
|
## Usage
|
21
20
|
|
22
|
-
Usage example:
|
23
|
-
OLD DEPCRECATED METHOD:
|
21
|
+
### Usage example:
|
24
22
|
|
25
23
|
require 'biffbot'
|
26
|
-
token = YOUR_DEVELOPER_TOKEN
|
27
|
-
|
28
|
-
|
24
|
+
Biffbot.token = YOUR_DEVELOPER_TOKEN
|
25
|
+
analyze = Biffbot::Analyze.new(url, {:type => 'article'})
|
26
|
+
article = Biffbot::Article.new(url,some_hash_of_options)
|
29
27
|
|
30
|
-
|
31
|
-
|
32
|
-
require 'biffbot'
|
33
|
-
token = YOUR_DEVELOPER_TOKEN
|
34
|
-
analyze = Biffbot::Analyze.new(token, url, {:type => 'article'})
|
35
|
-
article = Biffbot::Article.new(@token,url,some_hash_of_options)
|
36
|
-
|
37
|
-
|
38
|
-
The available classes are:
|
28
|
+
#### Available classes:
|
39
29
|
* Biffbot::Analyze
|
40
30
|
* Biffbot::Article
|
41
31
|
* Biffbot::Image
|
data/biffbot.gemspec
CHANGED
@@ -16,11 +16,13 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.executables = gem.files.grep(/^bin\//) { |f| File.basename(f) }
|
17
17
|
gem.test_files = gem.files.grep(/^(test|spec|features)\//)
|
18
18
|
gem.require_paths = ['lib']
|
19
|
-
gem.add_dependency('httparty')
|
19
|
+
gem.add_dependency('httparty', '~> 0.13')
|
20
20
|
gem.add_dependency('json', '~> 1.8')
|
21
21
|
gem.add_dependency('hashie', '~> 3.3')
|
22
22
|
gem.add_development_dependency('rspec')
|
23
23
|
gem.add_development_dependency('rake')
|
24
24
|
gem.add_development_dependency('rubocop')
|
25
25
|
gem.add_development_dependency('dotenv')
|
26
|
+
gem.add_development_dependency('yard')
|
27
|
+
gem.add_development_dependency('codeclimate-test-reporter')
|
26
28
|
end
|
data/lib/biffbot.rb
CHANGED
data/lib/biffbot/analyze.rb
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
require 'biffbot/base'
|
2
2
|
module Biffbot
|
3
3
|
class Analyze < Base
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
# a new instance of Biffbot::Analyze
|
5
|
+
#
|
6
|
+
# @param url [String] The url to analyze
|
7
|
+
# @param options [Hash] An hash of options
|
8
|
+
# @param token [String] Override Biffbot.token with another token
|
9
|
+
# @return [Hash]
|
10
|
+
# @example
|
11
|
+
# Biffbot::Analyze('http://www.nytimes.com', mode: 'article', timeout: 60) => {SOME_HASH}
|
12
|
+
def initialize url, options = {}, token = Biffbot.token
|
13
|
+
parse(token, 'analyze', url, options)
|
7
14
|
end
|
8
15
|
end
|
9
16
|
end
|
data/lib/biffbot/article.rb
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
require 'biffbot/base'
|
2
2
|
module Biffbot
|
3
3
|
class Article < Base
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
# a new instance of Biffbot::Article
|
5
|
+
#
|
6
|
+
# @param url [String] The url of an article to grab
|
7
|
+
# @param options [Hash] An hash of options
|
8
|
+
# @param token [String] Override Biffbot.token with another token
|
9
|
+
# @return [Hash]
|
10
|
+
# @example
|
11
|
+
# Biffbot::Article('http://www.nytimes.com', timeout: 60) => {SOME_HASH}
|
12
|
+
def initialize url, options = {}, token = Biffbot.token
|
13
|
+
parse(token, 'article', url, options)
|
7
14
|
end
|
8
15
|
end
|
9
16
|
end
|
data/lib/biffbot/base.rb
CHANGED
@@ -5,13 +5,26 @@ require 'cgi'
|
|
5
5
|
module Biffbot
|
6
6
|
class Base < Hash
|
7
7
|
include Hashie::Extensions::Coercion
|
8
|
-
|
8
|
+
# a new instance of Biffbot::Base
|
9
|
+
#
|
10
|
+
# @param token [String] Override Biffbot.token with another token
|
11
|
+
# @param type [String] pass the class type you're working with
|
12
|
+
# @param url [String] The url of the page you're working with
|
13
|
+
# @param options [Hash] An hash of options
|
14
|
+
# @return [Hash]
|
15
|
+
def parse token = Biffbot.token, type = 'article', url = '', options = {}
|
9
16
|
url = parse_options(options, generate_url(CGI.escape(url), token, type, options[:version]))
|
10
17
|
JSON.parse(HTTParty.get(url).body).each_pair do |key, value|
|
11
18
|
self[key] = value
|
12
19
|
end
|
13
20
|
end
|
14
21
|
|
22
|
+
# generate an url consisting of your api key and the endpoint you'd like to use
|
23
|
+
#
|
24
|
+
# @param url [String] The url to pass to diffbot
|
25
|
+
# @param token [String] Diffbot API token
|
26
|
+
# @param type [String] API to use
|
27
|
+
# @return [String] a formatted url with your api key, endpoint and input url
|
15
28
|
def generate_url url, token, type, version
|
16
29
|
case type
|
17
30
|
when 'analyze'
|
@@ -25,6 +38,11 @@ module Biffbot
|
|
25
38
|
url
|
26
39
|
end
|
27
40
|
|
41
|
+
# add the options hash to your input url
|
42
|
+
#
|
43
|
+
# @param options [Hash] An hash of options
|
44
|
+
# @param request [String] The url to append options to
|
45
|
+
# @return [String] a formatted url with options merged into the input url
|
28
46
|
def parse_options options = {}, request = ''
|
29
47
|
options.each do |opt, value|
|
30
48
|
case opt
|
data/lib/biffbot/bulk.rb
CHANGED
@@ -5,10 +5,20 @@ require 'cgi'
|
|
5
5
|
module Biffbot
|
6
6
|
class Bulk < Base
|
7
7
|
include Hashie::Extensions::Coercion
|
8
|
-
|
8
|
+
# a new instance of Biffbot::Bulk
|
9
|
+
#
|
10
|
+
# @param token [String] Override Biffbot.token with another token
|
11
|
+
def initialize token = Biffbot.token
|
9
12
|
@token = token
|
10
13
|
end
|
11
14
|
|
15
|
+
# create a bulk job
|
16
|
+
#
|
17
|
+
# @param name [String] Desired name for bulk job
|
18
|
+
# @param api_type [String] Desired API to use for urls
|
19
|
+
# @param urls [Array] An array of input urls to pass to bulk job
|
20
|
+
# @param options [Hash] An hash of options
|
21
|
+
# @return [Hash]
|
12
22
|
def create_job name, api_type, urls = [], options = {}
|
13
23
|
api_url = "http://api.diffbot.com/v2/#{api_type}"
|
14
24
|
api_url = "http://api.diffbot.com/#{options[:version]}/#{api_type}" if options[:version] == 'v2' || options[:version] == 'v3'
|
@@ -20,6 +30,13 @@ module Biffbot
|
|
20
30
|
end
|
21
31
|
end
|
22
32
|
|
33
|
+
# generate the POST body required for bulk job creation
|
34
|
+
#
|
35
|
+
# @param name [String] Desired name for bulk job
|
36
|
+
# @param api_url [String] Desired API url to use for urls
|
37
|
+
# @param urls [Array] An array of input urls to pass to bulk job
|
38
|
+
# @param options [Hash] An hash of options
|
39
|
+
# @return [Hash]
|
23
40
|
def generate_post_body name, api_url, urls = [], options = {}
|
24
41
|
post_body = {token: @token, name: name, apiUrl: api_url, urls: urls}
|
25
42
|
options.each do |key, value|
|
@@ -29,34 +46,28 @@ module Biffbot
|
|
29
46
|
post_body
|
30
47
|
end
|
31
48
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
def restart name
|
47
|
-
endpoint = "http://api.diffbot.com/v3/bulk/?token=#{@token}&name=#{name}&restart=1"
|
48
|
-
JSON.parse(HTTParty.get(endpoint).body).each_pair do |key, value|
|
49
|
-
self[key] = value
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def delete name
|
54
|
-
endpoint = "http://api.diffbot.com/v3/bulk/?token=#{@token}&name=#{name}&delete=1"
|
55
|
-
JSON.parse(HTTParty.get(endpoint).body).each_pair do |key, value|
|
56
|
-
self[key] = value
|
49
|
+
# Using define_method to create methods for each action rather than defining each method seperately.
|
50
|
+
%w(pause unpause restart delete view).each do |method_name|
|
51
|
+
define_method method_name do |name|
|
52
|
+
case method_name
|
53
|
+
when 'pause', 'restart', 'delete'
|
54
|
+
endpoint = "http://api.diffbot.com/v3/bulk/?token=#{@token}&name=#{name}&#{method_name}=1"
|
55
|
+
when 'unpause'
|
56
|
+
endpoint = "http://api.diffbot.com/v3/bulk/?token=#{@token}&name=#{name}&#{method_name}=0"
|
57
|
+
when 'view'
|
58
|
+
endpoint = "http://api.diffbot.com/v3/bulk/?token=#{@token}&name=#{name}"
|
59
|
+
end
|
60
|
+
JSON.parse(HTTParty.get(endpoint).body).each_pair do |key, value|
|
61
|
+
self[key] = value
|
62
|
+
end
|
57
63
|
end
|
58
64
|
end
|
59
65
|
|
66
|
+
# retrieve data per given jobName
|
67
|
+
#
|
68
|
+
# @param jobName [String] Name of bulk job
|
69
|
+
# @param _options [Hash] An hash of options
|
70
|
+
# @return [Hash]
|
60
71
|
def retrieve_data jobName, _options = {}
|
61
72
|
# TODO: add support for csv
|
62
73
|
endpoint = "http://api.diffbot.com/v3/bulk/download/#{@token}-#{jobName}_data.json"
|
@@ -64,12 +75,5 @@ module Biffbot
|
|
64
75
|
self[key] = value
|
65
76
|
end
|
66
77
|
end
|
67
|
-
|
68
|
-
def view name
|
69
|
-
endpoint = "http://api.diffbot.com/v3/bulk/?token=#{@token}&name=#{name}"
|
70
|
-
JSON.parse(HTTParty.get(endpoint).body).each_pair do |key, value|
|
71
|
-
self[key] = value
|
72
|
-
end
|
73
|
-
end
|
74
78
|
end
|
75
79
|
end
|
data/lib/biffbot/custom.rb
CHANGED
@@ -1,10 +1,18 @@
|
|
1
1
|
require 'biffbot/base'
|
2
2
|
module Biffbot
|
3
3
|
class Custom < Base
|
4
|
-
|
5
|
-
|
4
|
+
# a new instance of Biffbot::Custom
|
5
|
+
#
|
6
|
+
# @param url [String] The url to pass to your custom api
|
7
|
+
# @param api_name [String] The name of your custom api
|
8
|
+
# @param options [Hash] An hash of options
|
9
|
+
# @param token [String] Override Biffbot.token with another token
|
10
|
+
# @return [Hash]
|
11
|
+
# @example
|
12
|
+
# Biffbot::Custom('http://www.nytimes.com', 'my_cool_nytimes_api', timeout: 60) => {SOME_HASH}
|
13
|
+
def initialize url, api_name, options = {}, token = Biffbot.token
|
6
14
|
options[:api_name] = api_name
|
7
|
-
parse(
|
15
|
+
parse(token, 'custom', url, options)
|
8
16
|
end
|
9
17
|
end
|
10
18
|
end
|
data/lib/biffbot/image.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
require 'biffbot/base'
|
2
2
|
module Biffbot
|
3
3
|
class Image < Base
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
# a new instance of Biffbot::Image
|
5
|
+
#
|
6
|
+
# @param url [String] The url of an page with images you want to analyze
|
7
|
+
# @param options [Hash] An hash of options
|
8
|
+
# @param token [String] Override Biffbot.token with another token
|
9
|
+
# @return [Hash]
|
10
|
+
def initialize url, options = {}, token = Biffbot.token
|
11
|
+
parse(token, 'image', url, options)
|
7
12
|
end
|
8
13
|
end
|
9
14
|
end
|
data/lib/biffbot/product.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
require 'biffbot/base'
|
2
2
|
module Biffbot
|
3
3
|
class Product < Base
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
# a new instance of Biffbot::Product
|
5
|
+
#
|
6
|
+
# @param url [String] The url of an page with products you want to analyze
|
7
|
+
# @param options [Hash] An hash of options
|
8
|
+
# @param token [String] Override Biffbot.token with another token
|
9
|
+
# @return [Hash]
|
10
|
+
def initialize url, options = {}, token = Biffbot.token
|
11
|
+
parse(token, 'product', url, options)
|
7
12
|
end
|
8
13
|
end
|
9
14
|
end
|
data/lib/biffbot/version.rb
CHANGED
@@ -3,9 +3,9 @@ require 'spec_helper'
|
|
3
3
|
# more tests to come...
|
4
4
|
describe Biffbot::Analyze do
|
5
5
|
before :each do
|
6
|
-
token = ENV['DIFFBOT_DEV_TOKEN']
|
7
6
|
url = 'http://www.huffingtonpost.ca/2012/10/11/amanda-todd-teen-bullying-suicide-youtube_n_1959668.html'
|
8
|
-
|
7
|
+
Biffbot.token = ENV['DIFFBOT_DEV_TOKEN']
|
8
|
+
@article = Biffbot::Analyze.new(url, type: 'article')
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'analyze an article' do
|
@@ -3,9 +3,9 @@ require 'spec_helper'
|
|
3
3
|
# currently tests v2 article api
|
4
4
|
describe Biffbot::Article do
|
5
5
|
before :each do
|
6
|
-
token = ENV['DIFFBOT_DEV_TOKEN']
|
7
6
|
url = 'http://www.huffingtonpost.ca/2012/10/11/amanda-todd-teen-bullying-suicide-youtube_n_1959668.html'
|
8
|
-
|
7
|
+
Biffbot.token = ENV['DIFFBOT_DEV_TOKEN']
|
8
|
+
@article = Biffbot::Article.new(url)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'Biffbot::Article.parse' do
|
@@ -3,9 +3,9 @@ require 'spec_helper'
|
|
3
3
|
# currently tests v2 image api
|
4
4
|
describe Biffbot::Image do
|
5
5
|
before :each do
|
6
|
-
token = ENV['DIFFBOT_DEV_TOKEN']
|
7
6
|
url = 'http://www.huffingtonpost.ca/2012/10/11/amanda-todd-teen-bullying-suicide-youtube_n_1959668.html'
|
8
|
-
|
7
|
+
Biffbot.token = ENV['DIFFBOT_DEV_TOKEN']
|
8
|
+
@image = Biffbot::Image.new(url)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'Biffbot::Image.parse' do
|
@@ -3,9 +3,9 @@ require 'spec_helper'
|
|
3
3
|
# currently tests v2 product api
|
4
4
|
describe Biffbot::Product do
|
5
5
|
before :each do
|
6
|
-
token = ENV['DIFFBOT_DEV_TOKEN']
|
7
6
|
url = 'http://www.amazon.com/Google-Chromecast-Streaming-Media-Player/dp/B00DR0PDNE/'
|
8
|
-
|
7
|
+
Biffbot.token = ENV['DIFFBOT_DEV_TOKEN']
|
8
|
+
@product = Biffbot::Product.new(url)
|
9
9
|
end
|
10
10
|
|
11
11
|
describe 'Biffbot::Product.parse' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biffbot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anurag Mohanty
|
@@ -14,16 +14,16 @@ dependencies:
|
|
14
14
|
name: httparty
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.13'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '0.13'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +108,34 @@ dependencies:
|
|
108
108
|
- - ! '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: yard
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: codeclimate-test-reporter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ! '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ! '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
111
139
|
description: Ruby gem to connect to diffbot's article api
|
112
140
|
email:
|
113
141
|
- tevren@gmail.com
|