lib/oneaccess/api/v3_0/providers.rb in oneaccess-0.4.5 vs lib/oneaccess/api/v3_0/providers.rb in oneaccess-0.5.0

- old
+ new

@@ -1,8 +1,9 @@ # frozen_string_literal: true require_relative "../../response/inducement_response" +require_relative "../../response/providers_users_details_response" module ONEAccess module API module V3_0 class Providers < Base @@ -19,9 +20,55 @@ }.reject { |_, v| v.nil? } resp = send_post("inducements", inducement: params) Response::InducementResponse.from_json(resp.body) + end + + def users_details( # rubocop:disable Metrics/MethodLength + buy_side_org_id:, + provider_id:, + contract_status_id: nil, + user_id: nil, + user_email: nil, + user_reverse_entitlement_status: nil, + vendor_id: nil, + reverse_entitlement_status: nil + ) + + provider_id = comma_separated_values(provider_id) + + params = { + buysideorgid: buy_side_org_id, + contractstatusid: contract_status_id, + userid: user_id, + useremail: user_email, + userreverseentitlementstatus: user_reverse_entitlement_status, + vendorid: vendor_id, + reverseentitlementstatus: reverse_entitlement_status + }.reject { |_, value| value.nil? } + + resp = send_get("GetProviderUserDetails?providerid=#{provider_id}", params) + + Response::ProvidersUsersDetailsResponse.from_json(resp.body) + end + + private + + # We need to diffently handle comma separated values since the RestClient, + # gem URI encode the commas and this is not supported by the API. + # + # Examples: + # [1,2$,3] => '1,2%24,3' + # '1,2$,3' => '1,2%24,3' + def comma_separated_values(values) + values = values.split(",") if values.is_a?(String) + if values.is_a?(Array) + values = values.map do |value| + URI.encode_www_form_component(value) + end.join(",") + end + values end end end end end