diffbot 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffdaf63580cbe142861ae566176c1ae64540f3aa
4
- data.tar.gz: 804948072bb5b6ab792ada3680c899938fde6d3a
3
+ metadata.gz: 35d6b7f9cfea3baed8bce0a8f4c858ecd9aa6329
4
+ data.tar.gz: a9276c70d867748eb8be81cb9dd14d6ef30bddd6
5
5
  SHA512:
6
- metadata.gz: 1dfab96f3beb2a6e3c584760db87264c84da1161d8d73c9163fbe96e56e0cb81510561d971eb8753434881607890531453bc557af3873485a821fad9d918333d
7
- data.tar.gz: 84e6cd2719109ddf3775ec860c22f3647124fc0f3bdde14093eb5a7e5b4e8636d5505b3f779298a0f1c7e88b0e00d8133cc1206e865ea175eac18780d711c115
6
+ metadata.gz: 19a67f552b510e4d3774c1594a8bb2a4712b4ffa996390a6d52d57ca84cd3b09fb6ac30847cddd05767ab910f05fde909d18bc5ec5454930ae05ac4d792623c2
7
+ data.tar.gz: 178401466e3697b83295c08773a583075592bc9bb75d5e701d7e3bd5a49f3536091ff2dd528614389797d11bca9d6c0ce7a03afd022d8308d3e7f14ad2f06b02
@@ -2,6 +2,6 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
- - rbx-19mode
5
+ - 2.0.0
6
6
  env:
7
7
  - RUBYOPT="$RUBYOPT -Itest"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- diffbot (0.1.2)
4
+ diffbot (0.1.3)
5
5
  excon
6
6
  hashie
7
7
  nokogiri (~> 1.5.0)
@@ -21,6 +21,7 @@ PLATFORMS
21
21
  ruby
22
22
 
23
23
  DEPENDENCIES
24
+ bundler (~> 1.3)
24
25
  diffbot!
25
26
  minitest
26
27
  rake
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Diffbot
2
2
 
