Class: ElibriWatermarking::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/elibri_watermarking/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(token, secret, servers = nil) ⇒ Client

Returns a new instance of Client.



16
17
18
19
20
# File 'lib/elibri_watermarking/client.rb', line 16

def initialize(token, secret, servers = nil)
  self.token = token
  self.secret = secret
  self.servers = servers
end

Instance Attribute Details

#loggerObject

Returns the value of attribute logger.



14
15
16
# File 'lib/elibri_watermarking/client.rb', line 14

def logger
  @logger
end

#secretObject

Returns the value of attribute secret.



14
15
16
# File 'lib/elibri_watermarking/client.rb', line 14

def secret
  @secret
end

#serversObject

Returns the value of attribute servers.



14
15
16
# File 'lib/elibri_watermarking/client.rb', line 14

def servers
  @servers
end

#tokenObject

Returns the value of attribute token.



14
15
16
# File 'lib/elibri_watermarking/client.rb', line 14

def token
  @token
end

Instance Method Details

#available_filesObject



62
63
64
65
66
# File 'lib/elibri_watermarking/client.rb', line 62

def available_files
  try_with_different_servers('available_files.json') do |uri|
    return JSON.parse(get_response_from_server(uri, {}, Net::HTTP::Get))
  end
end

#check_apiObject



92
93
94
95
96
# File 'lib/elibri_watermarking/client.rb', line 92

def check_api
  try_with_different_servers('ver') do |uri|
    return get_response_from_server(uri, {}, Net::HTTP::Get)
  end
end

#check_suppliers(ident) ⇒ Object



80
81
82
83
84
85
# File 'lib/elibri_watermarking/client.rb', line 80

def check_suppliers(ident)
  ident =~ /^[0-9]+$/ ? ident_type = 'isbn' : ident_type = 'record_reference'
  try_with_different_servers('check_suppliers') do |uri|
    return get_response_from_server(uri, { ident_type => ident}, Net::HTTP::Get).split(",").map { |x| x.to_i }
  end
end

#deliver(trans_id, low_priority = false) ⇒ Object



46
47
48
49
50
51
52
# File 'lib/elibri_watermarking/client.rb', line 46

def deliver(trans_id, low_priority = false)
  try_with_different_servers('deliver') do |uri|
    data = {'trans_id' =>  trans_id}
    data.merge!(:low_priority => low_priority) if low_priority
    return get_response_from_server(uri, data, Net::HTTP::Post)
  end
end

#get_supplier(id) ⇒ Object



87
88
89
90
# File 'lib/elibri_watermarking/client.rb', line 87

def get_supplier(id)
  get_response_from_server(URI('https://www.elibri.com.pl/watermarking/get_supplier'), {:id => id}, Net::HTTP::Get)
  #to chyba moze byc tylko z glownego serwera?
end

#new_complaint(trans_id, reason) ⇒ Object



98
99
100
# File 'lib/elibri_watermarking/client.rb', line 98

def new_complaint(trans_id, reason)
  get_response_from_server(URI('https://www.elibri.com.pl/api_complaints'), {:trans_id => trans_id, :reason => reason}, Net::HTTP::Post)
end

#retry(trans_id, delivery_form = nil, low_priority = false) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/elibri_watermarking/client.rb', line 54

def retry(trans_id, delivery_form = nil, low_priority = false)
  try_with_different_servers('retry') do |uri|
    data = {'trans_id' =>  trans_id, 'delivery_form' => delivery_form}
    data.merge!(:low_priority => low_priority) if low_priority
    return get_response_from_server(uri, data, Net::HTTP::Post)
  end
end

#soon_available_filesObject



68
69
70
71
72
# File 'lib/elibri_watermarking/client.rb', line 68

def soon_available_files
  try_with_different_servers('soon_available_files.json') do |uri|
    return JSON.parse(get_response_from_server(uri, {}, Net::HTTP::Get))
  end
end

#soon_unavailable_filesObject



74
75
76
77
78
# File 'lib/elibri_watermarking/client.rb', line 74

def soon_unavailable_files
  try_with_different_servers('soon_unavailable_files.json') do |uri|
    return JSON.parse(get_response_from_server(uri, {}, Net::HTTP::Get))
  end
end

#watermark(ident, formats, visible_watermark, title_postfix, customer_ip, client_symbol = nil, supplier = nil, delivery_form = nil, price = nil, promotion_id = nil, low_priority = false) ⇒ Object

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/elibri_watermarking/client.rb', line 22

def watermark(ident, formats, visible_watermark, title_postfix, customer_ip, client_symbol = nil, supplier = nil, 
              delivery_form = nil, price = nil, promotion_id = nil, low_priority = false)
  if ident =~ /^[0-9]+$/ && ident.size == 13
    ident_type = 'isbn'
  else
    ident_type = 'record_reference'
  end
  raise WrongFormats.new if formats.is_a?(String) && !formats =~ /^(epub|mobi|pdf|mp3_in_zip|,)+$/
  raise WrongFormats.new if formats.is_a?(Array) && ((formats - ['epub','mobi','pdf','mp3_in_zip']) != [] || (formats & ['epub','mobi','pdf','mp3_in_zip']).count < 1)
  formats = formats.join(",") if formats.is_a?(Array)
  raise ParametersError.new if delivery_form && formats != 'mp3_in_zip'
  raise ParametersError.new if delivery_form && (delivery_form != 'mp3' && delivery_form != 'zip')
  data = {ident_type => ident, 'formats' => formats, 'visible_watermark' => visible_watermark,
          'title_postfix' => title_postfix, 'client_symbol' => client_symbol, 'delivery_form' => delivery_form}
  data.merge!(:supplier => supplier) if supplier
  data.merge!(:customer_ip => customer_ip) if customer_ip
  data.merge!(:price => price) if price
  data.merge!(:promotion_id => promotion_id) if promotion_id
  data.merge!(:low_priority => low_priority) if low_priority
  try_with_different_servers('watermark') do |uri|
    return get_response_from_server(uri, data, Net::HTTP::Post)
  end  
end