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 +80 -0
- data/lib/elibri_watermarking/client.rb +2 -0
- data/lib/elibri_watermarking/exceptions.rb +3 -0
- data/lib/elibri_watermarking/version.rb +1 -1
- metadata +34 -50
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
|
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
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
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
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
32
22
|
type: :development
|
33
|
-
|
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
|
-
|
66
|
-
|
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
|
-
|
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.
|
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
|
-
|