3
- This is a ruby client for the [Diffbot](http://diffbot.com) API.
3
+ This is a ruby client for the [Diffbot](http://diffbot.com) API. [![Build Status](https://travis-ci.org/greshny/diffbot.png?branch=master)](https://travis-ci.org/greshny/diffbot)
4
4
 
5
5
  ## Install
6
6
 
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require "rake/testtask"
2
2
  require "rubygems/package_task"
3
+ require "bundler/gem_tasks"
3
4
 
4
5
  gem_spec = eval(File.read("./diffbot.gemspec")) rescue nil
5
6
  Gem::PackageTask.new(gem_spec) do |pkg|
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "diffbot"
3
- s.version = "0.1.2"
3
+ s.version = "0.1.3"
4
4
  s.description = "Diffbot provides a concise API for analyzing and extracting semantic information from web pages using Diffbot (http://www.diffbot.com)."
5
5
  s.summary = "Ruby interface to the Diffbot API "
6
6
  s.authors = ["Nicolas Sanguinetti", "Roman Greshny"]
@@ -14,6 +14,6 @@ Gem::Specification.new do |s|
14
14
  s.add_dependency("yajl-ruby")
15
15
  s.add_dependency("nokogiri", "~> 1.5.0")
16
16
  s.add_dependency("hashie")
17
-
17
+ s.add_development_dependency("bundler", "~> 1.3")
18
18
  s.add_development_dependency("minitest")
19
19
  end
@@ -3,6 +3,7 @@ require "diffbot/coercible_hash"
3
3
  require "diffbot/request"
4
4
  require "diffbot/article"
5
5
  require "diffbot/frontpage"
6
+ require "diffbot/product"
6
7
 
7
8
  module Diffbot
8
9
  # Public: Set global options. This is a nice API to group calls to the Diffbot
@@ -34,10 +35,29 @@ module Diffbot
34
35
  @article_defaults
35
36
  end
36
37
 
38
+ # Public: Configure the default request parameters for Product requests. See
39
+ # Product::RequestParams documentation for the specific configuration values
40
+ # you can set.
41
+ #
42
+ # Yields the default Product::RequestParams object.
43
+ #
44
+ # Returns the default Product::RequestParams object.
45
+ def self.product_defaults
46
+ if block_given?
47
+ @product_defaults = Product::RequestParams.new
48
+ yield @product_defaults
49
+ else
50
+ @product_defaults ||= Product::RequestParams.new
51
+ end
52
+
53
+ @product_defaults
54
+ end
55
+
37
56
  # Public: Reset the configuration to the defaults. Useful for testing.
38
57
  #
39
58
  # Returns nil.
40
59
  def self.reset!
60
+ @product_defaults = nil
41
61
  @article_defaults = nil
42
62
  @token = nil
43
63
  @instrumentor = nil
@@ -0,0 +1,63 @@
1
+ module Diffbot
2
+ module Items
3
+ class Product < Hashie::Trash
4
+ extend CoercibleHash
5
+
6
+ # Name of the product. Returned by default.
7
+ property :title
8
+
9
+ # Description, if available, of the product. Returned by default.
10
+ property :description
11
+
12
+ # Identified offer or actual/'final' price of the product. Returned by default.
13
+ property :offer_price, from: :offerPrice
14
+
15
+ # A Diffbot-determined unique product ID.
16
+ # If upc, isbn, mpn or sku are identified on the page,
17
+ # productId will select from these values in the above order.
18
+ # Otherwise Diffbot will attempt to derive the best unique value for the product.
19
+ # Returned by default.
20
+ property :product_id, from: :productId
21
+
22
+ # Item's availability, either true or false. Returned by default.
23
+ property :availability
24
+
25
+ class Details < Hashie::Trash
26
+ property :amount
27
+ property :text
28
+ property :symbol
29
+ end
30
+
31
+ property :offer_price_details, from: :offerPriceDetails
32
+ coerce_property :offer_price_details, class: Details
33
+
34
+ class Media < Hashie::Trash
35
+ # Only images. Returns "True" if image is identified as primary in terms of size
36
+ # or positioning.
37
+ property :primary
38
+
39
+ # Direct (fully resolved) link to image or video content.
40
+ property :link
41
+
42
+ # Diffbot-determined best caption for the image.
43
+ property :caption
44
+
45
+ # Type of media identified (image or video).
46
+ property :type
47
+
48
+ # Image height, in pixels.
49
+ property :height
50
+
51
+ # Image width, in pixels.
52
+ property :width
53
+
54
+ # Full document Xpath to the media item.
55
+ property :xpath
56
+ end
57
+
58
+ # Array of media items (images or videos) of the product. Returned by default.
59
+ property :media
60
+ coerce_property :media, collection: Media
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,67 @@
1
+ require 'yajl'
2
+ require 'diffbot/items/product'
3
+
4
+ module Diffbot
5
+ # Representation of a product. This class offers a single entry point: the
6
+ # `.fetch` method, that, given a URL, will return the front page as analyzed
7
+ # by Diffbot.
8
+ class Product < Hashie::Trash
9
+ extend CoercibleHash
10
+ # Public: The Product API analyzes a shopping or e-commerce product page
11
+ # and returns information on the product.
12
+ #
13
+ # url - Product URL to process (URL encoded).
14
+ # token - The API token for Diffbot.
15
+ # parser - The callable object that will parse the raw output from the
16
+ # API. Defaults to Yajl::Parser.method(:parse).
17
+ # defaults - The default request options. See Diffbot.product_defaults.
18
+ #
19
+ # Yields the request configuration.
20
+ #
21
+ # Examples
22
+ #
23
+ # # Request a product with the default options.
24
+ # product = Diffbot::Product.fetch(url, api_token)
25
+ #
26
+ # Returns a Diffbot::Product
27
+ def self.fetch url, token=Diffbot.token, parser=Yajl::Parser.method(:parse), defaults=Diffbot.product_defaults
28
+ request = Diffbot::Request.new(token)
29
+ response = request.perform(:get, endpoint,{url: url, token: token})
30
+ new(parser.call(response.body))
31
+ end
32
+
33
+ def self.endpoint
34
+ 'http://api.diffbot.com/v2/product'
35
+ end
36
+
37
+ class Breadcrumb < Hashie::Trash
38
+ property :name
39
+ property :link
40
+ end
41
+
42
+ # If available, an array of link URLs and link text from page breadcrumbs.
43
+ # Returned by default.
44
+ property :breadcrumb
45
+ coerce_property :breadcrumb, collection: Breadcrumb
46
+
47
+ property :date_created
48
+
49
+ property :leaf_page, from: :leafPage
50
+
51
+ property :error
52
+ property :error_code, from: :errorCode
53
+
54
+ property :type
55
+
56
+ property :offer_price_details, from: :offerPriceDetails
57
+
58
+
59
+ # Products array
60
+ property :products
61
+ coerce_property :products, collection: Items::Product
62
+
63
+ # URL submitted. Returned by default.
64
+ property :url
65
+ class RequestParams < Hashie::Trash; end
66
+ end
67
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: diffbot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Sanguinetti
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-29 00:00:00.000000000 Z
12
+ date: 2014-02-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: excon
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - '>='
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: bundler
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '1.3'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: '1.3'
70
84
  - !ruby/object:Gem::Dependency
71
85
  name: minitest
72
86
  requirement: !ruby/object:Gem::Requirement
@@ -104,6 +118,8 @@ files:
104
118
  - lib/diffbot/frontpage.rb
105
119
  - lib/diffbot/frontpage/dml_parser.rb
106
120
  - lib/diffbot/item.rb
121
+ - lib/diffbot/items/product.rb
122
+ - lib/diffbot/product.rb
107
123
  - lib/diffbot/request.rb
108
124
  - test/article_test.rb
109
125
  - test/coercible_hash_test.rb