wayback 0.1.0

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.
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: