leipzig 0.0.3 → 0.0.4
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.
- data/LICENSE +3 -3
- data/README.md +7 -15
- data/lib/leipzig/client.rb +25 -0
- data/lib/leipzig/version.rb +1 -1
- metadata +3 -3
data/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
|
1
|
+
(The MIT License)
|
2
2
|
|
3
|
-
|
3
|
+
Copyright (c) 2012 Mario Behrendt info@mario-behrendt.de
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining
|
6
6
|
a copy of this software and associated documentation files (the
|
@@ -19,4 +19,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
19
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
20
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
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.
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -29,9 +29,7 @@ Simply create a new instance of the client using your api key and call one of th
|
|
29
29
|
```ruby
|
30
30
|
require 'leipzig'
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
client = Leipzig::Mediahandbook.new(key)
|
32
|
+
client = Leipzig::Mediahandbook.new('my-key')
|
35
33
|
|
36
34
|
companies = client.find_companies(:postcode => '04103')
|
37
35
|
branches = client.find_branches(:limit => 5)
|
@@ -48,9 +46,13 @@ client.find_companies(:limit => 10).first.name
|
|
48
46
|
# ==> First company's name
|
49
47
|
```
|
50
48
|
|
51
|
-
|
49
|
+
Besides `Mediahandbook` there are also classes for `District` and `Calendar` which are used the same way. Again, see
|
50
|
+
link above for more information about params and structures. Calls could look as follows:
|
52
51
|
|
53
|
-
|
52
|
+
```ruby
|
53
|
+
Leipzig::Calendar.new(key).find_events
|
54
|
+
Leipzig::District.new(key).find_streets
|
55
|
+
```
|
54
56
|
|
55
57
|
## Running the tests
|
56
58
|
|
@@ -59,16 +61,6 @@ $ bundle
|
|
59
61
|
$ API_KEY='my-key' rake
|
60
62
|
```
|
61
63
|
|
62
|
-
## Contributing
|
63
|
-
|
64
|
-
1. Fork it
|
65
|
-
2. Create your feature branch
|
66
|
-
3. Write code and tests
|
67
|
-
4. Check tests
|
68
|
-
5. Commit your changes if tests pass
|
69
|
-
6. Push to the branch
|
70
|
-
7. Create new Pull Request
|
71
|
-
|
72
64
|
## Todo
|
73
65
|
|
74
66
|
* Refactoring
|
data/lib/leipzig/client.rb
CHANGED
@@ -9,6 +9,9 @@ module Leipzig
|
|
9
9
|
|
10
10
|
attr_reader :api_key
|
11
11
|
|
12
|
+
# Constructor
|
13
|
+
#
|
14
|
+
# @param [String] API Key to use
|
12
15
|
def initialize(api_key)
|
13
16
|
@api_key = api_key
|
14
17
|
@conditions = { :limit => 10, :name => 'leipzig', :api_key => @api_key }
|
@@ -17,10 +20,18 @@ module Leipzig
|
|
17
20
|
|
18
21
|
private
|
19
22
|
|
23
|
+
# Returns hash of TYPES for instance
|
24
|
+
#
|
25
|
+
# @return [Hash] Available types
|
20
26
|
def types
|
21
27
|
self.singleton_class.const_get(:TYPES)
|
22
28
|
end
|
23
29
|
|
30
|
+
# Generates URI and triggers API call
|
31
|
+
#
|
32
|
+
# @param [String] Type of resource to find
|
33
|
+
# @param [Hash] Conditions
|
34
|
+
# @return [Array] Result set of `request` method
|
24
35
|
def find(type, conditions = {})
|
25
36
|
raise "Type #{type} is invalid" unless types.include?(type.to_sym)
|
26
37
|
uri = "#{API_URL}/#{resource}/#{type}"
|
@@ -32,10 +43,15 @@ module Leipzig
|
|
32
43
|
request(uri, conditions)
|
33
44
|
end
|
34
45
|
|
46
|
+
# Returns true if `conditions` hash includes non-keyword keys, hence search params
|
47
|
+
#
|
48
|
+
# @param [Hash] Conditions to check
|
49
|
+
# @return [Boolean] True if search param was found
|
35
50
|
def has_search_param?(conditions)
|
36
51
|
conditions.keys.select { |key| !KEYWORDS.include?(key) }.any?
|
37
52
|
end
|
38
53
|
|
54
|
+
# Registers find_*-methods for each TYPE on current instance
|
39
55
|
def register_methods
|
40
56
|
types.each do |type|
|
41
57
|
self.class.send(:define_method, "find_#{type}".to_sym) do |*args|
|
@@ -44,10 +60,19 @@ module Leipzig
|
|
44
60
|
end
|
45
61
|
end
|
46
62
|
|
63
|
+
# Returns reource name based on instance class name
|
64
|
+
# For instance "Leipzig::Mediahandbook" leads to "mediahandbook"
|
65
|
+
#
|
66
|
+
# @return [String] Resource name
|
47
67
|
def resource
|
48
68
|
self.class.to_s.split('::').last.downcase
|
49
69
|
end
|
50
70
|
|
71
|
+
# Calls API and returns Array which contains OpenStructs if entries were found
|
72
|
+
#
|
73
|
+
# @param [String] URI to call
|
74
|
+
# @param [Hash] Conditions for call like limit, offset and search params
|
75
|
+
# @return [Array] List of found entries
|
51
76
|
def request(uri, conditions)
|
52
77
|
result = JSON.parse RestClient.get(uri, :params => @conditions.merge(conditions))
|
53
78
|
|
data/lib/leipzig/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: leipzig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -96,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
96
96
|
version: '0'
|
97
97
|
segments:
|
98
98
|
- 0
|
99
|
-
hash:
|
99
|
+
hash: 1076362203260376975
|
100
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
101
|
none: false
|
102
102
|
requirements:
|
@@ -105,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
105
|
version: '0'
|
106
106
|
segments:
|
107
107
|
- 0
|
108
|
-
hash:
|
108
|
+
hash: 1076362203260376975
|
109
109
|
requirements: []
|
110
110
|
rubyforge_project:
|
111
111
|
rubygems_version: 1.8.24
|