hungry 0.1.1 → 0.1.2
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 +5 -5
 - data/.travis.yml +0 -3
 - data/Gemfile.lock +1 -1
 - data/Rakefile +2 -2
 - data/hungry.gemspec +3 -6
 - data/lib/hungry.rb +12 -14
 - data/lib/hungry/city.rb +2 -2
 - data/lib/hungry/collection.rb +22 -22
 - data/lib/hungry/country.rb +2 -2
 - data/lib/hungry/geolocation.rb +15 -15
 - data/lib/hungry/location.rb +9 -9
 - data/lib/hungry/menu.rb +15 -15
 - data/lib/hungry/menu/category.rb +4 -4
 - data/lib/hungry/menu/dish.rb +4 -4
 - data/lib/hungry/menu/option.rb +2 -2
 - data/lib/hungry/region.rb +2 -2
 - data/lib/hungry/resource.rb +49 -35
 - data/lib/hungry/response.rb +6 -6
 - data/lib/hungry/review.rb +7 -7
 - data/lib/hungry/site.rb +13 -12
 - data/lib/hungry/tag.rb +7 -7
 - data/lib/hungry/user.rb +21 -21
 - data/lib/hungry/util.rb +13 -13
 - data/lib/hungry/venue.rb +22 -22
 - data/lib/hungry/venue/collection.rb +9 -9
 - data/lib/support/presence.rb +1 -1
 - data/spec/hungry/geolocation_spec.rb +20 -20
 - data/spec/hungry/util_spec.rb +9 -9
 - metadata +3 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 2 
     | 
    
         
            +
            SHA256:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: e23ebde7da2f1760c6504256a9520966ddb5b7cc6a1494bbe4764f590d0c4e28
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e0ba51bf6aa0ca1e3e678c5d47030c95742e9fbcedfea677a1ef565729d430a1
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: b0c46d06c571ab606b5a158dca21795cde6b858dad5c6847465977ae102b93f7fe232d8cd6227f2991c98d4233920fb6a2fddf08545b827a474bdac9e9c48001
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9339bd32031272b9dcebad2d604071007005b6202f960ba7f17c5801aa8460b721bdf803e4d11762a31841d9619b05a35e1201dd25c928a8e9dc66e679432912
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -1,6 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # SSH Key to pull private repositories:
         
     | 
| 
       2 
     | 
    
         
            -
            source_key: "LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBM0MySG13YUFIOTQrOW9pb1NSU2I4enk3OHlQemxuL0hxcEdEVjhWREllR1NseTFPCi9VUmVpRnpkcEY2eEN1Y3RRWFkvVHA3QTBxKzMrMWd5cnBuZW00SWNVYUZTZ1kxelYxZ2JQY0VWVzJlWDIxVlEKN1pDdVBIYzFkbDI1K2gvbzQ3Z0l6aWwrT3dyUTNvdFVjdE9KNzk1ckxYZlp3SVAxMDZGcU9UTEhiWVluRGJjZgptYnZzSlllQmJtcEs3YlZndGs1cTdSUW5qWHlzRE0rWndObTZmamlOZWh5QTFCdlZrVWlpM2VQN3N1Q0g0ZHVUCkNVa3hKcFg2S3RKMzRxcHhvMDhlSDBvUUdSRDkrSEZjcDdYTEdJQmhCSzZhMzJTUURJci9KRy9CSWZnSTBYVkcKL1BsbU1wUmZpdlZkaGNXQUVNQmgzVzA4VkFLbmVpTUFXVUZYMFFJREFRQUJBb0lCQUJwVzJBSVRwUUFxOWgxSAorOW5DUFdXN3ZrQTM3TXYwUFU2S1djd0dMU0hBZW1qYllyZXBsaVY1OW9uVFNocWp6U1lubnlzb2txaWhuTURVCnJEdDI3TXB0cGpXZHR1RUlxdU9vQnBvOG52RndVeHBKK29SdzZtY1JXN1B0UW5KSm52S2U4VzY0U0FHSUtiUjEKdG9TR0NkcElJVW92TEQxN2k4emxZbSsxUTJZMmpXVVRoQ1VUMDh3WE1GWlZqd3BZaWdWeGNxYXQ1NWtNcUw0RwpRZGJXam1Ldm9UMkZMbDVWVCtqOERuRStlbEFhL2plamJVbURVNkRFVVZpYzdMNTM5ZG1ZNjBZVzhxSnkvajNUCkJlbHREK252RUhQTmZEY01UMkoxQks2TVpZQjBSNXpxVmdyY0d4dkJNV3pxeUNTRTczODdpYm1Lb054OTlyV3MKT1dPTlBvRUNnWUVBOGhhbjdoWkxvalpyT3Z3UGtVOTUvckI3YWZHcFdCbkFQcUtLdUFwNTgwd3M1SmJLeXZEdwo2bWlhVFJrcW5SWU93c081ZTV4aU5teXZqVlpoZ245Wml5VGxvZWI4Y3ZkeWFPeGhqMjYxKzI4TXltYkxGcnN3CmptMEJucCswUVdKNERzbHRtT255WG1MTUdjQ2xGTDROWkRFZWZDVmJiNVlhRGNRYTdUN0lIbDhDZ1lFQTZOU00KUjdLNG5wTE0rc1hBOHhjeFVGTkxiTjBZMTVXT1pMVUREcnprVDBDOUtnYWkwd2VlYitxa0tuNUxSeVlNM0lxLwp0ZFBOL3NXb0wwZjFmRlNJcVZEL3lwNmhjWFlTaXhnSmFRZEUvZTV5dWd5M0c0RHJzc1lOMkpDMnFpdFQwOXFECloxL0IzMU9QYXZJa3dYMGF1SGpmUVB0U3hDWnZ6MmVSZ21SeDE4OENnWUJ1YUZqRUk5VHdzUUxzanNLRzBnbGcKVjVxaGNiNTYySnV0dFRHd3g4NWdZSkJrM0VTMmszWThZZUpsWVNIbkxJVWszR0MrZUU3dVpWa1hDNXREQ2RPTAp1eE1qYUpZZjFLeVFINlpLNVFJSUh0aGxnc1lDb3ZKOU1rZTMwVHhEU2FaWmtCSDAyRlZhS0pMTzkrWVI5SzlrCnoyWUkxbnpDQW1IMWYwZU1oY0o4M3dLQmdRQzkvRG9mZ3psY3c4TVpXZVpSTmZxYVplMWsvcUQzd1dTNHptK1oKUmc4eWtFd0xEL0VySzh0ZjNXSnAvallrNzJxTlIzYVp3eVFUSVd4VWNHNWpMb041VGN2N3BTZHRjd0E4bWJlTQpDVStGdVYzS2JQZTVMS0NuZHk3ektWcTBUcmlQWlgzV0MzQWljSWZWcDVMUWcrb2EzeDZsWXE2dHVnT0FoUzFaCjdlWnJSd0tCZ0F0eUdBTlkrektRa285R2lNOU9ISCtIc1ErMCtwRE5PZE5lOE4va3RLR25XSDI0bzJzTzNXWjkKMS84amtKR3MyNnhnUUg1TitQKzZXZXk4dDA5MFhyRHFFSHA1bEUyd0d4eGJSN3kwSTk5NUV2enYyU3d0c2ViUwo2STRLYXpVTTJMblJBbG5IOWdMWDhWaGJBZWIvN2xhQk9KODloQjROZGF2Y1gxZkRjcFd0Ci0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg=="
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
1 
     | 
    
         
             
            # Project settings:
         
     | 
| 
       5 
2 
     | 
    
         
             
            language: ruby
         
     | 
| 
       6 
3 
     | 
    
         
             
            rvm:
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    
    
        data/hungry.gemspec
    CHANGED
    
    | 
         @@ -1,21 +1,18 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            # -*- encoding: utf-8 -*-
         
     | 
| 
       2 
     | 
    
         
            -
            $:.push File.expand_path('../lib', __FILE__)
         
     | 
| 
       3 
     | 
    
         
            -
            require 'hungry'
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
2 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       6 
3 
     | 
    
         
             
              s.name        = 'hungry'
         
     | 
| 
       7 
     | 
    
         
            -
              s.version     =  
     | 
| 
      
 4 
     | 
    
         
            +
              s.version     = '0.1.2'
         
     | 
| 
       8 
5 
     | 
    
         
             
              s.authors     = ['Tom-Eric Gerritsen']
         
     | 
| 
       9 
