elibri_watermarking 0.1
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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Rakefile +1 -0
- data/elibri_watermarking.gemspec +24 -0
- data/lib/elibri_watermarking.rb +7 -0
- data/lib/elibri_watermarking/client.rb +59 -0
- data/lib/elibri_watermarking/exceptions.rb +22 -0
- data/lib/elibri_watermarking/version.rb +3 -0
- metadata +80 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
|
3
|
+
require "elibri_watermarking/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |s|
|
|
6
|
+
s.name = "elibri_watermarking"
|
|
7
|
+
s.version = ElibriWatermarking::VERSION
|
|
8
|
+
s.authors = ["Piotr Szmielew"]
|
|
9
|
+
s.email = ["p.szmielew@ava.waw.pl"]
|
|
10
|
+
s.homepage = "http://elibri.com.pl"
|
|
11
|
+
s.summary = %q{Gem designed to help in use of Elibri watermarking API.}
|
|
12
|
+
s.description = %q{Gem designed to help in use of Elibri watermarking API.}
|
|
13
|
+
|
|
14
|
+
s.rubyforge_project = "elibri_watermarking"
|
|
15
|
+
|
|
16
|
+
s.files = `git ls-files`.split("\n")
|
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
19
|
+
s.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
# specify any dependencies here; for example:
|
|
22
|
+
s.add_development_dependency "rake"
|
|
23
|
+
# s.add_runtime_dependency "rest-client"
|
|
24
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'net/http'
|
|
2
|
+
require 'digest/md5'
|
|
3
|
+
|
|
4
|
+
module ElibriWatermarking
|
|
5
|
+
class Client
|
|
6
|
+
|
|
7
|
+
attr_accessor :token, :secret, :url
|
|
8
|
+
|
|
9
|
+
def initialize(token, secret, url='https://elibri.com.pl/watermarking')
|
|
10
|
+
self.token = token
|
|
11
|
+
self.secret = secret
|
|
12
|
+
self.url = url
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def watermark(ident, formats, visible_watermark, title_postfix)
|
|
16
|
+
ident =~ /^[0-9]+$/ ? ident_type = 'isbn' : ident_type = 'record_reference'
|
|
17
|
+
raise WrongFormats.new if formats.is_a?(String) && !formats =~ /^(epub|mobi|,)+$/
|
|
18
|
+
raise WrongFormats.new if formats.is_a?(Array) && (formats != ['epub','mobi'] && formats != ['mobi','epub'] && formats != ['mobi'] && formats != ['epub'])
|
|
19
|
+
uri = URI(self.url + '/watermark')
|
|
20
|
+
formats = formats.join(",") if formats.is_a?(Array)
|
|
21
|
+
timestamp = Time.now.to_i
|
|
22
|
+
sig = Digest::MD5.hexdigest("#{self.secret}_#{timestamp}")
|
|
23
|
+
res = Net::HTTP.post_form(uri, ident_type => ident, 'formats' => formats, 'visible_watermark' => visible_watermark,
|
|
24
|
+
'title_postfix' => title_postfix, 'stamp' => timestamp, 'sig' => sig, 'token' => self.token)
|
|
25
|
+
return validate_response(res)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def deliver(trans_id)
|
|
29
|
+
uri = URI(self.url + '/deliver')
|
|
30
|
+
timestamp = Time.now.to_i
|
|
31
|
+
sig = Digest::MD5.hexdigest("#{self.secret}_#{timestamp}")
|
|
32
|
+
res = Net::HTTP.post_form(uri, 'stamp' => timestamp, 'sig' => sig, 'token' => self.token, 'trans_id' => trans_id)
|
|
33
|
+
return validate_response(res)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def watermark_and_deliver(ident, formats, visible_watermark, title_postfix)
|
|
37
|
+
trans_id = watermark(ident, formats, visible_watermark, title_postfix)
|
|
38
|
+
return trans_id if deliver(trans_id) == "OK"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
protected
|
|
42
|
+
|
|
43
|
+
def validate_response(res)
|
|
44
|
+
case res.class.to_s
|
|
45
|
+
when "Net::HTTPBadRequest"
|
|
46
|
+
raise ParametersError.new
|
|
47
|
+
when "Net::HTTPUnauthorized"
|
|
48
|
+
raise AuthenticationError.new
|
|
49
|
+
when "Net::HTTPForbidden"
|
|
50
|
+
raise AuthorizationError.new
|
|
51
|
+
when "Net::HTTPInternalServerError"
|
|
52
|
+
raise ServerException.new
|
|
53
|
+
when "Net::HTTPOK"
|
|
54
|
+
return res.body
|
|
55
|
+
end
|
|
56
|
+
return res.body
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module ElibriWatermarking
|
|
2
|
+
|
|
3
|
+
class ElibriException < Exception
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
class ParametersError < ElibriException
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class AuthenticationError < ElibriException
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class AuthorizationError < ElibriException
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
class ServerException < ElibriException
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class WrongFormats < ElibriException
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: elibri_watermarking
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
prerelease: false
|
|
5
|
+
segments:
|
|
6
|
+
- 0
|
|
7
|
+
- 1
|
|
8
|
+
version: "0.1"
|
|
9
|
+
platform: ruby
|
|
10
|
+
authors:
|
|
11
|
+
- Piotr Szmielew
|
|
12
|
+
autorequire:
|
|
13
|
+
bindir: bin
|
|
14
|
+
cert_chain: []
|
|
15
|
+
|
|
16
|
+
date: 2012-06-23 00:00:00 +02:00
|
|
17
|
+
default_executable:
|
|
18
|
+
dependencies:
|
|
19
|
+
- !ruby/object:Gem::Dependency
|
|
20
|
+
type: :development
|
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
segments:
|
|
26
|
+
- 0
|
|
27
|
+
version: "0"
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: *id001
|
|
30
|
+
prerelease: false
|
|
31
|
+
description: Gem designed to help in use of Elibri watermarking API.
|
|
32
|
+
email:
|
|
33
|
+
- p.szmielew@ava.waw.pl
|
|
34
|
+
executables: []
|
|
35
|
+
|
|
36
|
+
extensions: []
|
|
37
|
+
|
|
38
|
+
extra_rdoc_files: []
|
|
39
|
+
|
|
40
|
+
files:
|
|
41
|
+
- .gitignore
|
|
42
|
+
- Gemfile
|
|
43
|
+
- Rakefile
|
|
44
|
+
- elibri_watermarking.gemspec
|
|
45
|
+
- lib/elibri_watermarking.rb
|
|
46
|
+
- lib/elibri_watermarking/client.rb
|
|
47
|
+
- lib/elibri_watermarking/exceptions.rb
|
|
48
|
+
- lib/elibri_watermarking/version.rb
|
|
49
|
+
has_rdoc: true
|
|
50
|
+
homepage: http://elibri.com.pl
|
|
51
|
+
licenses: []
|
|
52
|
+
|
|
53
|
+
post_install_message:
|
|
54
|
+
rdoc_options: []
|
|
55
|
+
|
|
56
|
+
require_paths:
|
|
57
|
+
- lib
|
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
segments:
|
|
63
|
+
- 0
|
|
64
|
+
version: "0"
|
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - ">="
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
segments:
|
|
70
|
+
- 0
|
|
71
|
+
version: "0"
|
|
72
|
+
requirements: []
|
|
73
|
+
|
|
74
|
+
rubyforge_project: elibri_watermarking
|
|
75
|
+
rubygems_version: 1.3.6
|
|
76
|
+
signing_key:
|
|
77
|
+
specification_version: 3
|
|
78
|
+
summary: Gem designed to help in use of Elibri watermarking API.
|
|
79
|
+
test_files: []
|
|
80
|
+
|