elibri_watermarking 0.5.0 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -33,26 +33,27 @@ client = ElibriWatermarking::Client.new('token', 'secret')
33
33
 
34
34
  Biblioteka daje nam do dyspozycji parę metod, odpowiadających wywołaniom metod API watermarkingu elibri:
35
35
 
36
- * watermark (przyjmuje parametry: identyfikator [ISBN bez myślników lub record_reference], formaty [zapisana po przecinku lista formatów do watermarkingu - najcześciej "epub,mobi"], widoczny watermark [tekst widoczny na końcu każdego rozdziału], dopisek [krótki tekst dopisany do tytułu], zwraca identyfikator transakcji, który klient zobowiązany jest zapisać i przechowywać) - wywołuje żądanie watermarku na podanym produkcie, w podanych formatach
36
+ * watermark (przyjmuje parametry: identyfikator [ISBN bez myślników lub record_reference], formaty [zapisana po przecinku lista formatów do watermarkingu - najcześciej "epub,mobi"], widoczny watermark [tekst widoczny na końcu każdego rozdziału], dopisek [krótki tekst dopisany do tytułu], supplier [numeryczny identyfikator dostawcy pliki], client_symbol [alfanumeryczny identyfikator zapisany przy transakcji], customer_ip [ip klienta końcowego, do celów statystycznych] - zwraca identyfikator transakcji, który klient zobowiązany jest zapisać i przechowywać) - wywołuje żądanie watermarku na podanym produkcie, w podanych formatach
37
37
  * deliver (przyjmuje jeden parametr: identifykator transacji [otrzymany od watermark]) - wywołuje żądanie dostarczenia zwatermarkowanego pliku do bucketu klienta na s3
38
38
  * watermark_and_deliver (przyjmuje parametry identyczne jak watermark, zwraca identyfikator transacji, który klient zobowiązany jest zapisać i przechowywać) - wywołuje watermarkowanie pliku, a następnie żąda jego dostarczenia do bucketu klienta na s3
39
39
  * retry (przyjmuje jako parametr identyfikator transakcji, zwraca identyfikator nowej transakcji) - wywołuje żądanie ponowienia watermarkingu pliku, który został już ściągnięty (uwaga - sklep jest zobowiązany do przetrzymywanie zwatermarkowanego pliku przynajmniej przez 7 dni, dopiero po tym czasie możliwe jest wywołanie retry). Watermarking wykonywany jest z identycznymi parametrami, jak poprzedni. Klient zobowiązany jest zapisać i przechowywać nowy identyfikator transakcji. Po komendzie retry, niezbędne jest wywołanie komendy deliver w celu dostarczeni pliku do bucketu s3. Uwaga! Każdą transakcję retryować mozna tylko raz - w przypadku kolejnego żądania retry, konieczne jest podanie identyfikatora transakcji otrzymanego od poprzedniej komendy retry.
40
40
  * available_files - zwraca listę dostępnych do watermarkingu przez klienta plików. Pliki są zwracane w postaci tablicy hashów, postaci:
41
41
  ```ruby
42
42
  [
43
- {:product =>
44
- {
45
- :record_reference => 'a'
46
- :publisher_name => 'b'
47
- :publisher_id => 1
48
- :isbn => '1234'
49
- :title => 'Tytuł',
50
- :formats => ["epub", "mobi"]
51
- :premiere => "data premiery (jeśli w przyszłości - plik jest jeszcze niedostępny)"
52
- }
43
+ {
44
+ :record_reference => 'a'
45
+ :publisher_name => 'b'
46
+ :publisher_id => 1
47
+ :isbn => '1234'
48
+ :title => 'Tytuł',
49
+ :formats => ["epub", "mobi"]
50
+ :available_date => "data od kiedy plik jest dostępny - jeśli pole nie występuje, znaczy to, że plik jest dostępny"
51
+ :suppliers => [1, 2, 3] #tablica zawierająca identyfikatora dostawców, mogących dostarczyć plik dla danego klienta
53
52
  }
54
53
  ]
55
54
  ```
