titlepage 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'rake/testtask'
6
6
  require "rake/gempackagetask"
7
7
  require 'spec/rake/spectask'
8
8
 
9
- PKG_VERSION = "1.4.0"
9
+ PKG_VERSION = "1.4.1"
10
10
  PKG_NAME = "titlepage"
11
11
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
12
12
 
@@ -38,7 +38,6 @@ module TitlePage
38
38
  class NotLoggedInError < RuntimeError;end;
39
39
  end
40
40
 
41
- require File.dirname(__FILE__) + '/titlepage/driver'
42
- require File.dirname(__FILE__) + '/titlepage/utils'
43
- require File.dirname(__FILE__) + '/titlepage/client'
44
- require File.dirname(__FILE__) + '/titlepage/rest'
41
+ require 'titlepage/driver'
42
+ require 'titlepage/utils'
43
+ require 'titlepage/client'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: titlepage
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 4
9
- - 0
10
- version: 1.4.0
9
+ - 1
10
+ version: 1.4.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - James Healy
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-03 00:00:00 +10:00
18
+ date: 2010-09-05 00:00:00 +10:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -92,7 +92,6 @@ files:
92
92
  - examples/titlepage.rb
93
93
  - lib/titlepage.rb
94
94
  - lib/titlepage/utils.rb
95
- - lib/titlepage/rest.rb
96
95
  - lib/titlepage/client.rb
97
96
  - lib/titlepage/driver.rb
98
97
  - Rakefile
@@ -1,89 +0,0 @@
1
- # coding: utf-8
2
-
3
- ###################################################################
4
- # A proxy REST web service for the titlepage SOAP API.
5
- #
6
- # Requires no state and exists to serialise requests to the authoritive
7
- # API so that an organisation can avoid exceeding the API usage limits.
8
- #
9
- # To use this REST wrapper, run the following:
10
- #
11
- # thin -R config.ru -p 4567 start
12
- #
13
- # This make the following request:
14
- #
15
- # curl http://127.0.0.1:4567/username/password/ean
16
- #
17
- # Returns 400 if the requested EAN is invalid
18
- # Returns 401 if the titlepage API returned an error, often an authentication issue
19
- # Returns 404 if the requested EAN wasn't found on titlepage
20
- # Returns 408 if the titlepage API didn't respond in time
21
- # Returns 200 and a YAML serialised hash of results if the query was successful
22
- #
23
- ###################################################################
24
-
25
- require 'rubygems'
26
- require 'sinatra/base'
27
- require 'ean13'
28
- require 'yaml'
29
- require 'timeout'
30
-
31
- module TitlePage
32
- class Rest < Sinatra::Base
33
-
34
- TIMESTAMP_FILE = "/tmp/titlepage.dat"
35
-
36
- # We only respond to 1 URI
37
- get '/:username/:password/:ean' do |username, password, ean|
38
- status(400) and return unless EAN13.valid?(ean)
39
-
40
- while (!update_file)
41
- sleep 0.5
42
- end
43
-
44
- result = nil
45
-
46
- begin
47
- TitlePage::Client.open(username, password) do |tp|
48
- Timeout::timeout(6) do
49
- result = tp.first(ean)
50
- end
51
- end
52
- rescue Timeout::Error
53
- status(408) and return
54
- rescue Handsoap::Fault
55
- status(401) and return
56
- end
57
-
58
- if result
59
- YAML.dump(result.to_hash)
60
- else
61
- status(404)
62
- end
63
- end
64
-
65
- private
66
-
67
- # update a lock file that we use to track when the last query was proxied
68
- # through to the authoritive Titlepage API.
69
- #
70
- # Updates the file and returns true if no query was made in the previous 3
71
- # seconds, otherwise doesn't update the file and returns false.
72
- #
73
- # Used to ensure we don't exceed the query limit.
74
- #
75
- def update_file
76
- if File.file?(TIMESTAMP_FILE)
77
- if Time.now.to_i - File.mtime(TIMESTAMP_FILE).to_i > 3
78
- File.open(TIMESTAMP_FILE, "w") { |of| of.write "titlepage timestamp"}
79
- true
80
- else
81
- false
82
- end
83
- else
84
- File.open(TIMESTAMP_FILE, "w") { |of| of.write "titlepage timestamp"}
85
- true
86
- end
87
- end
88
- end
89
- end