6 
     | 
    
         
             
              s.email       = ['tomeric@eet.nu']
         
     | 
| 
       10 
7 
     | 
    
         
             
              s.homepage    = 'http://github.com/eet-nu/hungry'
         
     | 
| 
       11 
8 
     | 
    
         
             
              s.summary     = %q{An interface to the Eet.nu API.}
         
     | 
| 
       12 
9 
     | 
    
         
             
              s.description = %q{An interface to the Eet.nu API.}
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       14 
11 
     | 
    
         
             
              s.files         = `git ls-files`.split("\n")
         
     | 
| 
       15 
12 
     | 
    
         
             
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
       16 
13 
     | 
    
         
             
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         
     | 
| 
       17 
14 
     | 
    
         
             
              s.require_paths = ['lib']
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       19 
16 
     | 
    
         
             
              # specify any dependencies here:
         
     | 
| 
       20 
17 
     | 
    
         
             
              s.add_dependency 'httparty'
         
     | 
| 
       21 
18 
     | 
    
         
             
            end
         
     | 
    
        data/lib/hungry.rb
    CHANGED
    
    | 
         @@ -1,33 +1,31 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            $LOAD_PATH << File.expand_path('..', __FILE__)
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       3 
3 
     | 
    
         
             
            require 'support/presence'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'support/symbolize_keys'
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            module Hungry
         
     | 
| 
       7 
     | 
    
         
            -
              VERSION = '0.1.1'
         
     | 
| 
       8 
     | 
    
         
            -
              
         
     | 
| 
       9 
7 
     | 
    
         
             
              class << self
         
     | 
| 
       10 
8 
     | 
    
         
             
                attr_accessor :api_url, :credentials, :json_parser, :logger
         
     | 
| 
       11 
9 
     | 
    
         
             
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       13 
11 
     | 
    
         
             
              def self.credentials=(new_credentials = {})
         
     | 
| 
       14 
12 
     | 
    
         
             
                @credentials = new_credentials.symbolize_keys
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       16 
14 
     | 
    
         
             
                Resource.basic_auth   credentials[:username], credentials[:password]
         
     | 
| 
       17 
15 
     | 
    
         
             
                Collection.basic_auth credentials[:username], credentials[:password]
         
     | 
| 
       18 
16 
     | 
    
         
             
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
       20 
18 
     | 
    
         
             
              ### LIBRARY:
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       22 
20 
     | 
    
         
             
              # Utility:
         
     | 
| 
       23 
21 
     | 
    
         
             
              autoload :Collection,  'hungry/collection'
         
     | 
| 
       24 
22 
     | 
    
         
             
              autoload :Resource,    'hungry/resource'
         
     | 
| 
       25 
23 
     | 
    
         
             
              autoload :Util,        'hungry/util'
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       27 
25 
     | 
    
         
             
              # Helpers:
         
     | 
| 
       28 
26 
     | 
    
         
             
              autoload :Geolocation, 'hungry/geolocation'
         
     | 
| 
       29 
27 
     | 
    
         
             
              autoload :Location,    'hungry/location'
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       31 
29 
     | 
    
         
             
              # Models:
         
     | 
| 
       32 
30 
     | 
    
         
             
              autoload :City,        'hungry/city'
         
     | 
| 
       33 
31 
     | 
    
         
             
              autoload :Country,     'hungry/country'
         
     | 
| 
         @@ -39,17 +37,17 @@ module Hungry 
     | 
|
| 
       39 
37 
     | 
    
         
             
              autoload :Tag,         'hungry/tag'
         
     | 
| 
       40 
38 
     | 
    
         
             
              autoload :User,        'hungry/user'
         
     | 
| 
       41 
39 
     | 
    
         
             
              autoload :Venue,       'hungry/venue'
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       43 
41 
     | 
    
         
             
              ### EXCEPTIONS:
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       45 
43 
     | 
    
         
             
              # Exception raised when a geolocation is required, but it is not given:
         
     | 
| 
       46 
44 
     | 
    
         
             
              class GeolocationNotGiven  < StandardError; end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
       48 
46 
     | 
    
         
             
              # Exception raised when an endpoint is not specified for a resource:
         
     | 
| 
       49 
47 
     | 
    
         
             
              class EndpointNotSpecified < StandardError; end
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       51 
49 
     | 
    
         
             
              ### CONFIGURATION:
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
       53 