55
+ * check_suppliers (przyjmuje jeden parametr: identyfikator [ISBN bez myślników lub record_reference]) - zwraca listę dostawców danego pliku, w postaci tablicy zawierającej numeryczne identyfikatory dostawców
56
+ * get_supplier (przyjmuje jeden parametr: numeryczny identyfikator dostawcy w systemie eLibri) - zwraca nazwę dostawcy o podanym identyfikatorze
56
57
 
57
58
  ## Błędy
58
59
 
@@ -18,16 +18,26 @@ module ElibriWatermarking
18
18
  self.url = url
19
19
  end
20
20
 
21
- def watermark(ident, formats, visible_watermark, title_postfix)
21
+ def watermark(ident, formats, visible_watermark, title_postfix, *args)
22
+ supplier = args[0]
23
+ client_symbol = args[1]
24
+ customer_ip = args[2]
22
25
  ident =~ /^[0-9]+$/ ? ident_type = 'isbn' : ident_type = 'record_reference'
23
- raise WrongFormats.new if formats.is_a?(String) && !formats =~ /^(epub|mobi|,)+$/
24
- raise WrongFormats.new if formats.is_a?(Array) && (formats != ['epub','mobi'] && formats != ['mobi','epub'] && formats != ['mobi'] && formats != ['epub'])
26
+ raise WrongFormats.new if formats.is_a?(String) && !formats =~ /^(epub|mobi|pdf|,)+$/
27
+ raise WrongFormats.new if formats.is_a?(Array) && ((formats - ['epub','mobi','pdf']) != [] || (formats & ['epub','mobi','pdf']).count < 1)
25
28
  uri = URI(self.url + '/watermark')
26
29
  formats = formats.join(",") if formats.is_a?(Array)
27
30
  timestamp = Time.now.to_i
28
31
  sig = CGI.escape(Base64.encode64(OpenSSL::HMAC.digest('sha1', timestamp.to_s, self.secret)).strip)
29
32
  data = {ident_type => ident, 'formats' => formats, 'visible_watermark' => visible_watermark,
30
- 'title_postfix' => title_postfix, 'stamp' => timestamp, 'sig' => sig, 'token' => self.token}
33
+ 'title_postfix' => title_postfix, 'stamp' => timestamp, 'sig' => sig, 'token' => self.token,
34
+ 'client_symbol' => client_symbol}
35
+ if supplier
36
+ data.merge!(:supplier => supplier)
37
+ end
38
+ if customer_ip
39
+ data.merge!(:customer_ip => customer_ip)
40
+ end
31
41
  req = Net::HTTP::Post.new(uri.path)
32
42
  req.set_form_data(data)
33
43
  http = Net::HTTP.new(uri.host, uri.port)
@@ -79,8 +89,53 @@ module ElibriWatermarking
79
89
  return JSON.parse(validate_response(res))
80
90
  end
81
91
 
