pricesphere 0.0.1 → 0.1.0
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 +4 -4
- data/.gitignore +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/examples/example.rb +14 -0
- data/lib/pricesphere.rb +12 -3
- data/lib/pricesphere/base.rb +30 -0
- data/lib/pricesphere/error.rb +12 -0
- data/lib/pricesphere/product.rb +35 -0
- data/lib/pricesphere/version.rb +1 -1
- data/pricesphere.gemspec +1 -0
- metadata +30 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ba34cbcc53ec5ef87bfacbe93bb0818c1f2d224
|
4
|
+
data.tar.gz: 65e32973361db4a3dea4f610b69c1c427b01734e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe289a93cf850074135513ede023ea3d7772c339b036f33bde30ad06c228b6ed08ca7df2c59b56c07d8edb088caf987c95950d92c4a3a970318786c01bc30f2a
|
7
|
+
data.tar.gz: f12b6f2ed8283e6d7f650683e8d6ee2346b4153a856d9e0b4e81bcb0e1a44f72d1eb42e203ab47a4ab8b6d8f4068921ef5cf9c6538dec73fa77f9a862f5b205d
|
data/.gitignore
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
pricesphere-ruby
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.1.5
|
data/examples/example.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'pricesphere'
|
4
|
+
|
5
|
+
API_KEY = 'Your API Key'
|
6
|
+
|
7
|
+
product_attributes = {
|
8
|
+
brand: 'Toshiba',
|
9
|
+
site: 'newegg.com'
|
10
|
+
}
|
11
|
+
|
12
|
+
pricesphere = Pricesphere::Product.new(API_KEY)
|
13
|
+
# Products is an enumerator
|
14
|
+
products = pricesphere.with_attributes(product_attributes)
|
data/lib/pricesphere.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'pricesphere/version'
|
2
|
+
require 'pricesphere/error'
|
3
|
+
require 'pricesphere/base'
|
4
|
+
require 'pricesphere/product'
|
3
5
|
module Pricesphere
|
4
|
-
|
6
|
+
|
7
|
+
def self.base_url
|
8
|
+
@base_url ||= "https://www.pricesphere.com"
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.base_url= url
|
12
|
+
@base_url = url
|
13
|
+
end
|
5
14
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'json'
|
3
|
+
require 'cgi'
|
4
|
+
require 'net/http'
|
5
|
+
|
6
|
+
module Pricesphere
|
7
|
+
class Base
|
8
|
+
def initialize(api_key = '', version = 'v1')
|
9
|
+
raise Error.new("Missing API Key", 'You did not supply an API ey, please sign up for an account at https://www.pricesphere.com') if api_key == ''
|
10
|
+
@api_key = api_key
|
11
|
+
@version = version
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def get(endpoint, params)
|
17
|
+
request_params = ""
|
18
|
+
params.each do |name, value|
|
19
|
+
request_params += "&#{CGI.escape(name.to_s)}=#{CGI.escape(value.to_s)}"
|
20
|
+
end
|
21
|
+
request_params.gsub!(/^&/, '')
|
22
|
+
base_url = "#{Pricesphere.base_url}/api/#{@version}"
|
23
|
+
request_url = "#{base_url}/#{endpoint}?#{request_params}&token=#{@api_key}"
|
24
|
+
|
25
|
+
response = Net::HTTP.get(URI request_url)
|
26
|
+
|
27
|
+
result = JSON.parse(response)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Pricesphere
|
2
|
+
class Error < StandardError
|
3
|
+
attr_reader :type
|
4
|
+
attr_reader :message
|
5
|
+
attr_reader :param
|
6
|
+
|
7
|
+
def initialize(type=nil, message=nil, param=nil)
|
8
|
+
@message = 'Error: ' + type + ' Message: ' + message
|
9
|
+
@message += ' Failed at parameter: ' + param if not param.nil?
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Pricesphere
|
2
|
+
class Product < Base
|
3
|
+
def search(term = '')
|
4
|
+
return {} if term == ''
|
5
|
+
with_attributes( search: term )
|
6
|
+
end
|
7
|
+
|
8
|
+
def with_attributes(attributes = {})
|
9
|
+
return {} if attributes == {}
|
10
|
+
page = 1
|
11
|
+
last_page = false
|
12
|
+
Enumerator.new do |yielder|
|
13
|
+
loop do
|
14
|
+
raise StopIteration if last_page
|
15
|
+
result = get(attributes.merge(page: page))
|
16
|
+
|
17
|
+
if page == result['meta']['pages'].to_i
|
18
|
+
last_page = true
|
19
|
+
end
|
20
|
+
page += 1
|
21
|
+
result['products'].each do |product|
|
22
|
+
yielder.yield product
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def get(params)
|
32
|
+
super('products', params)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/pricesphere/version.rb
CHANGED
data/pricesphere.gemspec
CHANGED
metadata
CHANGED
@@ -1,43 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pricesphere
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris MacNaughton
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
description: Pricesphere is a Gem to interact with PriceSphere.com's API
|
42
56
|
email:
|
43
57
|
- chmacnaughton@gmail.com
|
@@ -45,12 +59,18 @@ executables: []
|
|
45
59
|
extensions: []
|
46
60
|
extra_rdoc_files: []
|
47
61
|
files:
|
48
|
-
- .gitignore
|
62
|
+
- ".gitignore"
|
63
|
+
- ".ruby-gemset"
|
64
|
+
- ".ruby-version"
|
49
65
|
- Gemfile
|
50
66
|
- LICENSE.txt
|
51
67
|
- README.md
|
52
68
|
- Rakefile
|
69
|
+
- examples/example.rb
|
53
70
|
- lib/pricesphere.rb
|
71
|
+
- lib/pricesphere/base.rb
|
72
|
+
- lib/pricesphere/error.rb
|
73
|
+
- lib/pricesphere/product.rb
|
54
74
|
- lib/pricesphere/version.rb
|
55
75
|
- pricesphere.gemspec
|
56
76
|
homepage: ''
|
@@ -63,17 +83,17 @@ require_paths:
|
|
63
83
|
- lib
|
64
84
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
85
|
requirements:
|
66
|
-
- -
|
86
|
+
- - ">="
|
67
87
|
- !ruby/object:Gem::Version
|
68
88
|
version: '0'
|
69
89
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
90
|
requirements:
|
71
|
-
- -
|
91
|
+
- - ">="
|
72
92
|
- !ruby/object:Gem::Version
|
73
93
|
version: '0'
|
74
94
|
requirements: []
|
75
95
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.
|
96
|
+
rubygems_version: 2.4.3
|
77
97
|
signing_key:
|
78
98
|
specification_version: 4
|
79
99
|
summary: Pricesphere is a Gem to interact with PriceSphere.com's API
|