51 
     | 
    
         
             
              self.credentials = { username: nil, password: nil }
         
     | 
| 
       54 
52 
     | 
    
         
             
              self.api_url     = 'https://api.eet.nu/'
         
     | 
| 
       55 
53 
     | 
    
         
             
              self.json_parser = lambda do |json|
         
     | 
    
        data/lib/hungry/city.rb
    CHANGED
    
    
    
        data/lib/hungry/collection.rb
    CHANGED
    
    | 
         @@ -4,42 +4,42 @@ module Hungry 
     | 
|
| 
       4 
4 
     | 
    
         
             
              class Collection
         
     | 
| 
       5 
5 
     | 
    
         
             
                include Enumerable
         
     | 
| 
       6 
6 
     | 
    
         
             
                include HTTParty
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       8 
8 
     | 
    
         
             
                autoload :Pagination, 'hungry/collection/pagination'
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       10 
10 
     | 
    
         
             
                attr_reader :klass, :endpoint, :criteria
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       12 
12 
     | 
    
         
             
                ### CLASS METHODS:
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       14 
14 
     | 
    
         
             
                def self.get(*args)
         
     | 
| 
       15 
15 
     | 
    
         
             
                  self.base_uri Hungry.api_url
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       17 
17 
     | 
    
         
             
                  super
         
     | 
| 
       18 
18 
     | 
    
         
             
                end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       20 
20 
     | 
    
         
             
                ### INSTANCE METHODS:
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       22 
22 
     | 
    
         
             
                def initialize(klass, endpoint, criteria = {})
         
     | 
| 
       23 
23 
     | 
    
         
             
                  @klass    = klass
         
     | 
| 
       24 
24 
     | 
    
         
             
                  @endpoint = endpoint
         
     | 
| 
       25 
25 
     | 
    
         
             
                  @criteria = criteria.symbolize_keys
         
     | 
| 
       26 
26 
     | 
    
         
             
                end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       28 
28 
     | 
    
         
             
                def from_url(url)
         
     | 
| 
       29 
29 
     | 
    
         
             
                  uri     = URI.parse(url)
         
     | 
| 
       30 
30 
     | 
    
         
             
                  options = Util.params_from_uri(uri) || klass.default_criteria
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       32 
32 
     | 
    
         
             
                  self.class.new(klass, uri.path, options)
         
     | 
| 
       33 
33 
     | 
    
         
             
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       35 
35 
     | 
    
         
             
                def all(new_criteria = {})
         
     | 
| 
       36 
36 
     | 
    
         
             
                  self.class.new(klass, endpoint, criteria.merge(new_criteria))
         
     | 
| 
       37 
37 
     | 
    
         
             
                end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       39 
39 
     | 
    
         
             
                def [](index)
         
     | 
| 
       40 
40 
     | 
    
         
             
                  build_resource results[index]
         
     | 
| 
       41 
41 
     | 
    
         
             
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       43 
43 
     | 
    
         
             
                def first(n = 1)
         
     | 
| 
       44 
44 
     | 
    
         
             
                  if n == 1 && (value = results.first)
         
     | 
| 
       45 
45 
     | 
    
         
             
                    build_resource value
         
     | 
| 
         @@ -49,7 +49,7 @@ module Hungry 
     | 
|
| 
       49 
49 
     | 
    
         
             
                    end
         
     | 
| 
       50 
50 
     | 
    
         
             
                  end
         
     | 
| 
       51 
51 
     | 
    
         
             
                end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       53 
53 
     | 
    
         
             
                def count(*args)
         
     | 
| 
       54 
54 
     | 
    
         
             
                  if args.present?
         
     | 
| 
       55 
55 
     | 
    
         
             
                    super
         
     | 
| 
         @@ -57,40 +57,40 @@ module Hungry 
     | 
|
| 
       57 
57 
     | 
    
         
             
                    results.count
         
     | 
| 
       58 
58 
     | 
    
         
             
                  end
         
     | 
| 
       59 
59 
     | 
    
         
             
                end
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
       61 
61 
     | 
    
         
             
                def each(&block)
         
     | 
| 
       62 
62 
     | 
    
         
             
                  results.each do |result|
         
     | 
| 
       63 
