Commit dd80b7dcffc11134687d1c9ff9459f8ba1ea9907
1 parent
fedb0d62
Exists in
federation_webfinger
and in
1 other branch
Adding uri to webfinger resource
Signed-off-by: Thiago Ribeiro <thiagitosouza@gmail.com>
Showing
1 changed file
with
32 additions
and
3 deletions
Show diff stats
lib/noosfero/api/federation/webfinger.rb
1 | +require 'active_support/inflector' | ||
1 | module Noosfero | 2 | module Noosfero |
2 | module API | 3 | module API |
3 | module Federation | 4 | module Federation |
@@ -27,12 +28,29 @@ def valid_domain? | @@ -27,12 +28,29 @@ def valid_domain? | ||
27 | end | 28 | end |
28 | end | 29 | end |
29 | 30 | ||
31 | +def valid_uri?(url) | ||
32 | + uri = URI.parse(url) | ||
33 | + uri.kind_of?(URI::HTTP) | ||
34 | + rescue URI::BadURIError | ||
35 | + false | ||
36 | + rescue URI::InvalidURIError | ||
37 | + false | ||
38 | +end | ||
39 | + | ||
40 | +def entity_exists?(uri) | ||
41 | + possible_entity = uri.split('/') | ||
42 | + possible_entity.map! {|entity| "#{entity}s"} | ||
43 | + ( ActiveRecord::Base.connection.tables & possible_entity ) | ||
44 | + rescue ActiveRecord::RecordNotFound | ||
45 | + false | ||
46 | +end | ||
47 | + | ||
30 | def generate_jrd | 48 | def generate_jrd |
49 | + result = {} | ||
31 | if valid_domain? && request_acct? | 50 | if valid_domain? && request_acct? |
32 | - result = {} | ||
33 | result = acct_hash | 51 | result = acct_hash |
34 | - else | ||
35 | - "This Domain this not exist in this envinronment" | 52 | + elsif valid_uri?(params[:resource]) |
53 | + result = uri_hash | ||
36 | end | 54 | end |
37 | end | 55 | end |
38 | 56 | ||
@@ -46,3 +64,14 @@ def acct_hash | @@ -46,3 +64,14 @@ def acct_hash | ||
46 | acct[:properties] = Person.find_by_identifier(extract_person_identifier) | 64 | acct[:properties] = Person.find_by_identifier(extract_person_identifier) |
47 | acct | 65 | acct |
48 | end | 66 | end |
67 | + | ||
68 | +def uri_hash | ||
69 | + uri = {} | ||
70 | + uri[:subject] = params[:resource] | ||
71 | + entity = entity_exists?(params[:resource]) | ||
72 | + noosfero_entity = ActiveSupport::Inflector.classify(entity) | ||
73 | + id = params[:resource].split('/').last.to_i | ||
74 | + uri[:properties] = entity.first.classify.constantize.find(id) | ||
75 | + puts uri.inspect | ||
76 | + uri | ||
77 | +end |