82
- def watermark_and_deliver(ident, formats, visible_watermark, title_postfix)
83
- trans_id = watermark(ident, formats, visible_watermark, title_postfix)
92
+ def soon_available_files
93
+ uri = URI(self.url + '/soon_available_files.json')
94
+ timestamp = Time.now.to_i
95
+ sig = CGI.escape(Base64.encode64(OpenSSL::HMAC.digest('sha1', timestamp.to_s, self.secret)).strip)
96
+ data = {'stamp' => timestamp, 'sig' => sig, 'token' => self.token}
97
+ req = Net::HTTP::Get.new(uri.path)
98
+ req.set_form_data(data)
99
+ http = Net::HTTP.new(uri.host, uri.port)
100
+ http.use_ssl = true
101
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
102
+ res = http.start {|http| http.request(req) }
103
+ return JSON.parse(validate_response(res))
104
+ end
105
+
106
+ def check_suppliers(ident)
107
+ ident =~ /^[0-9]+$/ ? ident_type = 'isbn' : ident_type = 'record_reference'
108
+ uri = URI(self.url + '/check_suppliers')
109
+ timestamp = Time.now.to_i
110
+ sig = CGI.escape(Base64.encode64(OpenSSL::HMAC.digest('sha1', timestamp.to_s, self.secret)).strip)
111
+ data = {'stamp' => timestamp, 'sig' => sig, 'token' => self.token, ident_type => ident}
112
+ req = Net::HTTP::Get.new(uri.path)
113
+ req.set_form_data(data)
114
+ http = Net::HTTP.new(uri.host, uri.port)
115
+ http.use_ssl = true
116
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
117
+ res = http.start {|http| http.request(req) }
118
+ return validate_response(res).split(",").map { |x| x.to_i }
119
+ end
120
+
121
+ def get_supplier(id)
122
+ uri = URI(self.url + '/get_supplier')
123
+ timestamp = Time.now.to_i
124
+ sig = CGI.escape(Base64.encode64(OpenSSL::HMAC.digest('sha1', timestamp.to_s, self.secret)).strip)
125
+ data = {'stamp' => timestamp, 'sig' => sig, 'token' => self.token, 'id' => id}
126
+ req = Net::HTTP::Get.new(uri.path)
127
+ req.set_form_data(data)
128
+ http = Net::HTTP.new(uri.host, uri.port)
129
+ http.use_ssl = true
130
+ http.verify_mode = OpenSSL::SSL::VERIFY_NONE
131
+ res = http.start {|http| http.request(req) }
132
+ return validate_response(res)
133
+ end
134
+
135
+ def watermark_and_deliver(ident, formats, visible_watermark, title_postfix, *args)
136
+ supplier = args[0]
137
+ client_symbol = args[1]
138
+ trans_id = watermark(ident, formats, visible_watermark, title_postfix, supplier, client_symbol)
84
139
  return trans_id if deliver(trans_id) == "OK"
85
140
  end
86
141
 
@@ -1,3 +1,3 @@
1
1
  module ElibriWatermarking
2
- VERSION = "0.5.0"
2
+ VERSION = "0.7.3"
3
3
  end
metadata CHANGED
@@ -1,39 +1,46 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: elibri_watermarking
3
- version: !ruby/object:Gem::Version
4
- version: 0.5.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 5
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 7
9
+ - 3
10
+ version: 0.7.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Piotr Szmielew
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-08-10 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-10-16 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: rake
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
22
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :development
33
+ version_requirements: *id001
30
34
  description: Gem designed to help in use of Elibri watermarking API.
31
- email:
35
+ email:
32
36
  - p.szmielew@ava.waw.pl
33
37
  executables: []
38
+
34
39
  extensions: []
40
+
35
41
  extra_rdoc_files: []
36
- files:
42
+
43
+ files:
37
44
  - .gitignore
38
45
  - Gemfile
39
46
  - README.md
@@ -45,32 +52,36 @@ files:
45
52
  - lib/elibri_watermarking/version.rb
46
53
  homepage: http://elibri.com.pl
47
54
  licenses: []
55
+
48
56
  post_install_message:
49
57
  rdoc_options: []
50
- require_paths:
58
+
59
+ require_paths:
51
60
  - lib
52
- required_ruby_version: !ruby/object:Gem::Requirement
61
+ required_ruby_version: !ruby/object:Gem::Requirement
53
62
  none: false
54
- requirements:
55
- - - ! '>='
56
- - !ruby/object:Gem::Version
57
- version: '0'
58
- segments:
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ hash: 3
67
+ segments:
59
68
  - 0
60
- hash: 788559910828618553
61
- required_rubygems_version: !ruby/object:Gem::Requirement
69
+ version: "0"
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
71
  none: false
63
- requirements:
64
- - - ! '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
- segments:
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
68
77
  - 0
69
- hash: 788559910828618553
78
+ version: "0"
70
79
  requirements: []
80
+
71
81
  rubyforge_project: elibri_watermarking
72
- rubygems_version: 1.8.24
82
+ rubygems_version: 1.8.21
73
83
  signing_key:
74
84
  specification_version: 3
75
85
  summary: Gem designed to help in use of Elibri watermarking API.
76
86
  test_files: []
87
+