northpasser 0.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d2c8333ec38144509f7e478cd4544c40d201e0f5
4
- data.tar.gz: c68a0ac87b76aff966d19dbfb97c3ac2a8e72a26
3
+ metadata.gz: 0db00a9394417615c31a808555aecaf053a59e82
4
+ data.tar.gz: 3398492a360bf5ce2d9088abad5fd32c5c60f62e
5
5
  SHA512:
6
- metadata.gz: a6ef1acd78ef23c0e82e233c5e64485ca3e6021a3f792b6da2fcc4f9bc3b2e04512688430dad586d42370730e22034d72ff635d245cf9c998d9d99695a8defcc
7
- data.tar.gz: 377280e37600ff6da3dae89c7b86cfd7c8d899559d662d7078bf0cb7571993163d8c16c746fe47fad24c95a7fafab40d908ee939067e2b9667f9ab952cd7651a
6
+ metadata.gz: 8b71a66c56fbea1b14eae44c3b70f3bcbccacd0ebf18fd0753bd257c2ad37c3d29941d19069313b8233f7e37cb34bad17c6a0416f7a0e51d8acbd6331b3234f7
7
+ data.tar.gz: e65295a5c4cc88365088c9064223bd32d74d325c65eca842499205fcfdd38bb4216f21eed88adf813cfd27d037d111da9d433c3f4836c711fde54d42b7cd5b15
data/.gitignore CHANGED
@@ -1,2 +1,2 @@
1
1
  .env
2
- *.gem
2
+ coverage/*
@@ -41,7 +41,6 @@ GEM
41
41
  json (>= 1.8, < 3)
42
42
  simplecov-html (~> 0.10.0)
43
43
  simplecov-html (0.10.2)
44
- vcr (3.0.3)
45
44
  webmock (2.3.2)
46
45
  addressable (>= 2.3.6)
47
46
  crack (>= 0.3.2)
@@ -58,8 +57,7 @@ DEPENDENCIES
58
57
  rake (~> 10.0)
59
58
  rspec (~> 3.0)
60
59
  simplecov
61
- vcr (~> 3.0)
62
60
  webmock (~> 2.1)
63
61
 
64
62
  BUNDLED WITH
65
- 1.15.4
63
+ 1.16.1
data/README.md CHANGED
@@ -184,22 +184,18 @@ use `bin/console` for an interactive prompt that allows you to experiment with
184
184
  the gem and real API responses.
185
185
 
186
186
  Use `rake spec` to run the tests. The tests don't make external requests but
187
- rather use VCR for stubbed responses. If you want to play with the tests and
188
- get real API responses (perhaps to extend the suite or for a new feature) then
189
- you'll need to have an API token in the env as described above.
187
+ rather use WebMock to mock Northpass API calls. This allows you to run and develop
188
+ directly against the Northpass API without needing a valid Northpass API token.
189
+ If you want to play with the tests and get real API responses (perhaps to extend the suite or for a new feature)
190
+ then you'll need to have an API token in the env as described above.
190
191
 
191
192
  The current test suite is far from exhaustive and could do with some
192
193
  love.
193
194
 
194
- **NB: If you have implemented a feature that requires a new cassette, make sure
195
- you change the uri referenced by the cassette you added to remove the API token
196
- if you have updated the environment to use your token. Otherwise your API token
197
- will be in publically visible from the code in this repo.**
198
-
199
195
  ## Contributing
200
196
 
201
197
  Bug reports and pull requests are entirely welcome on GitHub at
202
- https://github.com/philipcastiglione/northpasser.
198
+ https://github.com/mrkhutter/northpasser.
203
199
 
204
200
 
205
201
  ## License
@@ -1,5 +1,7 @@
1
1
  require "northpasser/version"
2
- require "northpasser/constants"
2
+ require "northpasser/versionless_constants"
3
+ require "northpasser/v1_constants"
4
+ require "northpasser/v2_constants"
3
5
  require "northpasser/path_builder"
4
6
  require "northpasser/request"
5
7
 
@@ -2,7 +2,7 @@ module Northpasser
2
2
  module PathBuilder
3
3
  def self.included(_)
4
4
  class_exec do
5
- attr_accessor :path
5
+ attr_accessor :path, :version_url
6
6
  end
7
7
  end
8
8
 
@@ -26,6 +26,7 @@ module Northpasser
26
26
  if known_action?(name)
27
27
  execute_request(ACTIONS[name], args.first)
28
28
  elsif known_resource?(name)
29
+ build_version_url(name)
29
30
  build_path(name, args.first)
30
31
  elsif known_exception?(name)
31
32
  build_path(EXCEPTIONS[name][:path], nil)
@@ -63,7 +64,15 @@ module Northpasser
63
64
  end
64
65
 
65
66
  def known_resource?(name)
66
- RESOURCES.include?(name)
67
+ known_v1_resource?(name) || known_v2_resource?(name)
68
+ end
69
+
70
+ def known_v1_resource?(name)
71
+ V1_RESOURCES.include?(name)
72
+ end
73
+
74
+ def known_v2_resource?(name)
75
+ V2_RESOURCES.include?(name)
67
76
  end
68
77
 
69
78
  def known_exception?(name)
@@ -80,6 +89,14 @@ module Northpasser
80
89
  req.fetch
81
90
  end
82
91
 
92
+ def build_version_url(name)
93
+ self.version_url = V1_API_URL
94
+ if known_v2_resource?(name)
95
+ self.version_url = V2_API_URL
96
+ end
97
+ self
98
+ end
99
+
83
100
  def build_path(resource, id)
84
101
  self.path ||= []
85
102
  self.path << resource
@@ -43,7 +43,7 @@ module Northpasser
43
43
  end
44
44
 
45
45
  def construct_uri(northpass)
46
- base_url = V1_API_URL
46
+ base_url = northpass.version_url #V1_API_URL
47
47
  path = northpass.path.map(&:to_s).map { |p| p.gsub('_', '-') }.join('/')
48
48
  object_id = "/#{self.params.delete(:id)}" if self.params.key?(:id)
49
49
  token = northpass.token
@@ -0,0 +1,31 @@
1
+ require 'json'
2
+ require 'csv'
3
+
4
+ module Northpasser
5
+ V1_API_URL = "https://api.northpass.com/v1/".freeze
6
+
7
+ # These are the resource for the northpass v1 api and can form part of the path
8
+ V1_RESOURCES = [
9
+ :assignments,
10
+ :categories,
11
+ :coupons,
12
+ :courses,
13
+ :groups,
14
+ :learners,
15
+ :memberships,
16
+ :people,
17
+ :quizzes
18
+ ].freeze
19
+
20
+ # These are the annoying edge cases in the northpass api that are don't fit
21
+ EXCEPTIONS = {
22
+ bulk_people: {
23
+ path: "bulk/people",
24
+ action: :Post
25
+ },
26
+ bulk_groups: {
27
+ path: "bulk/groups",
28
+ action: :Post
29
+ }
30
+ }.freeze
31
+ end
@@ -0,0 +1,14 @@
1
+ require 'json'
2
+ require 'csv'
3
+
4
+ module Northpasser
5
+ V2_API_URL = "https://api.northpass.com/v2/".freeze
6
+
7
+ # These are the resource for the northpass v2 api and can form part of the path
8
+ V2_RESOURCES = [
9
+ :activities,
10
+ :assignment_submissions,
11
+ :events,
12
+ :people
13
+ ].freeze
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Northpasser
2
- VERSION = "0.1.2"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -0,0 +1,26 @@
1
+ require 'json'
2
+ require 'csv'
3
+
4
+ module Northpasser
5
+
6
+ # Response formats the northpass api knows about
7
+ FORMATS = {
8
+ json: {
9
+ headers: { header: 'Content-Type', content: 'application/json' },
10
+ parser: JSON
11
+ },
12
+ csv: {
13
+ headers: { header: 'Accept', content: 'text/csv' },
14
+ parser: CSV
15
+ }
16
+ }.freeze
17
+
18
+ # Action words are nice for our internal api and match the api path too
19
+ ACTIONS = {
20
+ get: :Get,
21
+ update: :Put,
22
+ delete: :Delete,
23
+ list: :Get,
24
+ create: :Post
25
+ }.freeze
26
+ end
@@ -23,7 +23,6 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
  spec.add_development_dependency "dotenv", "~> 2.1"
25
25
  spec.add_development_dependency "webmock", "~> 2.1"
26
- spec.add_development_dependency "vcr", "~> 3.0"
27
- spec.add_development_dependency "pry"
28
26
  spec.add_development_dependency "simplecov"
27
+ spec.add_development_dependency "pry"
29
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: northpasser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Hutter
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-21 00:00:00.000000000 Z
11
+ date: 2019-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,21 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.1'
83
83
  - !ruby/object:Gem::Dependency
84
- name: vcr
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '3.0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '3.0'
97
- - !ruby/object:Gem::Dependency
98
- name: pry
84
+ name: simplecov
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - ">="
@@ -109,7 +95,7 @@ dependencies:
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
- name: simplecov
98
+ name: pry
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - ">="
@@ -138,10 +124,12 @@ files:
138
124
  - bin/console
139
125
  - bin/setup
140
126
  - lib/northpasser.rb
141
- - lib/northpasser/constants.rb
142
127
  - lib/northpasser/path_builder.rb
143
128
  - lib/northpasser/request.rb
129
+ - lib/northpasser/v1_constants.rb
130
+ - lib/northpasser/v2_constants.rb
144
131
  - lib/northpasser/version.rb
132
+ - lib/northpasser/versionless_constants.rb
145
133
  - northpasser.gemspec
146
134
  homepage: https://github.com/mrkhutter/northpasser
147
135
  licenses:
@@ -1,52 +0,0 @@
1
- require 'json'
2
- require 'csv'
3
-
4
- module Northpasser
5
- V1_API_URL = "https://api.northpass.com/v1/".freeze
6
-
7
- # Response formats the northpass api knows about
8
- FORMATS = {
9
- json: {
10
- headers: { header: 'Content-Type', content: 'application/json' },
11
- parser: JSON
12
- },
13
- csv: {
14
- headers: { header: 'Accept', content: 'text/csv' },
15
- parser: CSV
16
- }
17
- }.freeze
18
-
19
- # Action words are nice for our internal api and match the api path too
20
- ACTIONS = {
21
- get: :Get,
22
- update: :Put,
23
- delete: :Delete,
24
- list: :Get,
25
- create: :Post
26
- }.freeze
27
-
28
- # These are the resource for the northpass api and can form part of the path
29
- RESOURCES = [
30
- :assignments,
31
- :categories,
32
- :coupons,
33
- :courses,
34
- :groups,
35
- :learners,
36
- :memberships,
37
- :people,
38
- :quizzes
39
- ].freeze
40
-
41
- # These are the annoying edge cases in the northpass api that are don't fit
42
- EXCEPTIONS = {
43
- bulk_people: {
44
- path: "bulk/people",
45
- action: :Post
46
- },
47
- bulk_groups: {
48
- path: "bulk/groups",
49
- action: :Post
50
- }
51
- }.freeze
52
- end