63 
     | 
    
         
             
                    yield build_resource(result)
         
     | 
| 
       64 
64 
     | 
    
         
             
                  end
         
     | 
| 
       65 
65 
     | 
    
         
             
                end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
       67 
67 
     | 
    
         
             
                def results
         
     | 
| 
       68 
68 
     | 
    
         
             
                  @results ||= json['results']
         
     | 
| 
       69 
69 
     | 
    
         
             
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       71 
71 
     | 
    
         
             
                def results=(results)
         
     | 
| 
       72 
72 
     | 
    
         
             
                  @results = results
         
     | 
| 
       73 
73 
     | 
    
         
             
                end
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       75 
75 
     | 
    
         
             
                protected
         
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       77 
77 
     | 
    
         
             
                def build_resource(result)
         
     | 
| 
       78 
78 
     | 
    
         
             
                  resource = klass.new(result)
         
     | 
| 
       79 
79 
     | 
    
         
             
                  resource.data_source = data_source
         
     | 
| 
       80 
80 
     | 
    
         
             
                  resource
         
     | 
| 
       81 
81 
     | 
    
         
             
                end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       83 
83 
     | 
    
         
             
                def data_source
         
     | 
| 
       84 
84 
     | 
    
         
             
                  Util.uri_with_params(endpoint, criteria)
         
     | 
| 
       85 
85 
     | 
    
         
             
                end
         
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
       87 
87 
     | 
    
         
             
                def json
         
     | 
| 
       88 
88 
     | 
    
         
             
                  @json ||= Util.parse_json(response.body)
         
     | 
| 
       89 
89 
     | 
    
         
             
                end
         
     | 
| 
       90 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
       91 
91 
     | 
    
         
             
                def response
         
     | 
| 
       92 
92 
     | 
    
         
             
                  raise NoEndpointSpecified unless endpoint
         
     | 
| 
       93 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
       94 
94 
     | 
    
         
             
                  @response ||= begin
         
     | 
| 
       95 
95 
     | 
    
         
             
                    Util.log "GET: #{data_source}"
         
     | 
| 
       96 
96 
     | 
    
         
             
                    self.class.get data_source
         
     | 
    
        data/lib/hungry/country.rb
    CHANGED
    
    
    
        data/lib/hungry/geolocation.rb
    CHANGED
    
    | 
         @@ -1,27 +1,27 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Hungry
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Geolocation
         
     | 
| 
       3 
3 
     | 
    
         
             
                attr_accessor :latitude, :longitude
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       5 
5 
     | 
    
         
             
                def self.parse(input)
         
     | 
| 
       6 
6 
     | 
    
         
             
                  # input is already a Geolocation, so we can return it early:
         
     | 
| 
       7 
7 
     | 
    
         
             
                  return input if input.is_a?(self)
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                  if input.respond_to?(:geolocation)
         
     | 
| 
       10 
10 
     | 
    
         
             
                    # input has a geolocation attribute, so try to use that one first:
         
     | 
| 
       11 
     | 
    
         
            -
                    geolocation = parse(input.geolocation) 
     | 
| 
      
 11 
     | 
    
         
            +
                    geolocation = parse(input.geolocation)
         
     | 
| 
       12 
12 
     | 
    
         
             
                    return geolocation if geolocation
         
     | 
| 
       13 
13 
     | 
    
         
             
                  end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       15 
15 
     | 
    
         
             
                  coordinates = []
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       17 
17 
     | 
    
         
             
                  if input.respond_to?(:latitude) && input.respond_to?(:longitude)
         
     | 
| 
       18 
18 
     | 
    
         
             
                    # input has latitude and longitude attributes, so use those:
         
     | 
| 
       19 
19 
     | 
    
         
             
                    coordinates = [input.latitude, input.longitude]
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       21 
21 
     | 
    
         
             
                  elsif input.respond_to?(:lat) && input.respond_to?(:lng)
         
     | 
| 
       22 
22 
     | 
    
         
             
                    # input has lat and lng attributes, so use those:
         
     | 
| 
       23 
23 
     | 
    
         
             
                    coordinates = [input.lat, input.lng]
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       25 
25 
     | 
    
         
             
                  elsif input.respond_to?(:match)
         
     | 
| 
       26 
26 
     | 
    
         
             
                    # Example: "50.8469397,5.6927505"
         
     | 
| 
       27 
27 
     | 
    
         
             
                    #
         
     | 
| 
         @@ -30,40 +30,40 @@ module Hungry 
     | 
|
| 
       30 
30 
     | 
    
         
             
                    if match = input.match(/^([0-9\.]+),\s?([0-9\.]+)$/)
         
     | 
| 
       31 
31 
     | 
    
         
             
                      coordinates = [match[1], match[2]]
         
     | 
| 
       32 
32 
     | 
    
         
             
                    end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       34 
34 
     | 
    
         
             
                  elsif input.respond_to?(:keys)
         
     | 
| 
       35 
35 
     | 
    
         
             
                    # Example: { latitude: 50.8469397, longitude: 5.6927505 }
         
     | 
| 
       36 
36 
     | 
    
         
             
                    #
         
     | 
| 
       37 
37 
     | 
    
         
             
                    # input is a Hash, so we can extract values with the keys:
         
     | 
| 
       38 
38 
     | 
    
         
             
                    coordinates = [input[:latitude] || input[:lat], input[:longitude] || input[:lng]]
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
       40 
40 
     | 
    
         
             
                  elsif input.respond_to?(:[])
         
     | 
| 
       41 
41 
     | 
    
         
             
                    # Example: [50.8469397, 5.6927505]
         
     | 
| 
       42 
42 
     | 
    
         
             
                    #
         
     | 
| 
       43 
43 
     | 
    
         
             
                    # input is an Array, so we need the first and second value:
         
     | 
| 
       44 
44 
     | 
    
         
             
                    coordinates = input[0], input[1]
         
     | 
| 
       45 
45 
     | 
    
         
             
                  end
         
     | 
| 
       46 
     | 
    
         
            -
             
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
       47 
47 
     | 
    
         
             
                  coordinates = coordinates.map(&:presence).compact
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       49 
49 
     | 
    
         
             
                  if coordinates.length == 2 && coordinates.all? { |coordinate| Util.is_numeric?(coordinate) }
         
     | 
| 
       50 
50 
     | 
    
         
             
                    new(*coordinates)
         
     | 
| 
       51 
51 
     | 
    
         
             
                  end
         
     | 
| 
       52 
52 
     | 
    
         
             
                end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       54 
54 
     | 
    
         
             
                def initialize(latitude, longitude)
         
     | 
| 
       55 
55 
     | 
    
         
             
                  self.latitude  = latitude.to_f
         
     | 
| 
       56 
56 
     | 
    
         
             
                  self.longitude = longitude.to_f
         
     | 
| 
       57 
57 
     | 
    
         
             
                end
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
       59 
59 
     | 
    
         
             
                def to_s
         
     | 
| 
       60 
60 
     | 
    
         
             
                  [latitude, longitude].join(',')
         
     | 
| 
       61 
61 
     | 
    
         
             
                end
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
       63 
63 
     | 
    
         
             
                def [](key)
         
     | 
| 
       64 
64 
     | 
    
         
             
                  to_h.send(:[], key)
         
     | 
| 
       65 
65 
     | 
    
         
             
                end
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
       67 
67 
     | 
    
         
             
                def []=(key, value)
         
     | 
| 
       68 
68 
     | 
    
         
             
                  case key.to_sym
         
     | 
| 
       69 
69 
     | 
    
         
             
                  when :latitude
         
     | 
| 
         @@ -72,7 +72,7 @@ module Hungry 
     | 
|
| 
       72 
72 
     | 
    
         
             
                    self.longitude = value.to_f
         
     | 
| 
       73 
73 
     | 
    
         
             
                  end
         
     | 
| 
       74 
74 
     | 
    
         
             
                end
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
       76 
76 
     | 
    
         
             
                def to_h
         
     | 
| 
       77 
