miiCardConsumers 2.0.0 → 2.1.0

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.
@@ -4,7 +4,7 @@ require "json"
4
4
  class MiiCardServiceUrls
5
5
  OAUTH_ENDPOINT = "https://sts.miicard.com/auth/OAuth.ashx"
6
6
  STS_SITE = "https://sts.miicard.com"
7
- CLAIMS_SVC = "https://sts.miicard.com/api/v1/Claims.svc/json"
7
+ CLAIMS_SVC = "https://sts.miicard.com/api/v1/Claims.svc/json"
8
8
 
9
9
  def self.get_method_url(method_name)
10
10
  return MiiCardServiceUrls::CLAIMS_SVC + "/" + method_name
@@ -31,16 +31,16 @@ module MiiApiErrorCode
31
31
  ACCESS_REVOKED = 100
32
32
  # The user's miiCard subscription has elapsed. Only users with a current
33
33
  # subscription can share their data with other applications and websites.
34
- USER_SUBSCRIPTION_LAPSED = 200
35
- # Signifies that your account has not been enabled for transactional support.
36
- TRANSACTIONAL_SUPPORT_DISABLED = 1000
37
- # Signifies that your account's support status is development-only. This is the
38
- # case when your application hasn't yet been made live in the miiCard system, for example
39
- # while we process your billing details and perform final checks.
40
- DEVELOPMENT_TRANSACTIONAL_SUPPORT_ONLY = 1010
41
- # Signifies that the snapshot ID supplied to a snapshot-based API method was either invalid
42
- # or corresponded to a user for which authorisation tokens didn't match.
43
- INVALID_SNAPSHOT_ID = 1020
34
+ USER_SUBSCRIPTION_LAPSED = 200
35
+ # Signifies that your account has not been enabled for transactional support.
36
+ TRANSACTIONAL_SUPPORT_DISABLED = 1000
37
+ # Signifies that your account's support status is development-only. This is the
38
+ # case when your application hasn't yet been made live in the miiCard system, for example
39
+ # while we process your billing details and perform final checks.
40
+ DEVELOPMENT_TRANSACTIONAL_SUPPORT_ONLY = 1010
41
+ # Signifies that the snapshot ID supplied to a snapshot-based API method was either invalid
42
+ # or corresponded to a user for which authorisation tokens didn't match.
43
+ INVALID_SNAPSHOT_ID = 1020
44
44
  # Signifies that your application has been suspended and no API access can take place
45
45
  # until miiCard releases the suspension on your application.
46
46
  BLACKLISTED = 2000
@@ -55,7 +55,7 @@ module MiiApiErrorCode
55
55
  # A general exception occurred during processing - details may be available
56
56
  # in the error_message property of the response object depending upon the
57
57
  # nature of the exception.
58
- EXCEPTION = 10000
58
+ EXCEPTION = 10000
59
59
  end
60
60
 
61
61
  # Describes the overall status of an API call.
@@ -199,51 +199,53 @@ class MiiUserProfile
199
199
  attr_accessor :previous_first_name, :previous_middle_name, :previous_last_name
200
200
  attr_accessor :last_verified, :profile_url, :profile_short_url, :card_image_url, :email_addresses, :identities, :postal_addresses
201
201
  attr_accessor :phone_numbers, :web_properties, :identity_assured, :has_public_profile
202
- attr_accessor :public_profile
202
+ attr_accessor :public_profile, :date_of_birth
203
203
 
