plangrade-ruby 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: