plangrade-ruby 0.0.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.
@@ -0,0 +1,44 @@
1
+ module Plangrade
2
+ module Resources
3
+ class IdentityMap
4
+
5
+ class InvalidKeyError < StandardError; end
6
+
7
+ def initialize
8
+ @map = {}
9
+ @size = 0
10
+ end
11
+
12
+ # @note retrives key from identity map
13
+ # @return [Hash]
14
+ # @param key [string]
15
+ # @param default [Hash]
16
+ def get(key, default=nil)
17
+ @map["#{key}"] || default
18
+ end
19
+
20
+ # @note inserts a hash of attributes into identity map
21
+ # @return [Hash]
22
+ # @param key [string]
23
+ # @param value [Hash]
24
+ def put(key, value)
25
+ if key.nil? || key.empty?
26
+ raise InvalidKeyError.new
27
+ end
28
+ @map["#{key}"] = value
29
+ end
30
+
31
+ # @note returns the current size of identity map
32
+ # @return [Integer]
33
+ def size
34
+ @map.keys.count
35
+ end
36
+
37
+ # clears the entire identity map
38
+ # @return [Hash]
39
+ def purge!
40
+ @map = {}
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,24 @@
1
+ module Plangrade
2
+ module Resources
3
+ class Participants < Plangrade::Resources::Base
4
+
5
+ def self.create(company_id, first_name, last_name, street1, street2, city, state, zip, dob, ssn, email, phone, employee_id)
6
+
7
+ result = api_handler.create_participant(:company_id => company_id, :first_name => first_name, :last_name => last_name,
8
+ :street1 => street1, :street2 => street2, :city => city, :state => state,
9
+ :zip => zip, :dob => dob, :ssn => ssn, :email => email, :phone => phone,
10
+ :employee_id => employee_id)
11
+ return nil unless result.created?
12
+ id = result.headers[:location].split('/').last.to_i
13
+ new(:id => id)
14
+ end
15
+
16
+ attr_accessor_deffered :id, :company_id, :employee_id, :first_name, :last_name, :street1, :street2, :city, :state, :zip,
17
+ :dob, :ssn, :email, :phone
18
+
19
+ def update!(params)
20
+ api_handler.update_participant(@id, params)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ module Plangrade
2
+ module Resources
3
+ class User < Plangrade::Resources::Base
4
+
5
+ def self.current
6
+ result = api_handler.current_resource_owner
7
+ return nil unless result.success?
8
+ new(result.body)
9
+ end
10
+
11
+ def self.create(email, name)
12
+ result = api_handler.create_user(:email => email, :name => name)
13
+ return nil unless result.created?
14
+ id = result.headers[:location].split('/').last.to_i
15
+ new(:id => id)
16
+ end
17
+
18
+ attr_accessor_deffered :id, :email, :name
19
+
20
+ def update!(params)
21
+ api_handler.update_user(@id, params)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ module Plangrade
2
+ module Ruby
3
+ VERSION = "0.0.2"
4
+ end
5
+ end
@@ -0,0 +1,39 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'plangrade/ruby/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "plangrade-ruby"
8
+ spec.version = Plangrade::Ruby::VERSION
9
+ spec.authors = ["Christopher Reynoso"]
10
+ spec.email = ["topherreynoso@gmail.com"]
11
+ spec.summary = %q{plangrade API client}
12
+ spec.description = %q{A ruby wrapper for accessing plangrade's REST API}
13
+ spec.homepage = "https://github.com/topherreynoso/plangrade-ruby"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
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.cert_chain = ['certs/public.pem']
22
+ spec.signing_key = File.expand_path("~/.ssh/gem-private_key.pem") if $0 =~ /gem\z/
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.6"
25
+ spec.add_development_dependency "rake"
26
+ spec.add_development_dependency "minitest"
27
+ spec.add_development_dependency "vcr"
28
+ spec.add_development_dependency "webmock"
29
+
30
+ spec.add_dependency "faraday"
31
+ spec.add_dependency "json"
32
+ spec.add_dependency 'oj', '~> 2.0'
33
+ spec.add_dependency 'multi_json', '~> 1.8'
34
+ spec.add_dependency 'rest-client', '~> 1.6'
35
+ spec.add_dependency 'addressable', '~> 2.3'
36
+ spec.add_dependency 'oauth2-client', '~> 2.0'
37
+
38
+ spec.post_install_message = %q{ Thanks for installing! For API help go to http://docs.plangrade.com }
39
+ end
@@ -0,0 +1,65 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://plangrade.com/api/v1/users/4
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.0
12
+ Accept-Encoding:
13
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
+ Accept:
15
+ - '*/*'
16
+ response:
17
+ status:
18
+ code: 401
19
+ message: Unauthorized
20
+ headers:
21
+ Date:
22
+ - Sun, 09 Nov 2014 15:58:58 GMT
23
+ Server:
24
+ - Apache/2.2.22 (Ubuntu)
25
+ Strict-Transport-Security:
26
+ - max-age=31536000
27
+ X-Frame-Options:
28
+ - SAMEORIGIN
29
+ X-Xss-Protection:
30
+ - 1; mode=block
31
+ X-Content-Type-Options:
32
+ - nosniff
33
+ X-Ua-Compatible:
34
+ - chrome=1
35
+ X-Xhr-Current-Location:
36
+ - /api/v1/users/4
37
+ Cache-Control:
38
+ - no-store
39
+ Pragma:
40
+ - no-cache
41
+ Www-Authenticate:
42
+ - Bearer realm="Doorkeeper", error="invalid_token", error_description="The access
43
+ token is invalid"
44
+ X-Request-Id:
45
+ - 46ed0fa5-165f-40c3-be79-a7625a970743
46
+ X-Runtime:
47
+ - '0.298846'
48
+ X-Powered-By:
49
+ - Phusion Passenger 4.0.41
50
+ Set-Cookie:
51
+ - request_method=GET; path=/; secure
52
+ Status:
53
+ - 401 Unauthorized
54
+ Vary:
55
+ - Accept-Encoding
56
+ Content-Length:
57
+ - '21'
58
+ Content-Type:
59
+ - text/html
60
+ body:
61
+ encoding: UTF-8
62
+ string: ' '
63
+ http_version:
64
+ recorded_at: Sun, 09 Nov 2014 15:51:28 GMT
65
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,9 @@
1
+ require './lib/plangrade'
2
+ require 'minitest/autorun'
3
+ require 'webmock/minitest'
4
+ require 'vcr'
5
+
6
+ VCR.configure do |c|
7
+ c.cassette_library_dir = "test/fixtures"
8
+ c.hook_into :webmock
9
+ end
@@ -0,0 +1,19 @@
1
+ require './test/test_helper'
2
+
3
+ class PlangradeUserTest < Minitest::Test
4
+ def test_exists
5
+ assert Plangrade::User
6
+ end
7
+
8
+ def test_it_gives_back_a_single_user
9
+ VCR.use_cassette('one_user') do
10
+ user = Plangrade::User.find(4)
11
+ assert_equal Plangrade::User, user.class
12
+
13
+ # Check that the fields are accessible by our model
14
+ assert_equal 4, user.id
15
+ assert_equal "topherreynoso@gmail.com", user.email
16
+ assert_equal "Christopher Reynoso", user.name
17
+ end
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,267 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: plangrade-ruby
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Christopher Reynoso
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDhTCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMRYwFAYDVQQDDA10b3Bo
14
+ ZXJyZXlub3NvMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJk/IsZAEZ
15
+ FgNjb20wHhcNMTQxMTA5MTgxMjE1WhcNMTUxMTA5MTgxMjE1WjBEMRYwFAYDVQQD
16
+ DA10b3BoZXJyZXlub3NvMRUwEwYKCZImiZPyLGQBGRYFZ21haWwxEzARBgoJkiaJ
17
+ k/IsZAEZFgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPhcmQ
18
+ pkA7IW0e3MmwfriDGomq9AuBipLLlQXT2BCkGij+EotGNUEgASOKtk4l6cMGLgsv
19
+ YL7NF27A8iIudmo50Zpnq/6HkHO9xv9fMs0PWdl/sf4i+uE1eRfgUpPsT1C1kdDu
20
+ TjQ/QW0TdtI9Qo3zp5T9HMTC2wmqjbzjNrjyYwMgsocmFh5A1aA+UaB5nOubGyK8
21
+ jDNyp7iSaKt0TYlI92rHTElcuqwj7jORHeJoJEWDLqeV0FGPQkYxoPoZLw81FPtm
22
+ oi6QaZlAZrJ/wwuXzLqgeL7XufxqhZUdlqGSTMCwOZWq+kqWPUlZwQ9qKb9OQYSK
23
+ 4J3AkziSnFretEJBAgMBAAGjgYEwfzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAd
24
+ BgNVHQ4EFgQUv0UFs3QjWY2Q7VbUkKCyVi7Gl/swIgYDVR0RBBswGYEXdG9waGVy
25
+ cmV5bm9zb0BnbWFpbC5jb20wIgYDVR0SBBswGYEXdG9waGVycmV5bm9zb0BnbWFp
26
+ bC5jb20wDQYJKoZIhvcNAQEFBQADggEBACrUJUcc7FZQpqn34rOR7278muA/xNHa
27
+ mgp38QX3wBDrd9BYSzg3fll3mPE03AaMpGkr+lYUzuPzOcicrsILrVBIeRdCGraC
28
+ PyBJ3AwwPnhWatwb0zrqEiTe/iowqoYaPRzWnnak6XJ2PfBdStLdiy+SkFd2GA5o
29
+ bnE/9rrzarPhuES0CxIw35vTs4egoPnzCoLPQ01YmiKPzWWyqk2lipJR+Xu9lHJt
30
+ ELzPS5fItQUB4UE0DT9qDr7LmfnG1tLPIeDgMScUes6zSSckWtaXKjQRy7OG7yGu
31
+ 2YveeRgxu2nn/J4Q6Obf7PqMvpR0z5T8SUptXcRVhHBZDUzrBpNvtNM=
32
+ -----END CERTIFICATE-----
33
+ date: 2014-11-09 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: bundler
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.6'
42
+ type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ~>
47
+ - !ruby/object:Gem::Version
48
+ version: '1.6'
49
+ - !ruby/object:Gem::Dependency
50
+ name: rake
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: minitest
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ - !ruby/object:Gem::Dependency
78
+ name: vcr
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ - !ruby/object:Gem::Dependency
92
+ name: webmock
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ - !ruby/object:Gem::Dependency
106
+ name: faraday
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ type: :runtime
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ - !ruby/object:Gem::Dependency
120
+ name: json
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ type: :runtime
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: oj
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: '2.0'
140
+ type: :runtime
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - ~>
145
+ - !ruby/object:Gem::Version
146
+ version: '2.0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: multi_json
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ~>
152
+ - !ruby/object:Gem::Version
153
+ version: '1.8'
154
+ type: :runtime
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ~>
159
+ - !ruby/object:Gem::Version
160
+ version: '1.8'
161
+ - !ruby/object:Gem::Dependency
162
+ name: rest-client
163
+ requirement: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ~>
166
+ - !ruby/object:Gem::Version
167
+ version: '1.6'
168
+ type: :runtime
169
+ prerelease: false
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - ~>
173
+ - !ruby/object:Gem::Version
174
+ version: '1.6'
175
+ - !ruby/object:Gem::Dependency
176
+ name: addressable
177
+ requirement: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ~>
180
+ - !ruby/object:Gem::Version
181
+ version: '2.3'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ~>
187
+ - !ruby/object:Gem::Version
188
+ version: '2.3'
189
+ - !ruby/object:Gem::Dependency
190
+ name: oauth2-client
191
+ requirement: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - ~>
194
+ - !ruby/object:Gem::Version
195
+ version: '2.0'
196
+ type: :runtime
197
+ prerelease: false
198
+ version_requirements: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: '2.0'
203
+ description: A ruby wrapper for accessing plangrade's REST API
204
+ email:
205
+ - topherreynoso@gmail.com
206
+ executables: []
207
+ extensions: []
208
+ extra_rdoc_files: []
209
+ files:
210
+ - .gitignore
211
+ - Gemfile
212
+ - LICENSE.txt
213
+ - README.md
214
+ - Rakefile
215
+ - certs/public.pem
216
+ - lib/plangrade.rb
217
+ - lib/plangrade/api.rb
218
+ - lib/plangrade/api/company.rb
219
+ - lib/plangrade/api/participant.rb
220
+ - lib/plangrade/api/user.rb
221
+ - lib/plangrade/api_handler.rb
222
+ - lib/plangrade/api_response.rb
223
+ - lib/plangrade/client.rb
224
+ - lib/plangrade/configurable.rb
225
+ - lib/plangrade/error.rb
226
+ - lib/plangrade/http_adapter.rb
227
+ - lib/plangrade/oauth2_client.rb
228
+ - lib/plangrade/resources.rb
229
+ - lib/plangrade/resources/base.rb
230
+ - lib/plangrade/resources/company.rb
231
+ - lib/plangrade/resources/identity_map.rb
232
+ - lib/plangrade/resources/participant.rb
233
+ - lib/plangrade/resources/user.rb
234
+ - lib/plangrade/ruby/version.rb
235
+ - plangrade-ruby.gemspec
236
+ - test/fixtures/one_user.yml
237
+ - test/test_helper.rb
238
+ - test/user/user_test.rb
239
+ homepage: https://github.com/topherreynoso/plangrade-ruby
240
+ licenses:
241
+ - MIT
242
+ metadata: {}
243
+ post_install_message: ' Thanks for installing! For API help go to http://docs.plangrade.com '
244
+ rdoc_options: []
245
+ require_paths:
246
+ - lib
247
+ required_ruby_version: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - '>='
250
+ - !ruby/object:Gem::Version
251
+ version: '0'
252
+ required_rubygems_version: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - '>='
255
+ - !ruby/object:Gem::Version
256
+ version: '0'
257
+ requirements: []
258
+ rubyforge_project:
259
+ rubygems_version: 2.1.9
260
+ signing_key:
261
+ specification_version: 4
262
+ summary: plangrade API client
263
+ test_files:
264
+ - test/fixtures/one_user.yml
265
+ - test/test_helper.rb
266
+ - test/user/user_test.rb
267
+ has_rdoc: