rsqoot 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjMzNmUyNTgxOTMwOWMxYTEwZjgxMjI2ODZjNDcwYjE1NzFkNDdlYw==
4
+ NzEwOThmZTFmMzUyMjI2ZjE3YzUwMDAwNWQ0YmY5NjUwNWE4ZGFmYQ==
5
5
  data.tar.gz: !binary |-
6
- NzUyOWVhMzQ5ZWYyZWVhZGIzNTZhODQ2OTg4ODAwY2Y0ZmQ0NzdhOQ==
6
+ MmJmNzM4Njc3OGEzMTY3NDE4ZTc3YjMyODQyMmU1MmQ0NTRmMDI2Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YTBjNzA4MDY5ZWQ4M2FmNjNjODg2YzAxMjBhMTA4OWMxZjViMzUxZDgzYmMw
10
- ZDEwNjQwNTJiMmQwYjcwOTQ5Y2M4OGZiYzgyMmIzNTI2Yjg5OTEzMGMwZmRj
11
- ZmJkYWNkN2FjMzJiNDI1OWI0M2JkODM0N2E4ODA4N2NjYWM0YzY=
9
+ M2Y3YjljNmZhNTU4MDMyMDgzNTUzMjE1NDNjNWUwYTlmODkwMzA4NzNlZGY0
10
+ ODEwYzJlNWYxMGIwMGIyZDliMmJjYzc0MDYzYTY5Y2FkMjc3MzhlNjRjZjJh
11
+ M2QxMGQ4NzYzZTExYTRmYjA2MzBkYzgwYjFkYmRhNjRmMmUwMjc=
12
12
  data.tar.gz: !binary |-
