social_snippet-registry_core 0.0.10 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWZmOWVmZDhiMjZkNzY1YzM5YjdiNWJjNGE1NmFlNmE3Zjc3MDFhNw==
4
+ NTIzMWFjOWJkZTIxYmZlMDlkZmZlZjM2ZjczYzZlYWM0NzdiMGNiZg==
5
5
  data.tar.gz: !binary |-
6
- NGYzNmRkNDNkMzNiOWJjMDcyMTA2M2U4YzhkMmZhOTBiNDFjMWY4Mw==
6
+ ZTY3N2ZjYmQ4OWI2NDA5YWY0ZWIwZjJjMzZkZTNmY2QyOTk2MzVkNQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MWU3MDNlZTNhMzgzMTQ3OGViYWQ4YTJhNzlkM2U5Y2UzNDFiZDI4OTI5MDNk
10
- ZWUxMmRkMTY4ZDI4YjU1OTNhZGVkNmExZmJkNTAxY2RiMmE0OTM4N2JjNDZj
11
- MjlhMGRhODhhOTc5MzM1YTA3M2ViZjExYjZiZjVjYWJmMDE0MTk=
9
+ MzU1NzhmNGI1MGFhMDhjNzJjYWYxMzZkN2U3YjZjNTA3MDM4MDlmNmFjOWM2
10
+ YjUxOTNmZTY3Y2ViYzg3NDQ2MjdkNWMyNzYyZTkwMDQ3YjcyMzFhZjg0M2Zm
11
+ NTA1MzA4ZTAyY2FhODZkOWM3MzM1ZWZkZWEzYmJhNjc5ZjExZTg=
12
12
  data.tar.gz: !binary |-
13
- MTBkOTM2NTVkNDE2NzEwMTk0Y2MwMmQxMGRkOWJmZGVmNmFiMThhYzI0NGMz
14
- ZGQwNGQ1N2ViYjViMjU0MzM0NTllMmUzYzQzZDExMDVmMDZjYmM2ZGNiMjZi
15
- OTk4ZmExY2I3Y2YyODU0Mjg2MzI2M2EzYTU1NjgzY2ZlMzFiN2Q=
13
+ OWUyMWJkOTQzZWU0YjA2NjY3NWI4NGU3NmM5MzVmNDNhYjU2YjVhY2U0NTVk
14
+ MDZlMDM2NTg2N2Y5NzQ4M2QzM2M4MTk0M2Q5MjcyZWNhZjQ3ZGI1NzVhODBj
15
+ NWYzYTA2YzY1YzI2MzU3ZTg2ZDIzOGZlN2I1OWUwM2E3NzRhZGE=
@@ -1,40 +1,37 @@
1
- module SocialSnippet::Registry::WebAPI
2
-
3
- WebAPIv0.controllers :repositories do
4
-
5
- # GET /repositories
6
- get :index, :provides => :json do
7
- if params[:q].nil?
8
- Repository.all_repos.to_json
9
- else
10
- Repository.query(params[:q]).to_json
11
- end
1
+ SocialSnippet::Registry::WebAPI::WebAPIv0.controllers :repositories do
2
+
3
+ # GET /repositories
4
+ get :index, :provides => :json do
5
+ if params[:q].nil?
6
+ SocialSnippet::Registry::WebAPI::Repository.all_repos.to_json
7
+ else
8
+ SocialSnippet::Registry::WebAPI::Repository.query(params[:q]).to_json
12
9
  end
10
+ end
11
+
12
+ # GET /repositories/{repo-name}
13
+ get :index, :with => [:id] do
14
+ repo_model = SocialSnippet::Registry::WebAPI::Repository.find_by(:name => params[:id])
15
+ repo_model.to_object.to_json
16
+ end
17
+
18
+ # POST /repositories
19
+ #
20
+ # @param url [String]
21
+ post :index, :provides => :json do
22
+ repo_url = normalize_url(params[:url])
23
+ fetcher = create_fetcher(repo_url)
24
+
25
+ info = fetcher.snippet_json(repo_url)
26
+ repo = SocialSnippet::Registry::WebAPI::Repository.create_by_snippet_json(info)
27
+ repo.url = repo_url
28
+ repo.save!
29
+
30
+ {
31
+ :name => repo.name,
32
+ :status => "ok",
33
+ }.to_json
34
+ end
35
+
36
+ end # repositories
13
37
 