204
204
  def initialize(
205
205
  username,
206
206
  salutation,
207
- first_name,
208
- middle_name,
209
- last_name,
210
- previous_first_name,
211
- previous_middle_name,
212
- previous_last_name,
213
- last_verified,
214
- profile_url,
215
- profile_short_url,
216
- card_image_url,
217
- email_addresses,
218
- identities,
219
- phone_numbers,
220
- postal_addresses,
221
- web_properties,
222
- identity_assured,
223
- has_public_profile,
224
- public_profile
207
+ first_name,
208
+ middle_name,
209
+ last_name,
210
+ previous_first_name,
211
+ previous_middle_name,
212
+ previous_last_name,
213
+ last_verified,
214
+ profile_url,
215
+ profile_short_url,
216
+ card_image_url,
217
+ email_addresses,
218
+ identities,
219
+ phone_numbers,
220
+ postal_addresses,
221
+ web_properties,
222
+ identity_assured,
223
+ has_public_profile,
224
+ public_profile,
225
+ date_of_birth
225
226
  )
226
227
 
227
228
  @username= username
228
229
  @salutation = salutation
229
- @first_name = first_name
230
- @middle_name = middle_name
231
- @last_name = last_name
232
- @previous_first_name = previous_first_name
233
- @previous_middle_name = previous_middle_name
234
- @previous_last_name = previous_last_name
235
- @last_verified = last_verified
236
- @profile_url = profile_url
237
- @profile_short_url = profile_short_url
238
- @card_image_url = card_image_url
239
- @email_addresses = email_addresses
240
- @identities = identities
241
- @phone_numbers = phone_numbers
242
- @postal_addresses = postal_addresses
243
- @web_properties = web_properties
244
- @identity_assured = identity_assured
245
- @has_public_profile = has_public_profile
246
- @public_profile = public_profile
230
+ @first_name = first_name
231
+ @middle_name = middle_name
232
+ @last_name = last_name
233
+ @previous_first_name = previous_first_name
234
+ @previous_middle_name = previous_middle_name
235
+ @previous_last_name = previous_last_name
236
+ @last_verified = last_verified
237
+ @profile_url = profile_url
238
+ @profile_short_url = profile_short_url
239
+ @card_image_url = card_image_url
240
+ @email_addresses = email_addresses
241
+ @identities = identities
242
+ @phone_numbers = phone_numbers
243
+ @postal_addresses = postal_addresses
244
+ @web_properties = web_properties
245
+ @identity_assured = identity_assured
246
+ @has_public_profile = has_public_profile
247
+ @public_profile = public_profile
248
+ @date_of_birth = date_of_birth
247
249
  end
248
250
 
249
251
  def self.from_hash(hash)
@@ -303,7 +305,8 @@ class MiiUserProfile
303
305
  web_properties_parsed,
304
306
  hash['IdentityAssured'],
305
307
  hash['HasPublicProfile'],
306
- public_profile_parsed
308
+ public_profile_parsed,
309
+ Util::parse_dot_net_json_datetime(hash['DateOfBirth'])
307
310
  )
308
311
  end
309
312
  end
@@ -323,11 +326,11 @@ class MiiApiResponse
323
326
  payload_json = hash["Data"]
324
327
 
325
328
  if payload_json && !data_processor.nil?
326
- if array_type_payload
327
- payload = payload_json.map{|item| data_processor.call(item)}
328
- else
329
- payload = data_processor.call(payload_json)
330
- end
329
+ if array_type_payload
330
+ payload = payload_json.map{|item| data_processor.call(item)}
331
+ else
332
+ payload = data_processor.call(payload_json)
333
+ end
331
334
  elsif !(payload_json.nil?)
332
335
  payload = payload_json
333
336
  else
@@ -345,39 +348,39 @@ class MiiApiResponse
345
348
  end
346
349
 
347
350
  class IdentitySnapshotDetails
