Class: SocialSnippet::Registry::WebAPI::Repository

Inherits:
Object
  • Object
show all
Includes:
Mongoid::Document, Mongoid::Timestamps
Defined in:
lib/social_snippet/registry/webapi/models/repository.rb

Constant Summary collapse

FIELD_KEYS =

methods

[
  :name,
  :url,
  :desc,
  :dependencies,
  :license,
  :languages,
]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_reposObject



109
110
111
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 109

def all_repos
  all.map {|repo| repo.to_object }
end

.create_by_snippet_json(json_obj) ⇒ Object



117
118
119
120
121
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 117

def create_by_snippet_json(json_obj)
  model = find_or_create_by(:name => json_obj["name"])
  model.update_by_snippet_json json_obj
  return model
end

.is_valid_language?(language) ⇒ Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 101

def is_valid_language?(language)
  /^[a-zA-Z0-9\.\-\_\+\#]+$/ === language
end

.is_valid_repo_name?(repo_name) ⇒ Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 105

def is_valid_repo_name?(repo_name)
  /^[a-z][a-z0-9\.\-\_]*$/ === repo_name
end

.is_valid_url?(url) ⇒ Boolean

Returns:

  • (Boolean)


97
98
99
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 97

def is_valid_url?(url)
  /^(http|https|git)\:\/\// === url
end

.query(s) ⇒ Object



113
114
115
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 113

def query(s)
  where(:name => /#{s}/).map {|repo| repo.to_object } # TODO
end

Instance Method Details

#has_invalid_dependencies?Boolean

Returns:

  • (Boolean)


57
58
59
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 57

def has_invalid_dependencies?
  dependencies.any? {|dep_name| not self.class.is_valid_repo_name?(dep_name) }
end

#has_invalid_language?Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 61

def has_invalid_language?
  languages.any? {|language| not self.class.is_valid_language?(lang) }
end

#to_objectObject



78
79
80
81
82
83
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 78

def to_object
  FIELD_KEYS.reduce({}) do |obj, key|
    obj[key.to_sym] = self[key]
    obj
  end
end

#update_by_snippet_json(json_obj) ⇒ Object



85
86
87
88
89
90
91
92
93
# File 'lib/social_snippet/registry/webapi/models/repository.rb', line 85

def update_by_snippet_json(json_obj)
  filter = %w(
    desc
  )
  repo_info = json_obj.select {|k, v| filter.include? k }
  write_attributes repo_info
  # deps: hash to array
  self.dependencies = json_obj["dependencies"] && json_obj["dependencies"].keys
end