diff --git a/diaspora_federation-json_schema.gemspec b/diaspora_federation-json_schema.gemspec index f5a982b..3c62b59 100644 --- a/diaspora_federation-json_schema.gemspec +++ b/diaspora_federation-json_schema.gemspec @@ -15,5 +15,5 @@ Gem::Specification.new do |s| "validating JSON serialized federation objects." s.license = "AGPL-3.0" - s.files = Dir["lib/diaspora_federation/schemas/*.json"] + s.files = Dir["lib/diaspora_federation/schemas.rb", "lib/diaspora_federation/schemas/*.json"] end diff --git a/diaspora_federation.gemspec b/diaspora_federation.gemspec index 29e8c49..70e97b0 100644 --- a/diaspora_federation.gemspec +++ b/diaspora_federation.gemspec @@ -17,7 +17,8 @@ Gem::Specification.new do |s| s.license = "AGPL-3.0" s.files = Dir["lib/**/*", "LICENSE", "README.md", "Changelog.md"] - - Dir["lib/diaspora_federation/{engine,rails,test}.rb", + Dir["lib/diaspora_federation/{engine,rails,schemas,test}.rb", + "lib/diaspora_federation/schemas/*", "lib/diaspora_federation/test/*", "lib/tasks/*.rake"] diff --git a/lib/diaspora_federation/schemas.rb b/lib/diaspora_federation/schemas.rb new file mode 100644 index 0000000..5b7120a --- /dev/null +++ b/lib/diaspora_federation/schemas.rb @@ -0,0 +1,17 @@ +require "pathname" +require "json" + +module DiasporaFederation + # A helper class to access the JSON schema. + module Schemas + # federation_entities schema uri + FEDERATION_ENTITIES_URI = "https://diaspora.github.io/diaspora_federation/schemas/federation_entities.json".freeze + + # Parsed federation_entities schema + def self.federation_entities + @federation_entities ||= JSON.parse( + Pathname.new(__dir__).join("schemas", "federation_entities.json").read + ) + end + end +end diff --git a/spec/lib/diaspora_federation/schemas_spec.rb b/spec/lib/diaspora_federation/schemas_spec.rb new file mode 100644 index 0000000..4ac5107 --- /dev/null +++ b/spec/lib/diaspora_federation/schemas_spec.rb @@ -0,0 +1,13 @@ +require "diaspora_federation/schemas" + +module DiasporaFederation + describe Schemas do + describe ".federation_entities" do + it "returns the parsed federation_entities JSON schema" do + schema = DiasporaFederation::Schemas.federation_entities + expect(schema).to be_a(Hash) + expect(schema["id"]).to eq(DiasporaFederation::Schemas::FEDERATION_ENTITIES_URI) + end + end + end +end