348
- attr_accessor :snapshot_id, :username, :timestamp_utc, :was_test_user
349
-
350
- def initialize(snapshot_id, username, timestamp_utc, was_test_user)
351
- @snapshot_id = snapshot_id
352
- @username = username
353
- @timestamp_utc = timestamp_utc
354
- @was_test_user = was_test_user
355
- end
356
-
357
- def self.from_hash(hash)
358
- return IdentitySnapshotDetails.new(
359
- hash["SnapshotId"],
360
- hash["Username"],
361
- Util::parse_dot_net_json_datetime(hash["TimestampUtc"]),
362
- hash["WasTestUser"]
363
- )
364
- end
351
+ attr_accessor :snapshot_id, :username, :timestamp_utc, :was_test_user
352
+
353
+ def initialize(snapshot_id, username, timestamp_utc, was_test_user)
354
+ @snapshot_id = snapshot_id
355
+ @username = username
356
+ @timestamp_utc = timestamp_utc
357
+ @was_test_user = was_test_user
358
+ end
359
+
360
+ def self.from_hash(hash)
361
+ return IdentitySnapshotDetails.new(
362
+ hash["SnapshotId"],
363
+ hash["Username"],
364
+ Util::parse_dot_net_json_datetime(hash["TimestampUtc"]),
365
+ hash["WasTestUser"]
366
+ )
367
+ end
365
368
  end
366
369
 
367
370
  class IdentitySnapshot
368
- attr_accessor :details, :snapshot
369
-
370
- def initialize(details, snapshot)
371
- @details = details
372
- @snapshot = snapshot
373
- end
374
-
375
- def self.from_hash(hash)
376
- return IdentitySnapshot.new(
377
- IdentitySnapshotDetails::from_hash(hash["Details"]),
378
- MiiUserProfile::from_hash(hash["Snapshot"])
379
- )
380
- end
371
+ attr_accessor :details, :snapshot
372
+
373
+ def initialize(details, snapshot)
374
+ @details = details
375
+ @snapshot = snapshot
376
+ end
377
+
378
+ def self.from_hash(hash)
379
+ return IdentitySnapshot.new(
380
+ IdentitySnapshotDetails::from_hash(hash["Details"]),
381
+ MiiUserProfile::from_hash(hash["Snapshot"])
382
+ )
383
+ end
381
384
  end
382
385
 
383
386
  class MiiCardOAuthServiceBase
@@ -419,18 +422,18 @@ class MiiCardOAuthClaimsService < MiiCardOAuthServiceBase
419
422
 
420
423
  return make_request(MiiCardServiceUrls.get_method_url('AssuranceImage'), params, nil, false)
421
424
  end
422
-
423
- def get_identity_snapshot_details(snapshot_id = nil)
424
- params = Hash["snapshotId", snapshot_id]
425
-
426
- return make_request(MiiCardServiceUrls.get_method_url('GetIdentitySnapshotDetails'), params, IdentitySnapshotDetails.method(:from_hash), true, true)
427
- end
428
-
429
- def get_identity_snapshot(snapshot_id)
430
- params = Hash["snapshotId", snapshot_id]
431
-
432
- return make_request(MiiCardServiceUrls.get_method_url('GetIdentitySnapshot'), params, IdentitySnapshot.method(:from_hash), true)
433
- end
425
+
426
+ def get_identity_snapshot_details(snapshot_id = nil)
427
+ params = Hash["snapshotId", snapshot_id]
428
+
429
+ return make_request(MiiCardServiceUrls.get_method_url('GetIdentitySnapshotDetails'), params, IdentitySnapshotDetails.method(:from_hash), true, true)
430
+ end
431
+
432
+ def get_identity_snapshot(snapshot_id)
433
+ params = Hash["snapshotId", snapshot_id]
434
+
435
+ return make_request(MiiCardServiceUrls.get_method_url('GetIdentitySnapshot'), params, IdentitySnapshot.method(:from_hash), true)
436
+ end
434
437
 
435
438
  private
436
439
  def make_request(url, post_data, payload_processor, wrapped_response, array_type_payload = false)
@@ -440,7 +443,7 @@ class MiiCardOAuthClaimsService < MiiCardOAuthServiceBase
440
443
  response = access_token.post(url, post_data.to_json(), { 'Content-Type' => 'application/json' })
441
444
 
442
445
  if wrapped_response