14
- # GET /repositories/{repo-name}
15
- get :index, :with => [:id] do
16
- repo_model = Repository.find_by(:name => params[:id])
17
- repo_model.to_object.to_json
18
- end
19
-
20
- # POST /repositories
21
- #
22
- # @param url [String]
23
- post :index, :provides => :json do
24
- repo_url = normalize_url(params[:url])
25
- fetcher = create_fetcher(repo_url)
26
-
27
- info = fetcher.snippet_json(repo_url)
28
- repo = Repository.create_by_snippet_json(info)
29
- repo.url = repo_url
30
- repo.save!
31
-
32
- {
33
- :name => repo.name,
34
- :status => "ok",
35
- }.to_json
36
- end
37
-
38
- end # controllers
39
-
40
- end # WebAPI
@@ -1,6 +1,4 @@
1
- module SocialSnippet::Registry::WebAPI
2
-
3
- WebAPIv0.controllers :token do
1
+ SocialSnippet::Registry::WebAPI::WebAPIv0.controllers :token do
4
2
 
5
3
  # GET /token
6
4
  # returns csrf token
@@ -8,6 +6,4 @@ module SocialSnippet::Registry::WebAPI
8
6
  csrf_token
9
7
  end
10
8
 
11
- end
12
-
13
9
  end
@@ -1,53 +1,46 @@
1
- module SocialSnippet::Registry::WebAPI
1
+ SocialSnippet::Registry::WebAPI::WebAPIv0.controllers :user do
2
2
 
3
- WebAPIv0.controllers :user do
3
+ sspm_enable_session
4
+ sspm_enable_user_access_control
4
5
 
5
- sspm_enable_session
6
- sspm_enable_user_access_control
7
-
8
- get "/repositories", :provides => :json do
9
- halt 403 unless logged_in?
10
- if current_account.github_repos.nil?
11
- return {}.to_json
12
- end
13
- current_account.github_repos.map do |repo_name|
14
- {
15
- :name => repo_name,
16
- }
17
- end.to_json
6
+ get "/repositories", :provides => :json do
7
+ halt 403 unless logged_in?
8
+ if current_account.github_repos.nil?
9
+ return {}.to_json
18
10
  end
11
+ current_account.github_repos.map do |repo_name|
12
+ {
13
+ :name => repo_name,
14
+ }
15
+ end.to_json
16
+ end
19
17
 
20
- put "/repositories", :provides => :json do
21
- client = ::Octokit::Client.new(:access_token => current_account.github_access_token)
22
- client.auto_paginate = true
23
- repos = SortedSet.new
24
-
25
- repos.merge(
26
- client.repos.select do |repo|
27
- repo["permissions"]["admin"]
28
- end.map do |repo|
29
- repo["full_name"]
30
- end
31
- )
32
- repos.merge(
33
- client.orgs.map do |org|
34
- client.org_repos(org.login, {:type => "all"}).select do |repo|
35
- repo["permissions"]["admin"]
36
- end.map do |repo|
37
- repo["full_name"]
38
- end
39
- end.flatten
40
- )
41
-
42
- current_account.update_attributes :github_repos => repos.to_a
43
-
44
- current_account.github_repos.map do |repo_name|
45
- {
46
- :name => repo_name,
47
- }
48
- end.to_json
18
+ put "/repositories", :provides => :json do
19
+ client = ::Octokit::Client.new(:access_token => current_account.github_access_token)
20
+ client.auto_paginate = true
21
+ repos = ::SortedSet.new
22
+
23
+ user_repos = client.repos.select do |repo|
24
+ repo["permissions"]["admin"]
25
+ end.map do |repo|
26
+ repo["full_name"]
49
27
  end
50
28
 
29
+ org_repos = client.orgs.map do |org|
30
+ client.org_repos(org.login, {:type => "all"}).select do |repo|
31
+ repo["permissions"]["admin"]
32
+ end.map do |repo|
33
+ repo["full_name"]
34
+ end
35
+ end.flatten
36
+
37
+ repos.merge user_repos
38
+ repos.merge org_repos
39
+
40
+ current_account.update_attributes :github_repos => repos.to_a
41
+
42
+ current_account.github_repos_names.to_json
51
43
  end
52
44
 
53
45
  end
46
+
@@ -36,49 +36,26 @@ class SocialSnippet::Registry::WebAPI::Repository
36
36
  # validations
37
37
  #
38
38
  validates_presence_of :name
39
+ validates_presence_of :url
39
40
  validates_length_of :name, :minimum => 1, :maximum => 64
