Class: Imis::Api
- Inherits:
-
Object
- Object
- Imis::Api
- Defined in:
- lib/imis/api.rb
Constant Summary collapse
- AUTHENTICATION_PATH =
'Token'- API_PATH =
'api'- QUERY_PATH =
'api/Query'
Instance Attribute Summary collapse
-
#imis_id ⇒ Object
Returns the value of attribute imis_id.
-
#token ⇒ Object
readonly
Returns the value of attribute token.
-
#token_expiration ⇒ Object
readonly
Returns the value of attribute token_expiration.
Instance Method Summary collapse
-
#get(business_object_name) ⇒ Object
Get a business object for the current member.
-
#imis_id_for(certificate) ⇒ Object
Convert a member’s certificate number into an iMIS ID number.
-
#initialize(skip_authentication: false) ⇒ Api
constructor
A new instance of Api.
- #mapper ⇒ Object
-
#put(business_object_name, fields) ⇒ Object
Update only specific fields on a business object for the current member.
-
#query(query_name, query_params = {}) ⇒ Object
Run an IQA Query.
- #update(data) ⇒ Object
-
#with(id, &block) ⇒ Object
Run requests as DSL, with specific iMIS ID only maintained for this scope.
Constructor Details
#initialize(skip_authentication: false) ⇒ Api
Returns a new instance of Api.
11 12 13 |
# File 'lib/imis/api.rb', line 11 def initialize(skip_authentication: false) authenticate unless skip_authentication end |
Instance Attribute Details
#imis_id ⇒ Object
Returns the value of attribute imis_id.
9 10 11 |
# File 'lib/imis/api.rb', line 9 def imis_id @imis_id end |
#token ⇒ Object (readonly)
Returns the value of attribute token.
9 10 11 |
# File 'lib/imis/api.rb', line 9 def token @token end |
#token_expiration ⇒ Object (readonly)
Returns the value of attribute token_expiration.
9 10 11 |
# File 'lib/imis/api.rb', line 9 def token_expiration @token_expiration end |
Instance Method Details
#get(business_object_name) ⇒ Object
Get a business object for the current member
42 43 44 45 46 47 |
# File 'lib/imis/api.rb', line 42 def get(business_object_name) uri = uri_for(business_object_name) request = Net::HTTP::Get.new(uri) result = submit(uri, (request)) JSON.parse(result.body) end |
#imis_id_for(certificate) ⇒ Object
Convert a member’s certificate number into an iMIS ID number
23 24 25 26 |
# File 'lib/imis/api.rb', line 23 def imis_id_for(certificate) result = query(Imis.configuration.imis_id_query_name, { certificate: certificate }) @imis_id = result['Items']['$values'][0]['ID'] end |
#mapper ⇒ Object
76 77 78 |
# File 'lib/imis/api.rb', line 76 def mapper @mapper ||= Mapper.new(self) end |
#put(business_object_name, fields) ⇒ Object
Update only specific fields on a business object for the current member
fields - hash of shape: { field_name => new_value }
53 54 55 56 57 58 59 60 |
# File 'lib/imis/api.rb', line 53 def put(business_object_name, fields) uri = uri_for(business_object_name) request = Net::HTTP::Put.new(uri) updated = filter_fields(business_object_name, fields) request.body = JSON.dump(updated) result = submit(uri, (request)) JSON.parse(result.body) end |
#query(query_name, query_params = {}) ⇒ Object
Run an IQA Query
query_name - the full path of the query in IQA, e.g. `$/_ABC/Fiander/iMIS_ID`
query_params - hash of shape: { param_name => param_value }
67 68 69 70 71 72 73 74 |
# File 'lib/imis/api.rb', line 67 def query(query_name, query_params = {}) query_params[:QueryName] = query_name path = "#{QUERY_PATH}?#{query_params.to_query}" uri = URI(File.join(imis_hostname, path)) request = Net::HTTP::Get.new(uri) result = submit(uri, (request)) JSON.parse(result.body) end |
#update(data) ⇒ Object
80 81 82 |
# File 'lib/imis/api.rb', line 80 def update(data) mapper.update(data) end |
#with(id, &block) ⇒ Object
Run requests as DSL, with specific iMIS ID only maintained for this scope
This should be used with methods that do not change the value of ‘imis_id`
32 33 34 35 36 37 38 |
# File 'lib/imis/api.rb', line 32 def with(id, &block) old_id = imis_id self.imis_id = id instance_eval(&block) ensure self.imis_id = old_id end |