elibri_watermarking 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
-