77 
     | 
    
         
             
                  {
         
     | 
| 
       78 
78 
     | 
    
         
             
                    latitude:  latitude,
         
     | 
    
        data/lib/hungry/location.rb
    CHANGED
    
    | 
         @@ -1,24 +1,24 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Hungry
         
     | 
| 
       2 
2 
     | 
    
         
             
              class Location < Resource
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       4 
4 
     | 
    
         
             
                self.endpoint = '/locations'
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       6 
6 
     | 
    
         
             
                ### RESOURCES:
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       8 
8 
     | 
    
         
             
                has_many :venues, 'Hungry::Venue'
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       10 
10 
     | 
    
         
             
                has_many :nearby_venues, 'Hungry::Venue'
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       12 
12 
     | 
    
         
             
                has_many :tags, 'Hungry::Tag'
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       14 
14 
     | 
    
         
             
                ### ATTRIBUTES:
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       16 
16 
     | 
    
         
             
                              ### Location:
         
     | 
| 
       17 
17 
     | 
    
         
             
                attr_accessor :id, :name, :type, :url, :geolocation,
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
       19 
19 
     | 
    
         
             
                              ### Utility:
         
     | 
| 
       20 
20 
     | 
    
         
             
                              :resources, :counters
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       22 
22 
     | 
    
         
             
                def geolocation=(new_coordinates)
         
     | 
| 
       23 
23 
     | 
    
         
             
                  @geolocation = Geolocation.parse(new_coordinates).tap do |geo|
         
     | 
| 
       24 
24 
     | 
    
         
             
                    attributes[:geolocation] = geo
         
     | 
    
        data/lib/hungry/menu.rb
    CHANGED
    
    | 
         @@ -3,43 +3,43 @@ module Hungry 
     | 
|
| 
       3 
3 
     | 
    
         
             
                autoload :Category, 'hungry/menu/category'
         
     | 
| 
       4 
4 
     | 
    
         
             
                autoload :Dish,     'hungry/menu/dish'
         
     | 
| 
       5 
5 
     | 
    
         
             
                autoload :Option,   'hungry/menu/option'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       7 
7 
     | 
    
         
             
                self.endpoint = '/menus'
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       9 
9 
     | 
    
         
             
                ### RESOURCES:
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       11 
11 
     | 
    
         
             
                belongs_to :venue, 'Hungry::Venue'
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       13 
13 
     | 
    
         
             
                ### ATTRIBUTES:
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       15 
15 
     | 
    
         
             
                              ### Menu:
         
     | 
| 
       16 
     | 
    
         
            -
                attr_accessor :id, :name, :type, :attachment,
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
                attr_accessor :id, :name, :type, :attachment, :pages,
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
       18 
18 
     | 
    
         
             
                              ### Associations:
         
     | 
| 
       19 
19 
     | 
    
         
             
                              :categories, :venue,
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       21 
21 
     | 
    
         
             
                              ### Utility:
         
     | 
| 
       22 
22 
     | 
    
         
             
                              :created_at, :updated_at
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
       24 
24 
     | 
    
         
             
                lazy_load :venue
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
       26 
26 
     | 
    
         
             
                def managed?
         
     | 
| 
       27 
27 
     | 
    
         
             
                  type == 'managed' || categories.present?
         
     | 
| 
       28 
28 
     | 
    
         
             
                end
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
       30 
30 
     | 
    
         
             
                def download?
         
     | 
| 
       31 
31 
     | 
    
         
             
                  type == 'download'
         
     | 
| 
       32 
32 
     | 
    
         
             
                end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
       34 
34 
     | 
    
         
             
                def venue=(venue_attributes)
         
     | 
| 
       35 
35 
     | 
    
         
             
                  @venue = Hungry::Venue.new(venue_attributes)
         
     | 
| 
       36 
36 
     | 
    
         
             
                end
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       38 
38 
     | 
    
         
             
                def categories
         
     | 
| 
       39 
39 
     | 
    
         
             
                  @categories ||= []
         
     | 
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         
             
                lazy_load :categories
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       43 
43 
     | 
    
         
             
                def categories=(new_categories)
         
     | 
| 
       44 
44 
     | 
    
         
             
                  @categories = new_categories.map do |attributes|
         
     | 
| 
       45 
45 
     | 
    
         
             
                    category = Menu::Category.new(attributes)
         
     | 
| 
         @@ -48,6 +48,6 @@ module Hungry 
     | 
|
| 
       48 
48 
     | 
    
         
             
                    category
         
     | 
| 
       49 
49 
     | 
    
         
             
                  end
         
     | 
| 
       50 
50 
     | 
    
         
             
                end
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       52 
52 
     | 
    
         
             
              end
         
     | 
| 
       53 
53 
     | 
    
         
             
            end
         
     |