familysearch 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.
- data/.document +5 -0
- data/.rvmrc +48 -0
- data/Gemfile +20 -0
- data/LICENSE.txt +20 -0
- data/README.md +39 -0
- data/Rakefile +40 -0
- data/VERSION +1 -0
- data/familysearch.gemspec +87 -0
- data/lib/familysearch.rb +1 -0
- data/lib/familysearch/client.rb +65 -0
- data/spec/client_spec.rb +132 -0
- data/spec/familysearch_spec.rb +0 -0
- data/spec/fixtures/vcr_cassettes/discovery.yml +294 -0
- data/spec/fixtures/vcr_cassettes/discovery_auth.yml +365 -0
- data/spec/spec_helper.rb +6 -0
- data/workspace/notes/APIDesign.txt +51 -0
- data/workspace/notes/discovery_links.txt +72 -0
- data/workspace/notes/goals.txt +17 -0
- metadata +245 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'familysearch'
|
2
|
+
|
3
|
+
# Ways to instantiate a client
|
4
|
+
|
5
|
+
# This would start with an access_token and keep it for all requests.
|
6
|
+
client = FamilySearch::Client.new :env => :production, :access_token => '{YOUR_ACCESS_TOKEN}', :logger => Logger.new(STDOUT)
|
7
|
+
|
8
|
+
# Will probably support Basic Auth through this gem, so we would need the developer key for that
|
9
|
+
client = FamilySearch::Client.new :host => 'https://sandbox.familysearch.org', :key => '{YOUR_DEV_KEY}', :logger => Logger.new(File.new('log/api.log'))
|
10
|
+
client = FamilySearch::Client.new :host => 'http://localhost:5000', :key => '{YOUR_DEV_KEY}'
|
11
|
+
|
12
|
+
# Requests would automatically include the following headers:
|
13
|
+
# Authorization: Bearer {access_token}
|
14
|
+
# Accept: application/x-fs-v1+json
|
15
|
+
#
|
16
|
+
# Responses would automatically be parsed into a smart object
|
17
|
+
|
18
|
+
discovery = client.get :discovery
|
19
|
+
me = client.get discovery['links']['current-user-person']['href']
|
20
|
+
|
21
|
+
# Convenience methods like this #display method would allow you to easily access info
|
22
|
+
# buried deep into the object structure.
|
23
|
+
me.display :name
|
24
|
+
me.display :surname
|
25
|
+
me.display :birth_date
|
26
|
+
me.display :death_place
|
27
|
+
|
28
|
+
# We would want an easy way to create new persons, relationships, etc.
|
29
|
+
person = FamilySearch::Person.new
|
30
|
+
person.add :name => 'Jimmy /Zimmerman/'
|
31
|
+
person.add :birth => {:date => '14 Aug 2010', :place => 'Tuscarawas, Ohio, United States'}
|
32
|
+
|
33
|
+
# Perhaps this could also be chained?
|
34
|
+
person.add({:name => 'Jimmy /Zimmerman/'}).add({:birth => {:date => '14 Aug 2010', :place => 'Tuscarawas, Ohio, United States'}})
|
35
|
+
|
36
|
+
# The client would support all HTTP methods
|
37
|
+
client.post person
|
38
|
+
|
39
|
+
# Or perhaps we would do something like this, because the person object
|
40
|
+
# should know its own URL, so it could theoretically post to itself as long
|
41
|
+
# as it had a way of accessing the client
|
42
|
+
person.save
|
43
|
+
|
44
|
+
# The client could accept full URLs
|
45
|
+
client.get("https://familysearch.org/platform/tree/persons/KWQS-BBQ")
|
46
|
+
|
47
|
+
# The client may support URL templates too
|
48
|
+
client.get(:person,'KWQS-BBQ')
|
49
|
+
|
50
|
+
# Perhaps we could allow lazy-loaded relationship traversal?
|
51
|
+
person.relationships.parents.father.get
|
@@ -0,0 +1,72 @@
|
|
1
|
+
authorities
|
2
|
+
child_and_parents_relationships
|
3
|
+
couple_relationships
|
4
|
+
current_user
|
5
|
+
current_user_person
|
6
|
+
discussions
|
7
|
+
folders
|
8
|
+
fs_identity_v2_login
|
9
|
+
fs_identity_v2_logout
|
10
|
+
fs_identity_v2_permission
|
11
|
+
fs_identity_v2_session
|
12
|
+
http://oauth.net/core/2.0/endpoint/authorize
|
13
|
+
http://oauth.net/core/2.0/endpoint/token
|
14
|
+
parent_child_relationship_template
|
15
|
+
persons
|
16
|
+
person_search
|
17
|
+
registration
|
18
|
+
reservation
|
19
|
+
source_descriptions
|
20
|
+
|
21
|
+
ancestry_query
|
22
|
+
descendancy_query
|
23
|
+
person_matches_query
|
24
|
+
person_with_relationships_query
|
25
|
+
|
26
|
+
agent_template
|
27
|
+
change_restore_template
|
28
|
+
child_and_parents_relationship_changes_template
|
29
|
+
child_and_parents_relationship_conclusion_template
|
30
|
+
child_and_parents_relationship_notes_template
|
31
|
+
child_and_parents_relationship_note_template
|
32
|
+
child_and_parents_relationship_parent_template
|
33
|
+
child_and_parents_relationship_restore_template
|
34
|
+
child_and_parents_relationship_source_references_template
|
35
|
+
child_and_parents_relationship_source_reference_template
|
36
|
+
child_and_parents_relationship_template
|
37
|
+
child_relationships_template
|
38
|
+
couple_relationship_changes_template
|
39
|
+
couple_relationship_conclusion_template
|
40
|
+
couple_relationship_notes_template
|
41
|
+
couple_relationship_note_template
|
42
|
+
couple_relationship_restore_template
|
43
|
+
couple_relationship_source_references_template
|
44
|
+
couple_relationship_source_reference_template
|
45
|
+
couple_relationship_template
|
46
|
+
discussion_comments_template
|
47
|
+
discussion_comment_template
|
48
|
+
discussion_template
|
49
|
+
fs_child_relationships_template
|
50
|
+
fs_parent_relationships_template
|
51
|
+
parent_relationships_template
|
52
|
+
person_changes_template
|
53
|
+
person_change_summary_template
|
54
|
+
person_conclusion_template
|
55
|
+
person_discussion_references_template
|
56
|
+
person_discussion_reference_template
|
57
|
+
person_matches_template
|
58
|
+
person_merge_template
|
59
|
+
person_notes_template
|
60
|
+
person_note_template
|
61
|
+
person_restore_template
|
62
|
+
person_source_references_template
|
63
|
+
person_source_reference_template
|
64
|
+
person_template
|
65
|
+
preferred_parent_relationship_template
|
66
|
+
preferred_spouse_relationship_template
|
67
|
+
source_description_template
|
68
|
+
source_folder_descriptions_template
|
69
|
+
source_folder_descriptions_trashbin_template
|
70
|
+
source_folder_template
|
71
|
+
spouse_relationships_template
|
72
|
+
user_source_folders_template
|
@@ -0,0 +1,17 @@
|
|
1
|
+
* Implementation less complex than ruby-fs-stack so that other Ruby programmers can easily update.
|
2
|
+
* Useful RDoc Documentation for objects.
|
3
|
+
* Ability to maintain compatibility as GEDCOMX versions increment.
|
4
|
+
* Tested with RSpec.
|
5
|
+
* Support for Ruby 1.8.7, 1.9.3, JRuby, and Rubinius
|
6
|
+
* Flexibility to access and use any aspect of the Platform without the need to write new gem code.
|
7
|
+
* This would be provided by raw get, put, post, delete methods against a URL and providing a hash of ruby code.
|
8
|
+
* Follow HATEOAS principles.
|
9
|
+
* Provide convenience methods for simplifying consumer code.
|
10
|
+
* Logging should be configurable -
|
11
|
+
* Provide functionality for the following
|
12
|
+
* Reading the discovery resource
|
13
|
+
* Authentication (Basic)
|
14
|
+
* Maintaining sessions
|
15
|
+
* Following links from one resource to the next
|
16
|
+
* Reading, stitching, and traversing pedigree resources
|
17
|
+
|
metadata
ADDED
@@ -0,0 +1,245 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: familysearch
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jimmy Zimmerman
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-03-18 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.4
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.8.4
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: faraday_middleware
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.9.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.9.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: multi_json
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.5.0
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.5.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: hashie
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ~>
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 2.0.2
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.0.2
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rash
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ~>
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: 0.4.0
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 0.4.0
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rspec
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 2.13.0
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.13.0
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: shoulda
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.3.2
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 3.3.2
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: bundler
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 1.2.3
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.2.3
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: jeweler
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ~>
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: 1.8.4
|
150
|
+
type: :development
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ~>
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 1.8.4
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: vcr
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
162
|
+
requirements:
|
163
|
+
- - ~>
|
164
|
+
- !ruby/object:Gem::Version
|
165
|
+
version: 2.4.0
|
166
|
+
type: :development
|
167
|
+
prerelease: false
|
168
|
+
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
170
|
+
requirements:
|
171
|
+
- - ~>
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 2.4.0
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: webmock
|
176
|
+
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
178
|
+
requirements:
|
179
|
+
- - ~>
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: 1.10.0
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
186
|
+
requirements:
|
187
|
+
- - ~>
|
188
|
+
- !ruby/object:Gem::Version
|
189
|
+
version: 1.10.0
|
190
|
+
description: A gem for the FamilySearch Platform. Documentation for the FamilySearch
|
191
|
+
Platform can be found at https://
|
192
|
+
email: jimmy.zimmerman@gmail.com
|
193
|
+
executables: []
|
194
|
+
extensions: []
|
195
|
+
extra_rdoc_files:
|
196
|
+
- LICENSE.txt
|
197
|
+
- README.md
|
198
|
+
files:
|
199
|
+
- .document
|
200
|
+
- .rvmrc
|
201
|
+
- Gemfile
|
202
|
+
- LICENSE.txt
|
203
|
+
- README.md
|
204
|
+
- Rakefile
|
205
|
+
- VERSION
|
206
|
+
- familysearch.gemspec
|
207
|
+
- lib/familysearch.rb
|
208
|
+
- lib/familysearch/client.rb
|
209
|
+
- spec/client_spec.rb
|
210
|
+
- spec/familysearch_spec.rb
|
211
|
+
- spec/fixtures/vcr_cassettes/discovery.yml
|
212
|
+
- spec/fixtures/vcr_cassettes/discovery_auth.yml
|
213
|
+
- spec/spec_helper.rb
|
214
|
+
- workspace/notes/APIDesign.txt
|
215
|
+
- workspace/notes/discovery_links.txt
|
216
|
+
- workspace/notes/goals.txt
|
217
|
+
homepage: http://github.com/jimmyz/familysearch-rb
|
218
|
+
licenses:
|
219
|
+
- MIT
|
220
|
+
post_install_message:
|
221
|
+
rdoc_options: []
|
222
|
+
require_paths:
|
223
|
+
- lib
|
224
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
226
|
+
requirements:
|
227
|
+
- - ! '>='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
segments:
|
231
|
+
- 0
|
232
|
+
hash: 464565350815825193
|
233
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
234
|
+
none: false
|
235
|
+
requirements:
|
236
|
+
- - ! '>='
|
237
|
+
- !ruby/object:Gem::Version
|
238
|
+
version: '0'
|
239
|
+
requirements: []
|
240
|
+
rubyforge_project:
|
241
|
+
rubygems_version: 1.8.24
|
242
|
+
signing_key:
|
243
|
+
specification_version: 3
|
244
|
+
summary: A gem for the FamilySearch Platform.
|
245
|
+
test_files: []
|