443
- return MiiApiResponse::from_hash(JSON.parse(response.body), payload_processor, array_type_payload)
446
+ return MiiApiResponse::from_hash(JSON.parse(response.body), payload_processor, array_type_payload)
444
447
  elsif !payload_processor.nil?
445
448
  return payload_processor.call(response.body)
446
449
  else
@@ -453,6 +456,6 @@ class Util
453
456
  # Modified from http://stackoverflow.com/questions/1272195/c-sharp-serialized-json-date-to-ruby
454
457
  def self.parse_dot_net_json_datetime(datestring)
455
458
  seconds_since_epoch = (datestring.scan(/[0-9]+/)[0].to_i) / 1000.0
456
- return Time.at(seconds_since_epoch)
459
+ return DateTime.strptime(seconds_since_epoch.to_s, '%s')
457
460
  end
458
461
  end
@@ -1,10 +1,11 @@
1
1
  require 'json'
2
2
  require 'miiCardConsumers'
3
3
  require 'test/unit'
4
+ require 'date'
4
5
 
5
6
  class TestSomething < Test::Unit::TestCase
6
7
  def setup
7
- @jsonBody = '{"CardImageUrl":"https:\/\/my.miicard.com\/img\/test.png","EmailAddresses":[{"Verified":true,"Address":"test@example.com","DisplayName":"testEmail","IsPrimary":true},{"Verified":false,"Address":"test2@example.com","DisplayName":"test2Email","IsPrimary":false}],"FirstName":"Test","HasPublicProfile":true,"Identities":null,"IdentityAssured":true,"LastName":"User","LastVerified":"\/Date(1345812103)\/","MiddleName":"Middle","PhoneNumbers":[{"Verified":true,"CountryCode":"44","DisplayName":"Default","IsMobile":true,"IsPrimary":true,"NationalNumber":"7800123456"},{"Verified":false,"CountryCode":"44","DisplayName":"Default","IsMobile":false,"IsPrimary":false,"NationalNumber":"7800123457"}],"PostalAddresses":[{"House":"Addr1 House1","Line1":"Addr1 Line1","Line2":"Addr1 Line2","City":"Addr1 City","Region":"Addr1 Region","Code":"Addr1 Code","Country":"Addr1 Country","IsPrimary":true,"Verified":true},{"House":"Addr2 House1","Line1":"Addr2 Line1","Line2":"Addr2 Line2","City":"Addr2 City","Region":"Addr2 Region","Code":"Addr2 Code","Country":"Addr2 Country","IsPrimary":false,"Verified":false}],"PreviousFirstName":"PrevFirst","PreviousLastName":"PrevLast","PreviousMiddleName":"PrevMiddle","ProfileShortUrl":"http:\/\/miicard.me\/123456","ProfileUrl":"https:\/\/my.miicard.com\/card\/test","PublicProfile":{"CardImageUrl":"https:\/\/my.miicard.com\/img\/test.png","FirstName":"Test","HasPublicProfile":true,"IdentityAssured":true,"LastName":"User","LastVerified":"\/Date(1345812103)\/","MiddleName":"Middle","PreviousFirstName":"PrevFirst","PreviousLastName":"PrevLast","PreviousMiddleName":"PrevMiddle","ProfileShortUrl":"http:\/\/miicard.me\/123456","ProfileUrl":"https:\/\/my.miicard.com\/card\/test","PublicProfile":null,"Salutation":"Ms","Username":"testUser"},"Salutation":"Ms","Username":"testUser","WebProperties":[{"Verified":true,"DisplayName":"example.com","Identifier":"example.com","Type":0},{"Verified":false,"DisplayName":"2.example.com","Identifier":"http:\/\/www.2.example.com","Type":1}]}'
8
+ @jsonBody = '{"CardImageUrl":"https:\/\/my.miicard.com\/img\/test.png","DateOfBirth":"\/Date(435046400000)\/","EmailAddresses":[{"Verified":true,"Address":"test@example.com","DisplayName":"testEmail","IsPrimary":true},{"Verified":false,"Address":"test2@example.com","DisplayName":"test2Email","IsPrimary":false}],"FirstName":"Test","HasPublicProfile":true,"Identities":null,"IdentityAssured":true,"LastName":"User","LastVerified":"\/Date(1345812103000)\/","MiddleName":"Middle","PhoneNumbers":[{"Verified":true,"CountryCode":"44","DisplayName":"Default","IsMobile":true,"IsPrimary":true,"NationalNumber":"7800123456"},{"Verified":false,"CountryCode":"44","DisplayName":"Default","IsMobile":false,"IsPrimary":false,"NationalNumber":"7800123457"}],"PostalAddresses":[{"House":"Addr1 House1","Line1":"Addr1 Line1","Line2":"Addr1 Line2","City":"Addr1 City","Region":"Addr1 Region","Code":"Addr1 Code","Country":"Addr1 Country","IsPrimary":true,"Verified":true},{"House":"Addr2 House1","Line1":"Addr2 Line1","Line2":"Addr2 Line2","City":"Addr2 City","Region":"Addr2 Region","Code":"Addr2 Code","Country":"Addr2 Country","IsPrimary":false,"Verified":false}],"PreviousFirstName":"PrevFirst","PreviousLastName":"PrevLast","PreviousMiddleName":"PrevMiddle","ProfileShortUrl":"http:\/\/miicard.me\/123456","ProfileUrl":"https:\/\/my.miicard.com\/card\/test","PublicProfile":{"CardImageUrl":"https:\/\/my.miicard.com\/img\/test.png","DateOfBirth":"\/Date(435046400000)\/","FirstName":"Test","HasPublicProfile":true,"IdentityAssured":true,"LastName":"User","LastVerified":"\/Date(1345812103000)\/","MiddleName":"Middle","PreviousFirstName":"PrevFirst","PreviousLastName":"PrevLast","PreviousMiddleName":"PrevMiddle","ProfileShortUrl":"http:\/\/miicard.me\/123456","ProfileUrl":"https:\/\/my.miicard.com\/card\/test","PublicProfile":null,"Salutation":"Ms","Username":"testUser"},"Salutation":"Ms","Username":"testUser","WebProperties":[{"Verified":true,"DisplayName":"example.com","Identifier":"example.com","Type":0},{"Verified":false,"DisplayName":"2.example.com","Identifier":"http:\/\/www.2.example.com","Type":1}]}'
8
9
  @jsonResponseBody = '{"ErrorCode":0,"Status":0,"ErrorMessage":"A test error message","Data":true}'
9
10
  end
10
11
 
@@ -99,7 +100,8 @@ class TestSomething < Test::Unit::TestCase
99
100
  assert_equal("PrevLast", obj.previous_last_name)
100
101
 
101
102
  assert_equal(true, obj.identity_assured)
102
- assert_equal("/Date(1345812103)/", obj.last_verified)
103
+ assert_equal(DateTime.strptime('1345812103','%s'), obj.last_verified)
104
+ assert_equal(DateTime.strptime('435046400', '%s'), obj.date_of_birth)
103
105
 
104
106
  assert_equal(true, obj.has_public_profile)
105
107
  assert_equal("http://miicard.me/123456", obj.profile_short_url)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miiCardConsumers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-11 00:00:00.000000000 Z
12
+ date: 2013-02-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth
@@ -46,7 +46,7 @@ dependencies:
46
46
  description: A simple wrapper library around the miiCard API that makes calling into
47
47
  it easier - just new up a MiiApiOAuthClaimsService with your consumer key, secret,
48
48
  access token and secret and start calling methods.
49
- email: paul.oneill@miicard.com
49
+ email: info@miicard.com
50
50
  executables: []
51
51
  extensions: []
52
52
  extra_rdoc_files: []