wayback 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/.yardopts +10 -0
  2. data/CHANGELOG.md +3 -0
  3. data/CONTRIBUTING.md +52 -0
  4. data/LICENSE.md +20 -0
  5. data/README.md +81 -0
  6. data/Rakefile +11 -0
  7. data/lib/wayback.rb +32 -0
  8. data/lib/wayback/api/archive.rb +42 -0
  9. data/lib/wayback/api/utils.rb +27 -0
  10. data/lib/wayback/archive.rb +15 -0
  11. data/lib/wayback/base.rb +127 -0
  12. data/lib/wayback/client.rb +62 -0
  13. data/lib/wayback/configurable.rb +48 -0
  14. data/lib/wayback/default.rb +68 -0
  15. data/lib/wayback/error.rb +31 -0
  16. data/lib/wayback/error/already_favorited.rb +10 -0
  17. data/lib/wayback/error/already_retweeted.rb +10 -0
  18. data/lib/wayback/error/bad_gateway.rb +11 -0
  19. data/lib/wayback/error/bad_request.rb +10 -0
  20. data/lib/wayback/error/client_error.rb +28 -0
  21. data/lib/wayback/error/configuration_error.rb +8 -0
  22. data/lib/wayback/error/decode_error.rb +9 -0
  23. data/lib/wayback/error/forbidden.rb +10 -0
  24. data/lib/wayback/error/gateway_timeout.rb +11 -0
  25. data/lib/wayback/error/identity_map_key_error.rb +9 -0
  26. data/lib/wayback/error/internal_server_error.rb +11 -0
  27. data/lib/wayback/error/not_acceptable.rb +10 -0
  28. data/lib/wayback/error/not_found.rb +10 -0
  29. data/lib/wayback/error/server_error.rb +28 -0
  30. data/lib/wayback/error/service_unavailable.rb +11 -0
  31. data/lib/wayback/error/too_many_requests.rb +12 -0
  32. data/lib/wayback/error/unauthorized.rb +10 -0
  33. data/lib/wayback/error/unprocessable_entity.rb +10 -0
  34. data/lib/wayback/factory.rb +21 -0
  35. data/lib/wayback/identity.rb +50 -0
  36. data/lib/wayback/identity_map.rb +22 -0
  37. data/lib/wayback/page.rb +18 -0
  38. data/lib/wayback/response/parse_memento.rb +61 -0
  39. data/lib/wayback/response/parse_memento_page.rb +23 -0
  40. data/lib/wayback/response/raise_error.rb +31 -0
  41. data/lib/wayback/version.rb +18 -0
  42. data/spec/fixtures/list.timemap +9 -0
  43. data/spec/fixtures/page.html +225 -0
  44. data/spec/helper.rb +65 -0
  45. data/spec/wayback/api/archive_spec.rb +73 -0
  46. data/spec/wayback/archive_spec.rb +23 -0
  47. data/spec/wayback/base_spec.rb +117 -0
  48. data/spec/wayback/client_spec.rb +114 -0
  49. data/spec/wayback/error/client_error_spec.rb +23 -0
  50. data/spec/wayback/error/server_error_spec.rb +20 -0
  51. data/spec/wayback/error_spec.rb +20 -0
  52. data/spec/wayback/identifiable_spec.rb +50 -0
  53. data/spec/wayback/page_spec.rb +36 -0
  54. data/spec/wayback_spec.rb +47 -0
  55. data/wayback.gemspec +26 -0
  56. metadata +175 -0
@@ -0,0 +1,36 @@
1
+ require 'helper'
2
+
3
+ describe Wayback::Page do
4
+
5
+ describe "#==" do
6
+ it "returns true when objects IDs are the same" do
7
+ saved_search = Wayback::Page.new(:id => 1, :name => "foo")
8
+ other = Wayback::Page.new(:id => 1, :name => "bar")
9
+ expect(saved_search == other).to be_true
10
+ end
11
+ it "returns false when objects IDs are different" do
12
+ saved_search = Wayback::Page.new(:id => 1)
13
+ other = Wayback::Page.new(:id => 2)
14
+ expect(saved_search == other).to be_false
15
+ end
16
+ it "returns false when classes are different" do
17
+ saved_search = Wayback::Page.new(:id => 1)
18
+ other = Wayback::Identity.new(:id => 1)
19
+ expect(saved_search == other).to be_false
20
+ end
21
+ end
22
+
23
+ describe "to_s" do
24
+ it "returns string when valid" do
25
+ html = Wayback::Page.new(:id => 1, :html => "foo").to_s
26
+ expect(html.class == String).to be_true
27
+ expect(html == "foo").to be_true
28
+ end
29
+ it "returns blank when no HTML" do
30
+ html = Wayback::Page.new(:id => 1).to_s
31
+ expect(html.class == String).to be_true
32
+ expect(html == "").to be_true
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,47 @@
1
+ require 'helper'
2
+
3
+ describe Wayback do
4
+
5
+ after do
6
+ Wayback.reset!
7
+ end
8
+
9
+ # N.B. IN SPEC, NOT USING http:// DUE TO PARSING ISSUE WITH DOUBLE BACKSLASH.
10
+
11
+ context "when delegating to a client" do
12
+ before do
13
+ stub_get("/list/timemap/link/gleu.ch").to_return(:body => fixture("list.timemap"), :headers => {:content_type => "application/link-format"})
14
+ end
15
+
16
+ it "requests the correct resource" do
17
+ Wayback.list('gleu.ch')
18
+ expect(a_get("/list/timemap/link/gleu.ch")).to have_been_made
19
+ end
20
+
21
+ it "returns the same results as a client" do
22
+ expect(Wayback.list('gleu.ch')).to eq Wayback::Client.new.list('gleu.ch')
23
+ end
24
+ end
25
+
26
+ describe ".respond_to?" do
27
+ it "delegates to Wayback::Client" do
28
+ expect(Wayback.respond_to?(:list)).to be_true
29
+ end
30
+ it "takes an optional argument" do
31
+ expect(Wayback.respond_to?(:client, true)).to be_true
32
+ end
33
+ end
34
+
35
+ describe ".client" do
36
+ it "returns a Wayback::Client" do
37
+ expect(Wayback.client).to be_a Wayback::Client
38
+ end
39
+
40
+ context "when the options don't change" do
41
+ it "caches the client" do
42
+ expect(Wayback.client).to eq Wayback.client
43
+ end
44
+ end
45
+ end
46
+
47
+ end
data/wayback.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'wayback/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.add_dependency 'faraday', ['~> 0.8', '< 0.10']
8
+ spec.add_dependency 'faraday_middleware', ['~> 0.9', '< 0.10']
9
+ spec.add_development_dependency 'bundler', '~> 1.0'
10
+ spec.authors = ["Greg Leuch"]
11
+ # spec.cert_chain = ['certs/gleuch.pem']
12
+ spec.description = %q{A Ruby interface to the Archive.org's Wayback Machine Memento API.}
13
+ spec.email = ['greg@xolator.com']
14
+ spec.files = %w(.yardopts CHANGELOG.md CONTRIBUTING.md LICENSE.md README.md Rakefile wayback.gemspec)
15
+ spec.files += Dir.glob("lib/**/*.rb")
16
+ spec.files += Dir.glob("spec/**/*")
17
+ spec.homepage = 'http://github.com/XOlator/wayback_gem/'
18
+ spec.licenses = ['MIT']
19
+ spec.name = 'wayback'
20
+ spec.require_paths = ['lib']
21
+ spec.required_rubygems_version = '>= 1.3.6'
22
+ # spec.signing_key = File.expand_path("~/.gem/private_key.pem") if $0 =~ /gem\z/
23
+ spec.summary = spec.description
24
+ spec.test_files = Dir.glob("spec/**/*")
25
+ spec.version = Wayback::Version
26
+ end
metadata ADDED
@@ -0,0 +1,175 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wayback
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Greg Leuch
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-04-05 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: faraday
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '0.8'
22
+ - - <
23
+ - !ruby/object:Gem::Version
24
+ version: '0.10'
25
+ type: :runtime
26
+ prerelease: false
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ~>
31
+ - !ruby/object:Gem::Version
32
+ version: '0.8'
33
+ - - <
34
+ - !ruby/object:Gem::Version
35
+ version: '0.10'
36
+ - !ruby/object:Gem::Dependency
37
+ name: faraday_middleware
38
+ requirement: !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ version: '0.9'
44
+ - - <
45
+ - !ruby/object:Gem::Version
46
+ version: '0.10'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '0.9'
55
+ - - <
56
+ - !ruby/object:Gem::Version
57
+ version: '0.10'
58
+ - !ruby/object:Gem::Dependency
59
+ name: bundler
60
+ requirement: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ~>
64
+ - !ruby/object:Gem::Version
65
+ version: '1.0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ~>
72
+ - !ruby/object:Gem::Version
73
+ version: '1.0'
74
+ description: A Ruby interface to the Archive.org's Wayback Machine Memento API.
75
+ email:
76
+ - greg@xolator.com
77
+ executables: []
78
+ extensions: []
79
+ extra_rdoc_files: []
80
+ files:
81
+ - .yardopts
82
+ - CHANGELOG.md
83
+ - CONTRIBUTING.md
84
+ - LICENSE.md
85
+ - README.md
86
+ - Rakefile
87
+ - wayback.gemspec
88
+ - lib/wayback/api/archive.rb
89
+ - lib/wayback/api/utils.rb
90
+ - lib/wayback/archive.rb
91
+ - lib/wayback/base.rb
92
+ - lib/wayback/client.rb
93
+ - lib/wayback/configurable.rb
94
+ - lib/wayback/default.rb
95
+ - lib/wayback/error/already_favorited.rb
96
+ - lib/wayback/error/already_retweeted.rb
97
+ - lib/wayback/error/bad_gateway.rb
98
+ - lib/wayback/error/bad_request.rb
99
+ - lib/wayback/error/client_error.rb
100
+ - lib/wayback/error/configuration_error.rb
101
+ - lib/wayback/error/decode_error.rb
102
+ - lib/wayback/error/forbidden.rb
103
+ - lib/wayback/error/gateway_timeout.rb
104
+ - lib/wayback/error/identity_map_key_error.rb
105
+ - lib/wayback/error/internal_server_error.rb
106
+ - lib/wayback/error/not_acceptable.rb
107
+ - lib/wayback/error/not_found.rb
108
+ - lib/wayback/error/server_error.rb
109
+ - lib/wayback/error/service_unavailable.rb
110
+ - lib/wayback/error/too_many_requests.rb
111
+ - lib/wayback/error/unauthorized.rb
112
+ - lib/wayback/error/unprocessable_entity.rb
113
+ - lib/wayback/error.rb
114
+ - lib/wayback/factory.rb
115
+ - lib/wayback/identity.rb
116
+ - lib/wayback/identity_map.rb
117
+ - lib/wayback/page.rb
118
+ - lib/wayback/response/parse_memento.rb
119
+ - lib/wayback/response/parse_memento_page.rb
120
+ - lib/wayback/response/raise_error.rb
121
+ - lib/wayback/version.rb
122
+ - lib/wayback.rb
123
+ - spec/fixtures/list.timemap
124
+ - spec/fixtures/page.html
125
+ - spec/helper.rb
126
+ - spec/wayback/api/archive_spec.rb
127
+ - spec/wayback/archive_spec.rb
128
+ - spec/wayback/base_spec.rb
129
+ - spec/wayback/client_spec.rb
130
+ - spec/wayback/error/client_error_spec.rb
131
+ - spec/wayback/error/server_error_spec.rb
132
+ - spec/wayback/error_spec.rb
133
+ - spec/wayback/identifiable_spec.rb
134
+ - spec/wayback/page_spec.rb
135
+ - spec/wayback_spec.rb
136
+ homepage: http://github.com/XOlator/wayback_gem/
137
+ licenses:
138
+ - MIT
139
+ post_install_message:
140
+ rdoc_options: []
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
145
+ requirements:
146
+ - - ! '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ! '>='
153
+ - !ruby/object:Gem::Version
154
+ version: 1.3.6
155
+ requirements: []
156
+ rubyforge_project:
157
+ rubygems_version: 1.8.24
158
+ signing_key:
159
+ specification_version: 3
160
+ summary: A Ruby interface to the Archive.org's Wayback Machine Memento API.
161
+ test_files:
162
+ - spec/fixtures/list.timemap
163
+ - spec/fixtures/page.html
164
+ - spec/helper.rb
165
+ - spec/wayback/api/archive_spec.rb
166
+ - spec/wayback/archive_spec.rb
167
+ - spec/wayback/base_spec.rb
168
+ - spec/wayback/client_spec.rb
169
+ - spec/wayback/error/client_error_spec.rb
170
+ - spec/wayback/error/server_error_spec.rb
171
+ - spec/wayback/error_spec.rb
172
+ - spec/wayback/identifiable_spec.rb
173
+ - spec/wayback/page_spec.rb
174
+ - spec/wayback_spec.rb
175
+ has_rdoc: