pricesphere 0.0.1 → 0.1.0

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: 3d77f8919cc558d04e845b1227462442bf354664
4
- data.tar.gz: 02a179cd6421f4f82e89a129b236a150b2664ab5
3
+ metadata.gz: 1ba34cbcc53ec5ef87bfacbe93bb0818c1f2d224
4
+ data.tar.gz: 65e32973361db4a3dea4f610b69c1c427b01734e
5
5
  SHA512:
6
- metadata.gz: 0d4362cc41c229901ee5f705420006a9869734b81c4158c920b591d9af9f22bef3f594fffa8612e88ff615a560eb9b52dfe4f5bee4244bba8cd397c96072659d
7
- data.tar.gz: 019d2fc5750fa1061b280f069010622c714c7d30887e74170ac95c351a99cbc7dd803209ea89b1a9b60ba33ab944538475465e39d9145791b27f2752baf42df1
6
+ metadata.gz: fe289a93cf850074135513ede023ea3d7772c339b036f33bde30ad06c228b6ed08ca7df2c59b56c07d8edb088caf987c95950d92c4a3a970318786c01bc30f2a
7
+ data.tar.gz: f12b6f2ed8283e6d7f650683e8d6ee2346b4153a856d9e0b4e81bcb0e1a44f72d1eb42e203ab47a4ab8b6d8f4068921ef5cf9c6538dec73fa77f9a862f5b205d
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ *.gem
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ pricesphere-ruby
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.1.5
@@ -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 "pricesphere/version"
2
-
1
+ require 'pricesphere/version'
2
+ require 'pricesphere/error'
3
+ require 'pricesphere/base'
4
+ require 'pricesphere/product'
3
5
  module Pricesphere
4
- # Your code goes here...
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
@@ -1,3 +1,3 @@
1
1
  module Pricesphere
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/pricesphere.gemspec CHANGED
@@ -20,4 +20,5 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "pry"
23
24
  end
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.1
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 00:00:00.000000000 Z
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.0.14
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