40
- validates_each :name do |model, key, value|
41
- model.errors[:name] << "Invalid name" unless self.is_valid_repo_name?(value)
42
- end
43
-
44
41
  validates_length_of :desc, :maximum => 200
45
-
46
42
  validates_length_of :url, :maximum => 256
47
- validates_each :url do |model, key, value|
48
- model.errors[:url] << "Invalid URL" unless self.is_valid_url?(value)
49
- end
50
- validates_presence_of :url
51
-
52
- validates_each :dependencies do |model, key, value|
53
- next unless value.is_a?(Array)
54
- value.each do |dep|
55
- unless self.is_valid_repo_name?(dep)
56
- model.errors[:dependencies] << "invalid deps"
57
- break
58
- end
59
- end
60
- end
43
+ validates_length_of :license, :maximum => 64
61
44
 
62
- validates_each :dependencies do |model, key, value|
63
- next unless value.is_a?(Array)
64
- model.errors[:dependencies] << "The size of dependencies must be less than 64" if value.length > 64
45
+ validate do
46
+ errors[:name] << "Invalid name" unless self.class.is_valid_repo_name?(name)
47
+ errors[:url] << "Invalid URL" unless self.class.is_valid_url?(url)
48
+ errors[:dependencies] << "invalid dependencies" if has_invalid_dependencies?
49
+ errors[:dependencies] << "The size of dependencies must be less than 64" if dependencies.length > 64
50
+ errors[:languages] << "The size of languages must be less than 64" if languages.length > 64
65
51
  end
66
52
 
67
- validates_length_of :license, :maximum => 64
68
-
69
- validates_each :languages do |model, key, value|
70
- next unless value.is_a?(Array)
71
- value.each do |lang|
72
- unless self.is_valid_language?(lang)
73
- model.errors[:languages] << "invalid language"
74
- break
75
- end
76
- end
53
+ def has_invalid_dependencies?
54
+ dependencies.any? {|dep_name| not self.class.is_valid_repo_name?(dep_name) }
77
55
  end
78
56
 
79
- validates_each :languages do |model, key, value|
80
- next unless value.is_a?(Array)
81
- model.errors[:languages] << "The size of languages must be less than 64" if value.length > 64
57
+ def has_invalid_language?
58
+ languages.any? {|language| not self.class.is_valid_language?(lang) }
82
59
  end
83
60
 
84
61
  #
@@ -14,6 +14,12 @@ class SocialSnippet::RegistryCore::Models::UserAccount
14
14
 
15
15
  # You can create a composite key in mongoid to replace the default id using the key macro:
16
16
  # key :field <, :another_field, :one_more ....>
17
+
18
+ def github_repos_names
19
+ github_repos.map do |repo_name|
20
+ { :name => repo_name, }
21
+ end
22
+ end
17
23
 
18
24
  def self.find_by_id(s)
19
25
  if s.nil?
@@ -1,5 +1,5 @@
1
1
  module SocialSnippet
2
2
  module RegistryCore
3
- VERSION = "0.0.10"
3
+ VERSION = "0.0.11"
4
4
  end
5
5
  end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ module SocialSnippet::RegistryCore::Models
4
+
5
+ describe UserAccount do
6
+
7
+ let(:user) do
8
+ UserAccount.new(
9
+ :github_repos => [
10
+ "foo/bar"
11
+ ]
12
+ )
13
+ end
14
+
15
+ subject { user.github_repos_names.map {|r| r[:name] } }
16
+ it { should include "foo/bar" }
17
+
18
+ end
19
+
20
+ end
21
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: social_snippet-registry_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroyuki Sano
@@ -308,6 +308,7 @@ files:
308
308
  - spec/webapi/controllers/v0/repositories_controller_spec.rb
309
309
  - spec/webapi/helpers/url_helper_spec.rb
310
310
  - spec/webapi/models/repository_spec.rb
311
+ - spec/webapi/models/user_account_spec.rb
311
312
  - test/repository_test.rb
312
313
  homepage: https://sspm.herokuapp.com
313
314
  licenses:
@@ -342,4 +343,5 @@ test_files:
342
343
  - spec/webapi/controllers/v0/repositories_controller_spec.rb
343
344
  - spec/webapi/helpers/url_helper_spec.rb
344
345
  - spec/webapi/models/repository_spec.rb
346
+ - spec/webapi/models/user_account_spec.rb
345
347
  - test/repository_test.rb