42 lines
1.2 KiB
Ruby
42 lines
1.2 KiB
Ruby
|
|
module MembersService
|
||
|
|
class IdCard
|
||
|
|
|
||
|
|
def initialize(member, layout)
|
||
|
|
@member = member
|
||
|
|
if @member.present?
|
||
|
|
@pb_entity_key = @member.pb_entity_key
|
||
|
|
@layout = layout
|
||
|
|
else
|
||
|
|
raise ArgumentError, "Member not found."
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
def call
|
||
|
|
url_components = {
|
||
|
|
host: ENV["BACLIGHT_SERVER_HOST"],
|
||
|
|
port: ENV["BACLIGHT_SERVER_PORT"],
|
||
|
|
path: "/api/v1/web_id_cards/member_card/#{@pb_entity_key}/#{@layout}"
|
||
|
|
}
|
||
|
|
|
||
|
|
response = HTTParty.get(
|
||
|
|
URI::HTTP.build(url_components),
|
||
|
|
headers: { 'Content-Type' => 'application/json', 'Accept' => 'application/pdf' },
|
||
|
|
stream_body: true
|
||
|
|
)
|
||
|
|
|
||
|
|
if response.code == 200
|
||
|
|
# content_disposition = response.headers['Content-Disposition']
|
||
|
|
# {
|
||
|
|
# pdf_file: response.body,
|
||
|
|
# filename: content_disposition[/filename="?([^"]*)"?/, 1]
|
||
|
|
# }
|
||
|
|
|
||
|
|
response
|
||
|
|
else
|
||
|
|
nil
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|