elibri_watermarking 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,80 @@
1
+ # Biblioteka Elibri Watermarking
2
+
3
+ ## Opis
4
+
5
+ Biblioteka Elibri Watermarking, dostarczana jest w postaci pliku gema (dostępna na rubygems: https://rubygems.org/gems/elibri_watermarking ).
6
+ Użycie wymaga wcześniejszego kontaktu z serwisem Elibri (kontakt@elibri.com.pl), w celu otrzymania danych dostępowych do API.
7
+
8
+ ## Zastosowanie
9
+
10
+ Biblioteka Elibri Watermarking upraszcza operacje wykonywane na API watermarkingu Elibri, abstrahując je do operacji wykonywanych na obiekcie Rubyego.
11
+
12
+ ## Użycie
13
+
14
+ Aby użyć biblioteki w aplikacji Ruby on Rails, do pliku Gemfile należy dodać:
15
+
16
+ ```gem 'elibri_watermarking```
17
+
18
+ aby użyć gema, poza aplikacją rails należy go zainstalować, komendą:
19
+
20
+ ```gem install elibri_watermarking```
21
+
22
+ a następnie w konsoli w której chcemy użyć biblioteki wpisujemy:
23
+
24
+ ```ruby
25
+ require 'rubygems'
26
+ require 'elibri_watermarking'
27
+ ```
28
+
29
+ Następnie musimy zainicjalizować bibliotekę, podając token i secret, otrzymane od Elibri:
30
+ ```ruby
31
+ client = ElibriWatermarking::Client.new('token', 'secret')
32
+ ```
33
+
34
+ Biblioteka daje nam do dyspozycji parę metod, odpowiadających wywołaniom metod API watermarkingu elibri:
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
37
+ * deliver (przyjmuje jeden parametr: identifykator transacji [otrzymany od watermark]) - wywołuje żądanie dostarczenia zwatermarkowanego pliku do bucketu klienta na s3
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
+ * 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
+
41
+ ## Błędy
42
+
43
+ Wywołanie poszczególnych metod może spowodować wywołanie jednego z następujących wyjątków:
44
+
45
+ * ParametersError - do serwera zostały wysłane złe parametry
46
+ * AuthenticationError - podany został zły token lub zły sig
47
+ * AuthorizationError - podany klient nie ma dostępu żądanego produktu, lub ten produkt nie istnieje, lub produkt nie posiada żądanego formatu
48
+ * ServerException - wystąpił wewnętrzny błąd serwera elibri
49
+ * RequestExpired - podany został zbyt stary request (request ważny jest 60 sekund)
50
+
51
+ Wszystkie te wyjątki, dziedziczą po klasie ElibriException, a także zawierają w treści opis błędu otrzymanego od API.
52
+
53
+ ## Odebranie pliku
54
+
55
+ Po wywołaniu komendy deliver, plik zostaje załadowany do bucketu s3 (dane dostępowego do niego, otrzymacie Państwo podczas zakładania konta API). Sklep zobowiązany jest ściągnąć zwatermarkowany plik z bucketu s3 i przechowywać go po swojej stronie przez minimum 7 dni.
56
+ Plik zawsze będzie nazwany zgodnie z następującą konwencją:
57
+
58
+ ```
59
+ trans_id.format
60
+ ```
61
+
62
+ gdzie trans_id to identyfikator transakcji w systemie elibri (otrzymany podczas zlecania watermarkingu), a format to jeden z: epub, mobi.
63
+
64
+
65
+ Przykładowy kod umożliwiający odczytanie i zapisanie na własnym serwerze zwatermarkowanego pliku z bucketu s3:
66
+ ```ruby
67
+ require 'rubygems'
68
+ require 'aws-sdk'
69
+
70
+ s3 = AWS::S3.new(:access_key_id => 'amazon access key', :secret_access_key => 'amazon secret key')
71
+ File.open('ścieżka do pliku docelowego na serwerze', 'w') do |f|
72
+ f.puts s3.buckets['nazwa bucketu otrzymana przy rejestracji'].objects["identyfikator transacji.żądany format"].read
73
+ end
74
+ ```
75
+
76
+ ## Powiadomienie o dostępności pliku
77
+
78
+ Po wykonaniu polecenia deliver, plik zostanie umieszczony w buckecie s3. Sklep zostanie powiadomiony o tym fakcie, za pomocą requestu na podany przez niego endpoint.
79
+
80
+ Request jest typu post, zawiera w swojej treści identyfikator ukończonej transakcji - po jego otrzymaniu sklep powinien odebrać plik z bucketu s3 i zapisać go u siebie na serwerze.
@@ -81,6 +81,8 @@ module ElibriWatermarking
81
81
  raise AuthorizationError.new(res.body)
82
82
  when "Net::HTTPInternalServerError"
83
83
  raise ServerException.new(res.body)
84
+ when "Net::HTTPRequestTimeOut"
85
+ raise RequestExpired.new(res.body)
84
86
  when "Net::HTTPOK"
85
87
  return res.body
86
88
  end
@@ -18,5 +18,8 @@ module ElibriWatermarking
18
18
  class WrongFormats < ElibriException
19
19
  end
20
20
 
21
+ class RequestExpired < ElibriException
22
+ end
23
+
21
24
 
22
25
  end
@@ -1,3 +1,3 @@
1
1
  module ElibriWatermarking
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,48 +1,42 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: elibri_watermarking
3
- version: !ruby/object:Gem::Version
4
- hash: 13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 4
9
- - 1
10
- version: 0.4.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Piotr Szmielew
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-07-30 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-08-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rake
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
34
30
  description: Gem designed to help in use of Elibri watermarking API.
35
- email:
31
+ email:
36
32
  - p.szmielew@ava.waw.pl
37
33
  executables: []
38
-
39
34
  extensions: []
40
-
41
35
  extra_rdoc_files: []
42
-
43
- files:
36
+ files:
44
37
  - .gitignore
45
38
  - Gemfile
39
+ - README.md
46
40
  - Rakefile
47
41
  - elibri_watermarking.gemspec
48
42
  - lib/elibri_watermarking.rb
@@ -51,36 +45,26 @@ files:
51
45
  - lib/elibri_watermarking/version.rb
52
46
  homepage: http://elibri.com.pl
53
47
  licenses: []
54
-
55
48
  post_install_message:
56
49
  rdoc_options: []
57
-
58
- require_paths:
50
+ require_paths:
59
51
  - lib
60
- required_ruby_version: !ruby/object:Gem::Requirement
52
+ required_ruby_version: !ruby/object:Gem::Requirement
61
53
  none: false
62
- requirements:
63
- - - ">="
64
- - !ruby/object:Gem::Version
65
- hash: 3
66
- segments:
67
- - 0
68
- version: "0"
69
- required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
59
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
76
- - 0
77
- version: "0"
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
78
64
  requirements: []
79
-
80
65
  rubyforge_project: elibri_watermarking
81
- rubygems_version: 1.8.21
66
+ rubygems_version: 1.8.24
82
67
  signing_key:
83
68
  specification_version: 3
84
69
  summary: Gem designed to help in use of Elibri watermarking API.
85
70
  test_files: []
86
-