dagjeweg 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.travis.yml +7 -0
- data/.yardopts +2 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +90 -0
- data/Rakefile +9 -0
- data/dagjeweg.gemspec +30 -0
- data/lib/dagjeweg/config.rb +35 -0
- data/lib/dagjeweg/dagjeweg_error.rb +8 -0
- data/lib/dagjeweg/engine.rb +13 -0
- data/lib/dagjeweg/review.rb +21 -0
- data/lib/dagjeweg/tip.rb +141 -0
- data/lib/dagjeweg/version.rb +3 -0
- data/lib/dagjeweg.rb +41 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/tip_spec.rb +108 -0
- metadata +192 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1886e6023a84dfc6a33cf9443bc27b31371478f3
|
4
|
+
data.tar.gz: fae38479a20d045689dfe443bd032c024177eae7
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6f16c8e215799861f7c510ad51abe11ca453be42f79dfab2f0715228c599b2a3e1413adbbcf087499de6ae6fe7de61dba89e3ee2565bb028275061012a6ad352
|
7
|
+
data.tar.gz: fb1c25667e1a82401e1ea2fb4861044e355cac011954406e8f40cf39add0acfc7f21e66405eb7f36be024d5d670d1ce3e164ed56c91dce313ca33525bee04470
|
data/.gitignore
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.DS_Store
|
4
|
+
.bundle
|
5
|
+
.config
|
6
|
+
.yardoc
|
7
|
+
Gemfile.lock
|
8
|
+
InstalledFiles
|
9
|
+
_yardoc
|
10
|
+
coverage
|
11
|
+
lib/bundler/man
|
12
|
+
pkg
|
13
|
+
doc
|
14
|
+
rdoc
|
15
|
+
spec/reports
|
16
|
+
test/tmp
|
17
|
+
test/version_tmp
|
18
|
+
tmp
|
19
|
+
spec/vcr_cassettes
|
20
|
+
test-credentials.yaml
|
data/.travis.yml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
language: ruby
|
2
|
+
script: bundle exec rake --trace
|
3
|
+
rvm:
|
4
|
+
- '2.0'
|
5
|
+
env:
|
6
|
+
global:
|
7
|
+
secure: eycyuXZV5Yj730phRf+ZTL2qGCpyvDMhLoUj/e4r1/LRw/oDJHu/5tOcEou8K891A7rPDK/vYVNhiqiqQ5qCoG3jVCo9DwYs3a2dNsN0ZwjGfxWXH8j0hzKSmmHpygUrM5JsEZs4lbVMg7RZbrsAgLQ4t5p4ZwhYmvruzDOMoBxp+YZvZWY07OF3d2xkRqsLnbxxoaUAEnQbii0Ar+0xz4+++knh+7bzAG2Ms4okNyTCiW1Oter5qSIWg3HOouEu8HuYRp2pLW9AVTQaRLH8/rjceLHU6YvoUAL4kmpvhFc8aKrkaoZZVrSNX5y69RBRv/PZ5FYHEXTe+iTKhs5uiCEF+LqtksjR4510rKRmEsc1xrur49IXQMMtOhmEr7w/GiR7TMupn4dc9jR+CTYdVruGHqvUYUaKtcDbZe+WzAqJaX4W7IAeJPmTmEPvkp0HVzmBaUlv0lx3AocTmQGClBfM0nfFA0NqHciLy3Sb8gp/r2UUcwR7p2vVwNc87hJoq51txFJTHFhSrg+XHF/g757SDDx5oGFgL5l9tuKFTCFy1hs5vbzoniOMGoyHLZLTjMucRQGp0Y8gc3Scb70E+dABvu2yQfFpvgiJFmHwGaSmicaE2vucxBx6ySxTtO1ZQPkptzB8PAHTDKm/uZ+DqtESHdecuQkHswEI0fsT/54=
|
data/.yardopts
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Henk Meijer
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,90 @@
|
|
1
|
+
# Dagjeweg
|
2
|
+
[![Build Status](https://secure.travis-ci.org/henkm/dagjeweg.png)](http://travis-ci.org/henkm/dagjeweg)
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/dagjeweg.svg)](http://badge.fury.io/rb/dagjeweg)
|
4
|
+
[![Dependency Status](https://gemnasium.com/henkm/dagjeweg.svg)](https://gemnasium.com/henkm/dagjeweg)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/henkm/dagjeweg/badges/gpa.svg)](https://codeclimate.com/github/henkm/dagjeweg)
|
6
|
+
|
7
|
+
Met deze gem kun je eenvoudig data opvragen via de DagjeWeg.NL API. *Let op:* het is een _read only_ API, dus het is niet mogelijk om data aan te passen.
|
8
|
+
|
9
|
+
## Installatie
|
10
|
+
|
11
|
+
Voeg deze regel toe aan je Gemfile:
|
12
|
+
|
13
|
+
gem 'dagjeweg'
|
14
|
+
|
15
|
+
En voer uit:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
Of installeer het zelf:
|
20
|
+
|
21
|
+
$ gem install dagjeweg
|
22
|
+
|
23
|
+
## Gebruik
|
24
|
+
|
25
|
+
Mogelijkheden:
|
26
|
+
- Tip zoeken op naam
|
27
|
+
- Alle tips voor een plaatsnaam opvragen
|
28
|
+
- Tips in een straal van x kilometer van een andere tip opvragen
|
29
|
+
- Lijst met genres opvragen
|
30
|
+
- Lijst met rubrieken opvragen
|
31
|
+
- Lijst met tips per genre of rubriek
|
32
|
+
- Recencies bij een tip opvragen
|
33
|
+
|
34
|
+
## Informatie
|
35
|
+
|
36
|
+
De volgende velden kunnen worden opgevraagd van iedere tip:
|
37
|
+
|
38
|
+
|Naam|Type|Omschrijving|
|
39
|
+
|----|----|-------------|
|
40
|
+
|id|Integer|DagjeWeg.NL ID, correspondeert met URL op www.dagjeweg.nl|
|
41
|
+
|name|String|Naam van het uitstapje|
|
42
|
+
|google_name|String|SEO geoptimaliseerde naam|
|
43
|
+
|description|Text|Korte omschrijving|
|
44
|
+
|long_description|Text|Langere omschrijving (soms met HTML)|
|
45
|
+
|genre|String|Genre|
|
46
|
+
|address|String|Adres|
|
47
|
+
|city|String|Plaatsnaam|
|
48
|
+
|email|String|E-mail adres|
|
49
|
+
|phone|String|Telefoonnummer|
|
50
|
+
|url|String|URL van het uitstapje|
|
51
|
+
|dwurl|String|URL van het uitstapje op DagjeWeg.NL|
|
52
|
+
|longitude|Float|Longitude coordinaat|
|
53
|
+
|latitude|Float|Latitude coordinaat|
|
54
|
+
|period|String|Geopend in periode (hele jaar, zomer,etc.)|
|
55
|
+
|ma, di, wo, do, vr, za, zo|Boolean|Open op deze dagen|
|
56
|
+
|from_time|String|Open vanaf (bijv. "10:00")|
|
57
|
+
|until_time|String|Open tot|
|
58
|
+
|open_comment|Text|Opmerking over openingstijden|
|
59
|
+
|price|Integer|Reguliere prijs in centen|
|
60
|
+
|price_kids|Integer|Kinderprijs in centen|
|
61
|
+
|price_toddlers|Integer|Baby/Peuterprijs in centen|
|
62
|
+
|price_seniors|Integer|Seniorenprijs in centen|
|
63
|
+
|show_price|String|Alle prijzen in HTML formaat|
|
64
|
+
|accessible|Boolean|Toengankelijk voor mindervaliden|
|
65
|
+
|accessible_comment|Text|Opmerkingen over toengankelijkheid|
|
66
|
+
|wheelchair|Boolean|Rolstoelvoorzieningen|
|
67
|
+
|wheelchair_toilet|Boolean|Invalidentoilet|
|
68
|
+
|number_of_reviews|Integer|Aantal beoordelingen|
|
69
|
+
|show_image|String|URL naar afbeelding (voorkeur)|
|
70
|
+
|image|String|evt. URL naar afbeelding|
|
71
|
+
|image2 .. image13|String|evt. URL naar afbeelding|
|
72
|
+
|distance|Decimal|Afstand naar dit uitstapje (alleen bij #near en #nearby)|
|
73
|
+
|
74
|
+
|
75
|
+
## Voorbeelden
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
# Zoek 20 uitstapjes in de buurt van Amsterdam centrum
|
79
|
+
@tips = Dagjeweg::Tip.near(52.3702160, 4.8951680, 20)
|
80
|
+
|
81
|
+
# Zoek uitstapjes in een straal van 5km van een ander uitstapje
|
82
|
+
@tips.first.nearby(5)
|
83
|
+
|
84
|
+
# Vraag reviews van een uitstapje op
|
85
|
+
@reviews = DagjeWeg::Tip.find(22).reviews
|
86
|
+
```
|
87
|
+
|
88
|
+
## API Key
|
89
|
+
|
90
|
+
Voor het gebruik van deze gem heb je een API Key nodig van DagjeWeg.NL. Een API Key kun je aanvragen door een verzoek te sturen naar redactie@dagjeweg.nl.
|
data/Rakefile
ADDED
data/dagjeweg.gemspec
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'dagjeweg/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "dagjeweg"
|
8
|
+
spec.version = Dagjeweg::VERSION
|
9
|
+
spec.authors = ["Henk Meijer"]
|
10
|
+
spec.email = ["meijerhenk@gmail.com"]
|
11
|
+
spec.description = %q{Communiceer met de API van DagjeWeg.NL en haal informatie op over dagjes weg}
|
12
|
+
spec.summary = %q{Communiceer met de API van DagjeWeg.NL en haal informatie op over dagjes weg}
|
13
|
+
spec.homepage = "http://www.dagjeweg.nl"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rspec"
|
23
|
+
spec.add_development_dependency "vcr"
|
24
|
+
spec.add_development_dependency "fakeweb"
|
25
|
+
spec.add_development_dependency "coveralls"
|
26
|
+
spec.add_development_dependency "simplecov"
|
27
|
+
spec.add_development_dependency "yard"
|
28
|
+
spec.add_development_dependency "redcarpet", "~> 1" # for documentation
|
29
|
+
spec.add_development_dependency "github-markup"
|
30
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
#
|
2
|
+
# Configuration object for storing some parameters required for making transactions
|
3
|
+
#
|
4
|
+
module Dagjeweg::Config
|
5
|
+
class << self
|
6
|
+
# @return [String] Your Dagjeweg API Key
|
7
|
+
# @note The is a required parameter.
|
8
|
+
attr_accessor :api_key
|
9
|
+
|
10
|
+
|
11
|
+
# Set's the default value's to nil and false
|
12
|
+
# @return [Hash] configuration options
|
13
|
+
def init!
|
14
|
+
@defaults = {
|
15
|
+
:@api_key => nil,
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
# Resets the value's to there previous value (instance_variable)
|
20
|
+
# @return [Hash] configuration options
|
21
|
+
def reset!
|
22
|
+
@defaults.each { |key, value| instance_variable_set(key, value) }
|
23
|
+
end
|
24
|
+
|
25
|
+
# Set's the new value's as instance variables
|
26
|
+
# @return [Hash] configuration options
|
27
|
+
def update!
|
28
|
+
@defaults.each do |key, value|
|
29
|
+
instance_variable_set(key, value) unless instance_variable_defined?(key)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
init!
|
34
|
+
reset!
|
35
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module DagjeWeg
|
2
|
+
#
|
3
|
+
# Simpel extend on the +Rails::Engine+ to add support for a new config section within
|
4
|
+
# the environment configs
|
5
|
+
#
|
6
|
+
# @example default
|
7
|
+
# # /config/environments/development.rb
|
8
|
+
# config.dagjeweg.api_key = "12343465sdfgsadr324"
|
9
|
+
#
|
10
|
+
class Engine < Rails::Engine
|
11
|
+
config.dagjeweg = Docdata::Config
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Dagjeweg
|
2
|
+
|
3
|
+
class Review
|
4
|
+
attr_accessor :tip_id,:title, :reviewer, :body, :duration, :rating, :review_date, :visit_date
|
5
|
+
|
6
|
+
#
|
7
|
+
# Initializer to transform a +Hash+ into an Review object
|
8
|
+
#
|
9
|
+
# @param [Hash] args
|
10
|
+
def initialize(args=nil)
|
11
|
+
return if args.nil?
|
12
|
+
args.each do |k,v|
|
13
|
+
instance_variable_set("@#{k}", v) unless v.nil?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
data/lib/dagjeweg/tip.rb
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
module Dagjeweg
|
2
|
+
|
3
|
+
class Tip
|
4
|
+
attr_accessor :dw_id, :name, :google_name, :show_name, :show_price, :address, :email, :city, :dw_id, :latitude, :longitude, :image, :show_image, :long_description, :url, :phone, :email, :image2, :image3, :image4, :image5, :image6, :image8, :image9, :image10, :image11, :image12, :image13, :dwurl, :ma, :di, :wo, :do, :vr, :za, :zo, :from_time, :until_time, :open_comment, :price, :price_kids, :price_seniors, :price_toddlers, :price_comment, :description, :show_reviews, :wheelchair, :wheelchair_toilet, :accessible, :accessible_comment, :periode, :weer, :rounded_cijfer, :number_of_reviews, :activities, :genre, :distance
|
5
|
+
|
6
|
+
|
7
|
+
#
|
8
|
+
# Initializer to transform a +Hash+ into an Tip object
|
9
|
+
#
|
10
|
+
# @param [Hash] args
|
11
|
+
def initialize(args=nil)
|
12
|
+
return if args.nil?
|
13
|
+
args.each do |k,v|
|
14
|
+
instance_variable_set("@#{k}", v) unless v.nil?
|
15
|
+
end
|
16
|
+
self.distance = distance.to_f unless distance == ''
|
17
|
+
self.price = price.to_i unless price == ''
|
18
|
+
self.price_kids = price_kids.to_i unless price_kids == ''
|
19
|
+
self.price_toddlers = price_toddlers.to_i unless price_toddlers == ''
|
20
|
+
self.price_seniors = price_seniors.to_i unless price_seniors == ''
|
21
|
+
end
|
22
|
+
|
23
|
+
# returns a list of tips for given query
|
24
|
+
def self.search(query="", per_page=50, page=1)
|
25
|
+
@search_tips ||= []
|
26
|
+
unless @search_tips.any?
|
27
|
+
uri = Dagjeweg::Tip.api_url("search.json?q=#{query}&per_page=#{per_page}&page=#{page}")
|
28
|
+
json = Dagjeweg::Tip.get_json(uri)
|
29
|
+
for object in json
|
30
|
+
@search_tips << Dagjeweg::Tip.new(object)
|
31
|
+
end
|
32
|
+
return @search_tips
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.find(dw_id="")
|
37
|
+
uri = Dagjeweg::Tip.api_url("tips.json?id=#{dw_id.to_s}")
|
38
|
+
json = Dagjeweg::Tip.get_json(uri)
|
39
|
+
if json && json.any?
|
40
|
+
tip = new(json.first)
|
41
|
+
return tip
|
42
|
+
else
|
43
|
+
raise DagjewegError.new("Tip met deze ID werd niet gevonden.")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# return a list of tips near location. Takes 3 params:
|
48
|
+
# - lat
|
49
|
+
# - lon
|
50
|
+
# - number of tips
|
51
|
+
def self.near(lat, lon, per_page)
|
52
|
+
uri = Dagjeweg::Tip.api_url("tips.json?lat=#{lat}&lon=#{lon}&per_page=#{per_page}")
|
53
|
+
json = Dagjeweg::Tip.get_json(uri)
|
54
|
+
if json && json.any?
|
55
|
+
a = []
|
56
|
+
for object in json
|
57
|
+
a << Dagjeweg::Tip.new(json.first)
|
58
|
+
end
|
59
|
+
return a
|
60
|
+
else
|
61
|
+
raise DagjewegError.new("Tip met deze ID werd niet gevonden.")
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# returns a list of tips in the range of x kilometers of this instance
|
66
|
+
def nearby(range=10)
|
67
|
+
uri = Dagjeweg::Tip.api_url("nearby.json?id=#{id.to_s}")
|
68
|
+
json = Dagjeweg::Tip.get_json(uri)
|
69
|
+
if json && json.any?
|
70
|
+
a = []
|
71
|
+
for object in json
|
72
|
+
a << Dagjeweg::Tip.new(json.first)
|
73
|
+
end
|
74
|
+
return a
|
75
|
+
else
|
76
|
+
raise DagjewegError.new("Tip met deze ID werd niet gevonden.")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# returns a list of review objects
|
81
|
+
def reviews
|
82
|
+
@reviews ||= []
|
83
|
+
unless @reviews.any?
|
84
|
+
for object in show_reviews
|
85
|
+
@reviews << Dagjeweg::Review.new(
|
86
|
+
tip_id: id,
|
87
|
+
reviewer: object["reviewer"],
|
88
|
+
title: object["title"],
|
89
|
+
body: object["body"],
|
90
|
+
duration: object["duration"],
|
91
|
+
rating: object["cijfer"].to_i,
|
92
|
+
review_date: object["review_date"],
|
93
|
+
visit_date: object["visit_date"]
|
94
|
+
)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
return @reviews
|
98
|
+
end
|
99
|
+
|
100
|
+
# returns the DagjeWeg ID
|
101
|
+
def id
|
102
|
+
dw_id
|
103
|
+
end
|
104
|
+
|
105
|
+
def weather
|
106
|
+
weer
|
107
|
+
end
|
108
|
+
|
109
|
+
def period
|
110
|
+
periode
|
111
|
+
end
|
112
|
+
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
def self.get_json(uri)
|
117
|
+
resp = Net::HTTP.get_response(URI.parse(uri))
|
118
|
+
if resp.code.to_i == 200
|
119
|
+
buffer = resp.body
|
120
|
+
result = JSON.parse(buffer)
|
121
|
+
return result
|
122
|
+
elsif resp.code.to_i == 404
|
123
|
+
raise DagjewegError.new(self), "Tip met deze ID werd niet gevonden. (#{resp.code})"
|
124
|
+
elsif resp.code.to_i == 403
|
125
|
+
raise DagjewegError.new(self), "Ongeldige API Key (#{resp.code})"
|
126
|
+
else
|
127
|
+
puts resp
|
128
|
+
raise DagjewegError.new(self), "Onbekende fout (#{resp.code})"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def self.api_url(ext='')
|
133
|
+
self.base_url + ext
|
134
|
+
end
|
135
|
+
|
136
|
+
def self.base_url
|
137
|
+
"http://m.dagjeweg.nl/api/#{Config.api_key}/"
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
end
|
data/lib/dagjeweg.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require "dagjeweg/version"
|
2
|
+
|
3
|
+
# Libraries
|
4
|
+
require 'open-uri'
|
5
|
+
require 'net/http'
|
6
|
+
require 'json'
|
7
|
+
|
8
|
+
# Files
|
9
|
+
require "dagjeweg/version"
|
10
|
+
require "dagjeweg/config"
|
11
|
+
require "dagjeweg/engine" if defined?(Rails) && Rails::VERSION::MAJOR.to_i >= 3
|
12
|
+
require "dagjeweg/tip"
|
13
|
+
require "dagjeweg/review"
|
14
|
+
require "dagjeweg/dagjeweg_error"
|
15
|
+
|
16
|
+
#
|
17
|
+
# Dagjeweg Module
|
18
|
+
#
|
19
|
+
module Dagjeweg
|
20
|
+
API_VERSION = 1
|
21
|
+
|
22
|
+
|
23
|
+
# returns the version number
|
24
|
+
def self.version
|
25
|
+
VERSION
|
26
|
+
end
|
27
|
+
|
28
|
+
# sets up configuration
|
29
|
+
def self.setup
|
30
|
+
yield self
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
# For testing purpose only: set the username and password
|
35
|
+
# in environment variables to make the tests pass with your test
|
36
|
+
# credentials.
|
37
|
+
def self.set_credentials_from_environment
|
38
|
+
Config.api_key = ENV["DW_API_KEY"]
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require "bundler"
|
2
|
+
Bundler.setup(:default, :development)
|
3
|
+
|
4
|
+
require 'simplecov'
|
5
|
+
require 'coveralls'
|
6
|
+
|
7
|
+
Coveralls.wear!
|
8
|
+
# SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
9
|
+
# SimpleCov::Formatter::HTMLFormatter,
|
10
|
+
# Coveralls::SimpleCov::Formatter
|
11
|
+
# ]
|
12
|
+
# SimpleCov.start
|
13
|
+
|
14
|
+
require 'rubygems'
|
15
|
+
require 'bundler/setup'
|
16
|
+
require 'vcr'
|
17
|
+
require 'cgi'
|
18
|
+
require 'dagjeweg'
|
19
|
+
|
20
|
+
VCR.configure do |c|
|
21
|
+
c.cassette_library_dir = 'spec/vcr_cassettes'
|
22
|
+
c.hook_into :fakeweb
|
23
|
+
c.register_request_matcher :ignore_query_param_ordering do |r1, r2|
|
24
|
+
uri1 = URI(r1.uri)
|
25
|
+
uri2 = URI(r2.uri)
|
26
|
+
|
27
|
+
uri1.scheme == uri2.scheme &&
|
28
|
+
uri1.host == uri2.host &&
|
29
|
+
uri1.path == uri2.path &&
|
30
|
+
CGI.parse(uri1.query) == CGI.parse(uri2.query)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
RSpec.configure do |config|
|
35
|
+
config.order = "random"
|
36
|
+
# config.filter_run :focus => true
|
37
|
+
end
|
data/spec/tip_spec.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Dagjeweg::Tip do
|
4
|
+
before(:each) do
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "invalid credentials" do
|
9
|
+
|
10
|
+
it "raises error when credentials are wrong" do
|
11
|
+
Dagjeweg::Config.api_key = "1234"
|
12
|
+
VCR.use_cassette("request-tips-without-credentials") do
|
13
|
+
expect { Dagjeweg::Tip.find(52) }.to raise_error(DagjewegError, "Ongeldige API Key (403)")
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "valid credentials" do
|
20
|
+
|
21
|
+
before(:all) do
|
22
|
+
Dagjeweg.set_credentials_from_environment
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#find" do
|
26
|
+
it "returns a tip object with ID of given id when credentials are correct" do
|
27
|
+
VCR.use_cassette("request-tips-with-credentials") do
|
28
|
+
tip = Dagjeweg::Tip.find(52)
|
29
|
+
expect(tip).to be_kind_of(Dagjeweg::Tip)
|
30
|
+
expect(tip.id).to eq(52)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#search" do
|
36
|
+
|
37
|
+
before(:all) do
|
38
|
+
# VCR.use_cassette("request-reviews") do
|
39
|
+
# @tip = Dagjeweg::Tip.find(22)
|
40
|
+
# @review = @tip.reviews.first
|
41
|
+
# end
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns relevant tips for query" do
|
45
|
+
VCR.use_cassette("request-query") do
|
46
|
+
tips = Dagjeweg::Tip.search("dolfinarium")
|
47
|
+
expect(tips.count).to be > 0
|
48
|
+
expect(tips.first.id).to eq(22) #DagjeWeg ID van dolfinarium
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
describe "#nearby" do
|
55
|
+
before(:all) do
|
56
|
+
VCR.use_cassette("request-tips-with-credentials") do
|
57
|
+
@tip = Dagjeweg::Tip.find(52)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns a list of nearby tips" do
|
62
|
+
VCR.use_cassette("request-nearby-tips") do
|
63
|
+
nearby_tips = @tip.nearby(10)
|
64
|
+
expect(nearby_tips.count).to be > 20
|
65
|
+
expect(nearby_tips.first).to be_kind_of(Dagjeweg::Tip)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
it "has a distance attribute" do
|
70
|
+
VCR.use_cassette("request-nearby-tips") do
|
71
|
+
nearby_tips = @tip.nearby(10)
|
72
|
+
expect(nearby_tips[5].distance).to be_between(0.0, 10.0)
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe "#near" do
|
79
|
+
it "returns a list of tips near a geolocation" do
|
80
|
+
VCR.use_cassette("request-tips-near") do
|
81
|
+
nearby_tips = Dagjeweg::Tip.near(52.3702160, 4.8951680, 20)
|
82
|
+
expect(nearby_tips.count).to be 20
|
83
|
+
expect(nearby_tips.first).to be_kind_of(Dagjeweg::Tip)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#reviews" do
|
89
|
+
|
90
|
+
before(:all) do
|
91
|
+
VCR.use_cassette("request-reviews") do
|
92
|
+
@tip = Dagjeweg::Tip.find(22)
|
93
|
+
@review = @tip.reviews.first
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
it "returns a list of reviews for a tip" do
|
98
|
+
puts @tip.inspect
|
99
|
+
expect(@tip.reviews.count).to be > 20
|
100
|
+
end
|
101
|
+
|
102
|
+
it "has a reviewers name" do
|
103
|
+
expect(@review.reviewer).to include("Beoordeling gegeven door")
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dagjeweg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Henk Meijer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-06-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: vcr
|
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'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: fakeweb
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: coveralls
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: yard
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: redcarpet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '1'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '1'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: github-markup
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: Communiceer met de API van DagjeWeg.NL en haal informatie op over dagjes
|
140
|
+
weg
|
141
|
+
email:
|
142
|
+
- meijerhenk@gmail.com
|
143
|
+
executables: []
|
144
|
+
extensions: []
|
145
|
+
extra_rdoc_files: []
|
146
|
+
files:
|
147
|
+
- .gitignore
|
148
|
+
- .travis.yml
|
149
|
+
- .yardopts
|
150
|
+
- Gemfile
|
151
|
+
- LICENSE.txt
|
152
|
+
- README.md
|
153
|
+
- Rakefile
|
154
|
+
- dagjeweg.gemspec
|
155
|
+
- lib/dagjeweg.rb
|
156
|
+
- lib/dagjeweg/config.rb
|
157
|
+
- lib/dagjeweg/dagjeweg_error.rb
|
158
|
+
- lib/dagjeweg/engine.rb
|
159
|
+
- lib/dagjeweg/review.rb
|
160
|
+
- lib/dagjeweg/tip.rb
|
161
|
+
- lib/dagjeweg/version.rb
|
162
|
+
- spec/spec_helper.rb
|
163
|
+
- spec/tip_spec.rb
|
164
|
+
homepage: http://www.dagjeweg.nl
|
165
|
+
licenses:
|
166
|
+
- MIT
|
167
|
+
metadata: {}
|
168
|
+
post_install_message:
|
169
|
+
rdoc_options: []
|
170
|
+
require_paths:
|
171
|
+
- lib
|
172
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - '>='
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - '>='
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '0'
|
182
|
+
requirements: []
|
183
|
+
rubyforge_project:
|
184
|
+
rubygems_version: 2.3.0
|
185
|
+
signing_key:
|
186
|
+
specification_version: 4
|
187
|
+
summary: Communiceer met de API van DagjeWeg.NL en haal informatie op over dagjes
|
188
|
+
weg
|
189
|
+
test_files:
|
190
|
+
- spec/spec_helper.rb
|
191
|
+
- spec/tip_spec.rb
|
192
|
+
has_rdoc:
|