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.
@@ -0,0 +1,6 @@
1
+ require 'vcr'
2
+
3
+ VCR.configure do |c|
4
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
5
+ c.hook_into :webmock # or :fakeweb
6
+ end
@@ -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: []