uwaterlooapi 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6b964bbcdda67f37363b799315ce0c95b4aa7ac7
4
- data.tar.gz: 44de178a290b03b0bc45634eb277764d5790b9fe
3
+ metadata.gz: 0c80d6d3357a1f8ff107de957c4658dd0f638969
4
+ data.tar.gz: d10287d3b38a0149093b855bfaf57aad194615de
5
5
  SHA512:
6
- metadata.gz: 5aba26699122d38b24d90007c22cc0fcbdee824884e8a7291a3dbf064f1716100c53a0e08e117c3b60f078f5b8e29755a5eace703a795fb1e7c5d7d07d090feb
7
- data.tar.gz: c14a5ba395d33a1475bbf81a7c09be6ca487c9a0984a8a8fb52f28981b74852d25575cd5c82b2bb4c4e98211889b4ce75daa3fa2e77e18820387c056005b7353
6
+ metadata.gz: dda02ad184753bd3aec01a2e03e0816af7dd647dd127477fa3eab4c3a9a7731df4854ceaefc6c9702486aab463ab5eeabd75db4251ff46a313a9032e9e1393be
7
+ data.tar.gz: c342610a4c54a140fa5321cbc503d37e3b7f28c770fe301c4c29c6a68a0819d070aba8f6ccea2896b5783a4d96c22e1acb584626eb5861a78996178be5d0f61c
data/.travis.yml CHANGED
@@ -2,3 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 2.1.0
5
+ addons:
6
+ code_climate:
7
+ repo_token:
8
+ secure: "XlPjPyevyIybmYS5dM85AuRq5PdF86frD20+yOUXqUzBjZIpeQZ7jFyZQRGG38gAK35eG4x6dbyY+nsI74H3XH4c/R/u73D22Jtb8wOxmwRCoKR1l5Kpd57bT1WcbER4l/x2XRoglceMeGalhYoIEh+9wy5F9c0f6wh4A6rVPN0="
data/Gemfile CHANGED
@@ -1,5 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'rake'
3
+ group :test do
4
+ gem 'rake'
5
+ gem 'codeclimate-test-reporter'
6
+ end
4
7
 
5
8
  gemspec
data/README.md CHANGED
@@ -3,7 +3,9 @@ uwaterlooapi
3
3
 
4
4
  RubyGem wrapper for the University of Waterloo OpenData API
5
5
 
6
- [![Build Status](https://travis-ci.org/amsardesai/uwaterlooapi.svg?branch=master)](https://travis-ci.org/amsardesai/uwaterlooapi)
6
+ [![Build Status](https://travis-ci.org/amsardesai/uwaterlooapi.svg)](https://travis-ci.org/amsardesai/uwaterlooapi)
7
+ [![Code Climate](https://codeclimate.com/github/amsardesai/uwaterlooapi/badges/gpa.svg)](https://codeclimate.com/github/amsardesai/uwaterlooapi)
8
+ [![Test Coverage](https://codeclimate.com/github/amsardesai/uwaterlooapi/badges/coverage.svg)](https://codeclimate.com/github/amsardesai/uwaterlooapi)
7
9
 
8
10
  ## Installation
9
11
 
@@ -17,7 +19,7 @@ Or install it in your system:
17
19
 
18
20
  ## Usage
19
21
 
20
- To use the API, you must first get an API key from http://api.uwaterloo.ca/.
22
+ To use this gem, you must first get an API key from http://api.uwaterloo.ca/.
21
23
 
22
24
  ```ruby
23
25
  # Require the gem at the top of your ruby file
@@ -2,7 +2,7 @@ require 'recursive-open-struct'
2
2
 
3
3
  class UWaterlooAPIQuery
4
4
  include Routes
5
-
5
+
6
6
  def initialize(cur_route, cur_url, api_key)
7
7
  @api_key = api_key
8
8
  @cur_url = cur_url
@@ -10,36 +10,20 @@ class UWaterlooAPIQuery
10
10
  @retrieved_url = ''
11
11
  @response = @meta = nil
12
12
 
13
- # Select only routes that may come next
14
- routes = @@routes.select { |s| s.start_with?(cur_route) }.
15
- map { |s| s[@cur_route.length..-1] }.
16
- join.split('/').uniq.delete_if(&:empty?)
17
-
18
13
  # Define methods without parameters
19
- routes.reject { |r| r =~ /^\{.*\}$/ }.
20
- map(&:to_sym).each do |route|
21
-
14
+ get_next_routes_without_params.each do |route|
22
15
  self.class.send :define_method, route do
23
- if is_in_routes?("#{@cur_route}/#{route}")
24
- UWaterlooAPIQuery.new "#{@cur_route}/#{route}", "#{@cur_url}/#{route}", api_key
25
- else
26
- raise NoMethodError
27
- end
16
+ raise NoMethodError unless is_in_routes?("#{@cur_route}/#{route}")
17
+ UWaterlooAPIQuery.new "#{@cur_route}/#{route}", "#{@cur_url}/#{route}", @api_key
28
18
  end
29
19
  end
30
20
 
31
21
  # Define methods with parameters
32
- routes.select { |r| r =~ /^\{.*\}$/ }.
33
- map { |r| r.delete('{}') }.
34
- map(&:to_sym).each do |route|
35
-
22
+ get_next_routes_with_params.each do |route|
36
23
  self.class.send :define_method, route do |value|
37
24
  raise ArgumentError if ["", 0].include? value
38
- if is_in_routes?("#{@cur_route}/{#{route}}")
39
- UWaterlooAPIQuery.new "#{@cur_route}/{#{route}}", "#{@cur_url}/#{value}", api_key
40
- else
41
- raise NoMethodError
42
- end
25
+ raise NoMethodError unless is_in_routes?("#{@cur_route}/{#{route}}")
26
+ UWaterlooAPIQuery.new "#{@cur_route}/{#{route}}", "#{@cur_url}/#{value}", @api_key
43
27
  end
44
28
  end
45
29
  end
@@ -47,11 +31,8 @@ class UWaterlooAPIQuery
47
31
  # Get meta variables
48
32
  def meta(var)
49
33
  raise NoMethodError unless is_full_route? @cur_route
50
- if @meta
51
- @meta[var.to_s]
52
- else
53
- raise "No request has been made yet, so meta data is not available."
54
- end
34
+ raise "No request has been made yet, so meta data is not available." unless @meta
35
+ @meta[var.to_s]
55
36
  end
56
37
 
57
38
  # Get data from server
@@ -90,12 +71,30 @@ class UWaterlooAPIQuery
90
71
  end
91
72
  end
92
73
 
93
- private
74
+ private
94
75
 
95
76
  def just_made_request
96
77
  @retrieved_url == @cur_url
97
78
  end
98
79
 
80
+ def get_next_routes
81
+ @next_routes ||= @@routes.
82
+ select { |s| s.start_with?(@cur_route) }.
83
+ map { |s| s[@cur_route.length..-1] }.
84
+ join.split('/').uniq.delete_if(&:empty?)
85
+ end
86
+
87
+ def get_next_routes_without_params
88
+ @next_routes_without_params ||= get_next_routes.
89
+ reject { |r| r =~ /^\{.*\}$/ }.map(&:to_sym)
90
+ end
91
+
92
+ def get_next_routes_with_params
93
+ @next_routes_with_params ||= get_next_routes.
94
+ select { |r| r =~ /^\{.*\}$/ }.
95
+ map { |r| r.delete('{}') }.map(&:to_sym)
96
+ end
97
+
99
98
  def is_in_routes?(substring)
100
99
  @@routes.any? { |s| s.start_with?(substring) }
101
100
  end
data/lib/uwaterlooapi.rb CHANGED
@@ -7,11 +7,16 @@ class UWaterlooAPI
7
7
  include Routes
8
8
 
9
9
  def initialize(api_key)
10
- @@routes.map { |r| r.split('/')[1] }.uniq.map(&:to_sym).each do |route|
10
+ get_base_routes.each do |route|
11
11
  self.class.send :define_method, route do
12
12
  UWaterlooAPIQuery.new "/#{route}", "/#{route}", api_key
13
13
  end
14
14
  end
15
15
  end
16
16
 
17
+ private
18
+
19
+ def get_base_routes
20
+ @base_routes ||= @@routes.map { |r| r.split('/')[1] }.uniq.map(&:to_sym)
21
+ end
17
22
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,11 @@
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
3
+
1
4
  require 'rspec'
2
5
  require 'webmock/rspec'
3
6
  require 'uwaterlooapi'
4
7
 
5
- WebMock.disable_net_connect! allow_localhost: true
8
+ WebMock.disable_net_connect! allow_localhost: true, allow: 'codeclimate.com'
6
9
  Dir.chdir File.dirname __FILE__
7
10
 
8
11
  # This file was generated by the `rspec --init` command. Conventionally, all
data/uwaterlooapi.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = 'uwaterlooapi'
4
- spec.version = '0.0.2'
4
+ spec.version = '0.0.3'
5
5
  spec.date = '2014-10-26'
6
6
  spec.summary = "Ruby Gem wrapper for the University of Waterloo Open Data API"
7
7
  spec.description = "Ruby Gem wrapper for the University of Waterloo Open Data API"
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.email = 'me@ankitsardesai.ca'
10
10
  spec.files = `git ls-files`.split("\n")
11
11
  spec.test_files = `git ls-files spec`.split("\n")
12
- spec.homepage = 'http://rubygems.org/gems/uwaterlooapi'
12
+ spec.homepage = 'https://rubygems.org/gems/uwaterlooapi'
13
13
  spec.license = 'MIT'
14
14
  spec.require_paths = ['lib']
15
15
  spec.add_runtime_dependency 'httparty'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uwaterlooapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ankit Sardesai
@@ -86,7 +86,7 @@ files:
86
86
  - spec/spec_helper.rb
87
87
  - spec/uwaterlooapi_spec.rb
88
88
  - uwaterlooapi.gemspec
89
- homepage: http://rubygems.org/gems/uwaterlooapi
89
+ homepage: https://rubygems.org/gems/uwaterlooapi
90
90
  licenses:
91
91
  - MIT
92
92
  metadata: {}
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
106
  version: '0'
107
107
  requirements: []
108
108
  rubyforge_project:
109
- rubygems_version: 2.2.2
109
+ rubygems_version: 2.4.4
110
110
  signing_key:
111
111
  specification_version: 4
112
112
  summary: Ruby Gem wrapper for the University of Waterloo Open Data API