Class: NdrPseudonymise::Client
- Inherits:
-
Object
- Object
- NdrPseudonymise::Client
- Defined in:
- lib/ndr_pseudonymise/client.rb
Overview
A class to wrap interactions with a remote pseudonymisation service.
Sample usage, against a local pseudonymisation service:
client = NdrPseudonymise::Client.new(
host: 'localhost', port: 3000, use_ssl: false,
token: 'your_name:some_token', context: 'just testing'
)
client.pseudonymise(identifiers: { nhs_number: '0123456789' })
Instance Attribute Summary collapse
-
#context ⇒ Object
Returns the value of attribute context.
-
#host ⇒ Object
Returns the value of attribute host.
Instance Method Summary collapse
-
#initialize(host:, token:, port: 443, use_ssl: true, root_path: '/api/v1', context: nil) ⇒ Client
constructor
A new instance of Client.
-
#keys ⇒ Object
Returns a list of pseudonymisation keys that the current user is able to use.
-
#pseudonymise(identifiers:, key_names: [], variants: [], context: @context) ⇒ Object
Returns pseudonymised identifiers for the supplied identifiers.
-
#variants ⇒ Object
Returns a list of variants that the current user is able to use.
Constructor Details
#initialize(host:, token:, port: 443, use_ssl: true, root_path: '/api/v1', context: nil) ⇒ Client
Returns a new instance of Client.
19 20 21 22 23 24 |
# File 'lib/ndr_pseudonymise/client.rb', line 19 def initialize(host:, token:, port: 443, use_ssl: true, root_path: '/api/v1', context: nil) @host = Net::HTTP.new(host, port).tap { |http| http.use_ssl = use_ssl } @header = "Token token=#{token.inspect}" @root_path = root_path @context = context end |
Instance Attribute Details
#context ⇒ Object
Returns the value of attribute context.
17 18 19 |
# File 'lib/ndr_pseudonymise/client.rb', line 17 def context @context end |
#host ⇒ Object
Returns the value of attribute host.
17 18 19 |
# File 'lib/ndr_pseudonymise/client.rb', line 17 def host @host end |
Instance Method Details
#keys ⇒ Object
Returns a list of pseudonymisation keys that the current user is able to use.
Sample usage:
client.keys #=> [{name"=>"key one", "supported_variants"=>[1]}, ...]
32 33 34 |
# File 'lib/ndr_pseudonymise/client.rb', line 32 def keys get('/keys') end |
#pseudonymise(identifiers:, key_names: [], variants: [], context: @context) ⇒ Object
Returns pseudonymised identifiers for the supplied identifiers. By default, the pseudonymisation service requests all ID variants from all available keys; this can be filtered by using ‘variants` and `key_names` respectively.
Sample usage:
client.pseudonymise(identifiers: { nhs_number: '0123456789' }) #=>
[
{ "key_name"=>"key one", "variant"=>1, "pseudoid"=>"b549ef342...", "identifiers"=>... },
{ "key_name"=>"key two", "variant"=>1, "pseudoid"=>"0ebd91c13...", "identifiers"=>... },
]
client.pseudonymise(identifiers: { postcode: 'CB22 3AD', birth_date: '2000-01-01' }, key_names: ['key two']) #=>
[
{ "key_name"=>"key two", "variant"=>2, "pseudoid"=>"043d5fc1a...", "identifiers"=>... },
]
64 65 66 67 68 69 70 71 72 |
# File 'lib/ndr_pseudonymise/client.rb', line 64 def pseudonymise(identifiers:, key_names: [], variants: [], context: @context) raise ArgumentError, 'you must supply context!' if context.blank? data = { identifiers: identifiers, context: context } data[:key_names] = key_names if key_names.present? data[:variants] = variants if variants.present? post('/pseudonymise', data) end |
#variants ⇒ Object
Returns a list of variants that the current user is able to use.
Sample usage:
client.variants #=> [{"variant"=>"1", "required_identifiers" => ["nhs_number"]}, ...]
42 43 44 |
# File 'lib/ndr_pseudonymise/client.rb', line 42 def variants get('/variants') end |