biffbot 1.2.3 → 1.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![Build Status](https://travis-ci.org/tevren/biffbot.svg?branch=master)](https://travis-ci.org/tevren/biffbot) [![Gem Version](https://badge.fury.io/rb/biffbot.svg)](http://badge.fury.io/rb/biffbot) [![Code Climate](https://codeclimate.com/github/tevren/biffbot/badges/gpa.svg)](https://codeclimate.com/github/tevren/biffbot)
|
1
|
+
# Biffbot [![Build Status](https://travis-ci.org/tevren/biffbot.svg?branch=master)](https://travis-ci.org/tevren/biffbot) [![Gem Version](https://badge.fury.io/rb/biffbot.svg)](http://badge.fury.io/rb/biffbot) [![Code Climate](https://codeclimate.com/github/tevren/biffbot/badges/gpa.svg)](https://codeclimate.com/github/tevren/biffbot) [![Test Coverage](https://codeclimate.com/github/tevren/biffbot/badges/coverage.svg)](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
|