13
- MTM0ZjBiN2VhOTIzMGMyYmJlMzUwZTQxMGM3ZWUxMDBiZjdlMzg3ODIyOTU4
14
- MjY4ZjczNzY4NjE5YmQxYTFiZjk1MzcwYzk1ZjU0MWM2MTcwN2YzMDVlZDFh
15
- NDM4YjUzYzZkNmFiMWRkYzkyNzU3NWUyZjNkYzBiM2Q4M2QxZjQ=
13
+ M2QxNzE1NTRhNDI3M2RkNWM0YzQ3ZjAwYWQwZTVlZDNiYmNiZjQ0ODU1Y2Nk
14
+ NTlkNzYwMzJjY2JmZTUzM2EzOGIzYzcyZWQ4ODJkYjk1YjI0NjhhNmM4ZDdi
15
+ MmZkNTI2OWQ0NTcwZmFjMTNmYzI0ZWNhNmJiNTk5MGQ2ZGY1M2Q=
data/README.md CHANGED
@@ -9,7 +9,9 @@ To get the list of available parameters kindly check out [API V2](http://docs.sq
9
9
 
10
10
  Add this line to your application's Gemfile:
11
11
 
12
- gem 'rsqoot'
12
+ ```ruby
13
+ gem 'rsqoot'
14
+ ```
13
15
 
14
16
  And then execute:
15
17
 
@@ -27,7 +29,7 @@ Or install it yourself as:
27
29
  private_api_key # YOUR PRIVATE API KEY
28
30
  base_api_url # 'https://api.sqoot.com' by default
29
31
  authentication_method # :header by default
30
- read_timeout # 20 by default
32
+ read_timeout # 60.seconds by default
31
33
  expired_in # 1.hour by default
32
34
 
33
35
  There’s a handy generator that generates the default configuration file into config/initializers directory. Run the following generator command, then edit the generated file.
@@ -36,58 +38,64 @@ There’s a handy generator that generates the default configuration file into c
36
38
 
37
39
  Then, you should be able to use `SqootClient` to search deals. For example:
38
40
 
39
- SqootClient.deals(query: 'Home')
41
+ ```ruby
42
+ SqootClient.deals(query: 'Home')
43
+ ```
40
44
 
41
45
  You can also change your configuration in your own instance, such as below:
42
46
 
43
- sqoot ||= RSqoot::Client.new(public_api_key: "YOUR PUBLIC API KEY", private_api_key: 'YOUR PRIVATE API KEY')
47
+ ```ruby
48
+ sqoot ||= RSqoot::Client.new(public_api_key: "YOUR PUBLIC API KEY", private_api_key: 'YOUR PRIVATE API KEY')
49
+ ```
44
50
 
45
51
  #### Basic Usages
46
52
 
47
- sqoot ||= RSqoot::Client.new
53
+ ```ruby
54
+ sqoot ||= RSqoot::Client.new
48
55
 
49
- sqoot.deals
50
- #=> returns a list of deals
56
+ sqoot.deals
57
+ #=> returns a list of deals
51
58
 
52
- sqoot.deals(query: 'travel')
59
+ sqoot.deals(query: 'travel')
53
60
 
54
- sqoot.deals(location: 'Chicago')
61
+ sqoot.deals(location: 'Chicago')
55
62
 
56
- sqoot.deals(location: 'Chicago', per_page: 10)
63
+ sqoot.deals(location: 'Chicago', per_page: 10)
57
64
 
58
- sqoot.deals(location: 'Chicago', per_page: 10, categories: 'health-beauty', page: 2)
65
+ sqoot.deals(location: 'Chicago', per_page: 10, categories: 'health-beauty', page: 2)
59
66
 
60
- sqoot.deals(price_at_least: 10, order: :commission_desc)
67
+ sqoot.deals(price_at_least: 10, order: :commission_desc)
61
68
 
62
- sqoot.impression(1555288, geometry: '250x250C')
63
- # => return deal_id 1555288's image url which size is 250x250
69
+ sqoot.impression(1555288, geometry: '250x250C')
70
+ # => return deal_id 1555288's image url which size is 250x250
64
71
 
65
- sqoot.deal(1555288).url
66
- # => return a click url which will redirect to another url
72
+ sqoot.deal(1555288).url
73
+ # => return a click url which will redirect to another url
67
74
 
68
- sqoot.providers
69
- # => returns a list of providers
75
+ sqoot.providers
76
+ # => returns a list of providers
70
77
 
71
- sqoot.providers(query: 'Groupon')
78
+ sqoot.providers(query: 'Groupon')
72
79
 
73
- sqoot.categories
74
- # => returns a list of categories
80
+ sqoot.categories
81
+ # => returns a list of categories
75
82
 
76
- sqoot.categories(query: 'home')
77
- sqoot.categories(query: 'home&health')
78
- sqoot.categories(query: 'home,health')
83
+ sqoot.categories(query: 'home')
84
+ sqoot.categories(query: 'home&health')
85
+ sqoot.categories(query: 'home,health')
79
86
 
80
- sqoot.commissions
81
- # => returns current month commissions
87
+ sqoot.commissions
88
+ # => returns current month commissions
82
89
 
83
- sqoot.commissions(to: '2012-01-01', from: '2012-01-20')
84
- # => returns commissions using date_range :to & :from
90
+ sqoot.commissions(to: '2012-01-01', from: '2012-01-20')
91
+ # => returns commissions using date_range :to & :from
85
92
 
86
- sqoot.clicks
87
- # => returns real-time clicks from the event request limit of 1000
93
+ sqoot.clicks
94
+ # => returns real-time clicks from the event request limit of 1000
88
95
 
89
- sqoot.clicks(to: '2012-01-01', from: '2012-01-20')
90
- # => returns clicks using date_range :to & :from
96
+ sqoot.clicks(to: '2012-01-01', from: '2012-01-20')
97
+ # => returns clicks using date_range :to & :from
98
+ ```
91
99
 
92
100
  #### Auto Cache
93
101
 
@@ -95,22 +103,26 @@ Please notice that each query with above methods will automaticlly cache the res
95
103
 
96
104
  If you want to fetch the newest records each time, you can do as below:
97
105
 
98
- sqoot.deals(location: 'Chicago', expired_in: 1.second)
106
+ ```ruby
107
+ sqoot.deals(location: 'Chicago', expired_in: 1.second)
108
+ ```
99
109
 
100
110
  By this, it will update the cache by each query.
101
111
 
102
112
  #### Auto increment for deals
103
113
 
104
- sqoot.total_sqoot_deals(query: 'Home', page: 2, category_slugs: 'US')
105
- # For this method, it will cache all the pages for current query options, the more you query the more it will store until reach the end.
114
+ ```ruby
115
+ sqoot.total_sqoot_deals(query: 'Home', page: 2, category_slugs: 'US')
116
+ # For this method, it will cache all the pages for current query options, the more you query the more it will store until reach the end.
106
117
 
107
- # For example:
108
- sqoot.total_sqoot_deals(query: 'Home', page: 1, per_page: 20, category_slugs: 'US').count
109
- # => 20 records
110
- sqoot.total_sqoot_deals(query: 'Home', page: 2, per_page: 20, category_slugs: 'US').count
111
- # => 40 records
118
+ # For example:
119
+ sqoot.total_sqoot_deals(query: 'Home', page: 1, per_page: 20, category_slugs: 'US').count
120
+ # => 20 records
121
+ sqoot.total_sqoot_deals(query: 'Home', page: 2, per_page: 20, category_slugs: 'US').count
122
+ # => 40 records
112
123
 
113
- # But once you change your query options, it will re-cache the records.
124
+ # But once you change your query options, it will re-cache the records.
125
+ ```
114
126
 
115
127
 
116
128
  ## Contributing
@@ -1,10 +1,10 @@
1
1
  RSqoot.configure do |config|
2
- # config.public_api_key = 'YOUR PUBLIC API KEY'
3
- # config.private_api_key = 'YOUR PRIVATE API KEY'
4
- # config.base_api_url = 'https://api.sqoot.com'
2
+ # config.public_api_key = 'YOUR PUBLIC API KEY'
3
+ # config.private_api_key = 'YOUR PRIVATE API KEY'
4
+ # config.base_api_url = 'https://api.sqoot.com'
5
5
  # config.authentication_method = :header
6
- # config.read_timeout = 20
7
- # config.expired_in = 1.hour
6
+ # config.read_timeout = 60.seconds
7
+ # config.expired_in = 1.hour
8
8
  end
9
9
 
10
10
  SqootClient ||= RSqoot::Client.new
@@ -3,12 +3,12 @@ module RSqoot
3
3
 
4
4
  # Retrieve a list of categories base on the following parameters
5
5
  #
6
- # @return [Hashie::Mash] category list
6
+ # @return [RSqoot::SqootCategory] category list
7
7
  def categories(options={})
8
8
  options = update_by_expire_time options
9
9
  query = options.delete(:query)
10
10
  if categories_not_latest?(options)
11
- @rsqoot_categories = get('categories', options)
11
+ @rsqoot_categories = get('categories', options, SqootCategory)
12
12
  @rsqoot_categories = @rsqoot_categories.categories.map(&:category) if @rsqoot_categories
13
13
  end
14
14
  query.present? ? query_categories(query) : @rsqoot_categories
data/lib/rsqoot/click.rb CHANGED
@@ -6,11 +6,11 @@ module RSqoot
6
6
  # @param [String] :to Start date
7
7
  # @param [String] :from End date
8
8
  #
9
- # @return [Hashie::Mash]
9
+ # @return [RSqoot::SqootClick]
10
10
  def clicks(options={})
11
11
  options = update_by_expire_time options
12
12
  if clicks_not_latest?(options)
13
- @rsqoot_clicks = get('clicks', options)
13
+ @rsqoot_clicks = get('clicks', options, SqootClick)
14
14
  @rsqoot_clicks = @rsqoot_clicks.clicks if @rsqoot_clicks
15
15
  end
16
16
  @rsqoot_clicks
@@ -6,11 +6,11 @@ module RSqoot
6
6
  # @param [String] :to Start date
7
7
  # @param [String] :from End date
8
8
  #
9
- # @return [Hashie::Mash]
9
+ # @return [RSqoot::SqootCommission]
10
10
  def commissions(options={})
11
11
  options = update_by_expire_time options
12
12
  if commissions_not_latest?(options)
13
- @rsqoot_commissions = get('commissions', options)
13
+ @rsqoot_commissions = get('commissions', options, SqootCommission)
14
14
  @rsqoot_commissions = @rsqoot_commissions.commissions if @rsqoot_commissions
15
15
  end
16
16
  @rsqoot_commissions
data/lib/rsqoot/deal.rb CHANGED
@@ -12,7 +12,7 @@ module RSqoot
12
12
  options = update_by_expire_time options
13
13
  if deals_not_latest?(options)
14
14
  uniq = !!options.delete(:uniq)
15
- @rsqoot_deals = get('deals', options) || []
15
+ @rsqoot_deals = get('deals', options, SqootDeal) || []
16
16
  @rsqoot_deals = @rsqoot_deals.deals.map(&:deal) if !@rsqoot_deals.empty?
17
17
  @rsqoot_deals = uniq_deals(@rsqoot_deals) if uniq
18
18
  end
@@ -24,7 +24,7 @@ module RSqoot
24
24
  def deal(id, options={})
25
25
  options = update_by_expire_time options
26
26
  if deal_not_latest?(id)
27
- @rsqoot_deal = get("deals/#{id}", options)
27
+ @rsqoot_deal = get("deals/#{id}", options, SqootDeal)
28
28
  @rsqoot_deal = @rsqoot_deal.deal if @rsqoot_deal
29
29
  end
30
30
  @rsqoot_deal
data/lib/rsqoot/helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'hashie/mash'
1
2
  module RSqoot
2
3
  module Helper
3
4
 
@@ -39,6 +40,17 @@ module RSqoot
39
40
  end
40
41
  base.class_eval { private ('query_' + name).to_sym }
41
42
  end
43
+
44
+ # Add Wrappers: Deal, Category, Commission, Merchant, Provider, Click
45
+ [ 'SqootDeal',
46
+ 'SqootCategory',
47
+ 'SqootCommission',
48
+ 'SqootMerchant',
49
+ 'SqootProvider',
50
+ 'SqootClick'].each do |class_name|
51
+ new_class = Class.new(::Hashie::Mash)
52
+ RSqoot.const_set class_name, new_class
53
+ end
42
54
  end
43
55
 
44
56
  # Add expired time functionality to this gem
@@ -9,7 +9,7 @@ module RSqoot
9
9
  def merchant(id, options={})
10
10
  options = update_by_expire_time options
11
11
  if merchant_not_latest?(id)
12
- @rsqoot_merchant = get("merchants/#{id}", options)
12
+ @rsqoot_merchant = get("merchants/#{id}", options, SqootMerchant)
13
13
  @rsqoot_merchant = @rsqoot_merchant.merchant if @rsqoot_merchant
14
14
  end
15
15
  @rsqoot_merchant
@@ -2,12 +2,12 @@ module RSqoot
2
2
  module Provider
3
3
  # Retrieve a list of providers base on the following parameters
4
4
  #
5
- # @return [Hashie::Mash]
5
+ # @return [RSqoot::SqootProvider]
6
6
  def providers(options={})
7
7
  options = update_by_expire_time options
8
8
  query = options.delete(:query)
9
9
  if providers_not_latest?(options)
10
- @rsqoot_providers = get('providers', options)
10
+ @rsqoot_providers = get('providers', options, SqootProvider)
11
11
  @rsqoot_providers = @rsqoot_providers.providers.map(&:provider) if @rsqoot_providers
12
12
  end
13
13
  query.present? ? query_providers(query) : @rsqoot_providers
@@ -1,15 +1,14 @@
1
1
  require 'open-uri'
2
- require 'hashie/mash'
3
2
  require 'json'
4
3
 
5
4
  module RSqoot
6
5
  module Request
7
6
 
8
- def get(path, opts = {})
7
+ def get(path, opts = {}, wrapper = ::Hashie::Mash)
9
8
  uri, headers = url_generator(path, opts)
10
9
  begin
11
10
  json = JSON.parse uri.open(headers).read
12
- result = ::Hashie::Mash.new json
11
+ result = wrapper.new json
13
12
  @query_options = result.query
14
13
  result
15
14
  rescue
@@ -1,3 +1,3 @@
1
1
  module RSqoot
2
- VERSION = '0.4.2'
2
+ VERSION = '0.5.0'
3
3
  end
data/lib/rsqoot.rb CHANGED
@@ -21,7 +21,7 @@ module RSqoot
21
21
  def load_defaults
22
22
  self.base_api_url ||= "https://api.sqoot.com"
23
23
  self.authentication_method = :header
24
- self.read_timeout = 60
24
+ self.read_timeout = 60.seconds
25
25
  self.expired_in = 1.hour
26
26
  end
27
27
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsqoot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Liu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-06 00:00:00.000000000 Z
11
+ date: 2013-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie