contentful_bootstrap 0.0.7 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +21 -0
  3. data/Gemfile +1 -0
  4. data/README.md +28 -19
  5. data/bin/contentful_bootstrap +10 -11
  6. data/contentful_bootstrap.gemspec +3 -2
  7. data/lib/contentful/bootstrap.rb +5 -0
  8. data/lib/contentful/bootstrap/commands.rb +135 -0
  9. data/lib/contentful/bootstrap/constants.rb +8 -0
  10. data/lib/contentful/bootstrap/server.rb +97 -0
  11. data/lib/contentful/bootstrap/support.rb +14 -0
  12. data/lib/contentful/bootstrap/templates.rb +3 -0
  13. data/lib/contentful/bootstrap/templates/base.rb +118 -0
  14. data/lib/contentful/bootstrap/templates/blog.rb +77 -0
  15. data/lib/contentful/bootstrap/templates/catalogue.rb +189 -0
  16. data/lib/contentful/bootstrap/templates/gallery.rb +119 -0
  17. data/lib/contentful/bootstrap/templates/links.rb +2 -0
  18. data/lib/contentful/bootstrap/templates/links/asset.rb +15 -0
  19. data/lib/contentful/bootstrap/templates/links/base.rb +18 -0
  20. data/lib/contentful/bootstrap/templates/links/entry.rb +15 -0
  21. data/lib/contentful/bootstrap/token.rb +58 -0
  22. data/lib/contentful/bootstrap/version.rb +5 -0
  23. metadata +32 -18
  24. data/lib/contentful_bootstrap.rb +0 -5
  25. data/lib/contentful_bootstrap/commands.rb +0 -120
  26. data/lib/contentful_bootstrap/constants.rb +0 -6
  27. data/lib/contentful_bootstrap/server.rb +0 -95
  28. data/lib/contentful_bootstrap/support.rb +0 -12
  29. data/lib/contentful_bootstrap/templates.rb +0 -3
  30. data/lib/contentful_bootstrap/templates/base.rb +0 -116
  31. data/lib/contentful_bootstrap/templates/blog.rb +0 -75
  32. data/lib/contentful_bootstrap/templates/catalogue.rb +0 -187
  33. data/lib/contentful_bootstrap/templates/gallery.rb +0 -117
  34. data/lib/contentful_bootstrap/templates/links.rb +0 -2
  35. data/lib/contentful_bootstrap/templates/links/asset.rb +0 -13
  36. data/lib/contentful_bootstrap/templates/links/base.rb +0 -16
  37. data/lib/contentful_bootstrap/templates/links/entry.rb +0 -13
  38. data/lib/contentful_bootstrap/token.rb +0 -23
  39. data/lib/contentful_bootstrap/version.rb +0 -3
@@ -0,0 +1,2 @@
1
+ require "contentful/bootstrap/templates/links/entry"
2
+ require "contentful/bootstrap/templates/links/asset"
@@ -0,0 +1,15 @@
1
+ require "contentful/bootstrap/templates/links/base"
2
+
3
+ module Contentful
4
+ module Bootstrap
5
+ module Templates
6
+ module Links
7
+ class Asset < Base
8
+ def kind
9
+ :assets
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,18 @@
1
+ module Contentful
2
+ module Bootstrap
3
+ module Templates
4
+ module Links
5
+ class Base
6
+ attr_reader :id
7
+ def initialize(id)
8
+ @id = id
9
+ end
10
+
11
+ def kind
12
+ raise "must implement"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ require "contentful/bootstrap/templates/links/base"
2
+
3
+ module Contentful
4
+ module Bootstrap
5
+ module Templates
6
+ module Links
7
+ class Entry < Base
8
+ def kind
9
+ :entries
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,58 @@
1
+ require "inifile"
2
+
3
+ module Contentful
4
+ module Bootstrap
5
+ class Token
6
+ CONFIG_ENV = "CONTENTFUL_ENV".freeze
7
+ DEFAULT_SECTION = "global".freeze
8
+ DEFAULT_PATH = ".contentfulrc".freeze
9
+ MANAGEMENT_TOKEN = "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN"
10
+ DELIVERY_TOKEN = "CONTENTFUL_DELIVERY_ACCESS_TOKEN"
11
+
12
+ def self.set_path!(config_path = "")
13
+ @@config_path = config_path
14
+ end
15
+
16
+ def self.present?
17
+ return false unless File.exists? filename
18
+ config_file[config_section].has_key? MANAGEMENT_TOKEN
19
+ end
20
+
21
+ def self.read
22
+ begin
23
+ config_file[config_section].fetch(MANAGEMENT_TOKEN)
24
+ rescue KeyError
25
+ fail "Token not found"
26
+ end
27
+ end
28
+
29
+ def self.write(token, key = MANAGEMENT_TOKEN)
30
+ file = config_file
31
+ file[config_section][key] = token
32
+ file.save
33
+ end
34
+
35
+ def self.write_access_token(token)
36
+ write(token, DELIVERY_TOKEN)
37
+ end
38
+
39
+ def self.filename
40
+ return config_path if File.exist?(config_path)
41
+ File.join(ENV['HOME'], DEFAULT_PATH)
42
+ end
43
+
44
+ def self.config_section
45
+ return ENV[CONFIG_ENV] if config_file.has_section? ENV[CONFIG_ENV]
46
+ DEFAULT_SECTION
47
+ end
48
+
49
+ def self.config_file
50
+ File.exist?(filename) ? IniFile.load(filename) : IniFile.new(filename: filename)
51
+ end
52
+
53
+ def self.config_path
54
+ @@config_path ||= ""
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,5 @@
1
+ module Contentful
2
+ module Bootstrap
3
+ VERSION = "1.1.0"
4
+ end
5
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contentful_bootstrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Litvak Bruno
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-30 00:00:00.000000000 Z
11
+ date: 2015-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: inifile
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description:
70
84
  email:
71
85
  - david.litvakb@gmail.com
@@ -83,22 +97,22 @@ files:
83
97
  - Rakefile
84
98
  - bin/contentful_bootstrap
85
99
  - contentful_bootstrap.gemspec
86
- - lib/contentful_bootstrap.rb
87
- - lib/contentful_bootstrap/commands.rb
88
- - lib/contentful_bootstrap/constants.rb
89
- - lib/contentful_bootstrap/server.rb
90
- - lib/contentful_bootstrap/support.rb
91
- - lib/contentful_bootstrap/templates.rb
92
- - lib/contentful_bootstrap/templates/base.rb
93
- - lib/contentful_bootstrap/templates/blog.rb
94
- - lib/contentful_bootstrap/templates/catalogue.rb
95
- - lib/contentful_bootstrap/templates/gallery.rb
96
- - lib/contentful_bootstrap/templates/links.rb
97
- - lib/contentful_bootstrap/templates/links/asset.rb
98
- - lib/contentful_bootstrap/templates/links/base.rb
99
- - lib/contentful_bootstrap/templates/links/entry.rb
100
- - lib/contentful_bootstrap/token.rb
101
- - lib/contentful_bootstrap/version.rb
100
+ - lib/contentful/bootstrap.rb
101
+ - lib/contentful/bootstrap/commands.rb
102
+ - lib/contentful/bootstrap/constants.rb
103
+ - lib/contentful/bootstrap/server.rb
104
+ - lib/contentful/bootstrap/support.rb
105
+ - lib/contentful/bootstrap/templates.rb
106
+ - lib/contentful/bootstrap/templates/base.rb
107
+ - lib/contentful/bootstrap/templates/blog.rb
108
+ - lib/contentful/bootstrap/templates/catalogue.rb
109
+ - lib/contentful/bootstrap/templates/gallery.rb
110
+ - lib/contentful/bootstrap/templates/links.rb
111
+ - lib/contentful/bootstrap/templates/links/asset.rb
112
+ - lib/contentful/bootstrap/templates/links/base.rb
113
+ - lib/contentful/bootstrap/templates/links/entry.rb
114
+ - lib/contentful/bootstrap/token.rb
115
+ - lib/contentful/bootstrap/version.rb
102
116
  homepage: https://www.contentful.com
103
117
  licenses:
104
118
  - MIT
@@ -1,5 +0,0 @@
1
- require "contentful_bootstrap/version"
2
- require "contentful_bootstrap/server"
3
- require "contentful_bootstrap/commands"
4
- require "contentful_bootstrap/templates"
5
- require "contentful_bootstrap/token"
@@ -1,120 +0,0 @@
1
- require "net/http"
2
- require "contentful/management"
3
- require "contentful/management/request"
4
- require "contentful/management/error"
5
- require "contentful_bootstrap/token"
6
- require "contentful_bootstrap/server"
7
- require "contentful_bootstrap/support"
8
- require "contentful_bootstrap/templates"
9
-
10
- module ContentfulBootstrap
11
- class Commands
12
- include Support
13
-
14
- def init(space_name, template_name = nil)
15
- if !Token.present?
16
- puts "A new tab on your browser will open for requesting OAuth permissions"
17
- get_token
18
- puts "OAuth permissions successfully saved, your OAuth token is present in '.contentful_token'"
19
- else
20
- puts "OAuth token found, moving on!"
21
- end
22
-
23
- puts
24
-
25
- create_space(space_name, template_name)
26
- end
27
-
28
- def create_space(space_name, template_name = nil)
29
- management_client_init
30
-
31
- puts "Creating Space '#{space_name}'"
32
- space = nil
33
- begin
34
- space = Contentful::Management::Space.create(name: space_name)
35
- rescue Contentful::Management::NotFound
36
- puts "Your account has multiple organizations"
37
- print "Please insert the Organization ID you'd want to create the spaces for: "
38
- organization_id = gets.chomp
39
- space = Contentful::Management::Space.create(name: space_name, organization_id: organization_id)
40
- end
41
-
42
- puts "Space '#{space_name}' created!"
43
- puts
44
-
45
- return if template_name.nil?
46
-
47
- if templates.has_key? template_name.to_sym
48
- puts "Creating Template '#{template_name}'"
49
-
50
- templates[template_name.to_sym].new(space).run
51
- puts "Template '#{template_name}' created!"
52
- else
53
- puts "Template '#{template_name}' not found. Valid templates are '#{templates.keys.map(&:to_s).join('\', \'')}'"
54
- end
55
-
56
- token = generate_token(space)
57
- puts
58
- puts "Space ID: '#{space.id}'"
59
- puts "Access Token: '#{token}'"
60
- puts
61
- puts "You can now insert those values into your configuration blocks"
62
- end
63
-
64
- def generate_token(space, token_name = "Bootstrap Token")
65
- management_client_init
66
-
67
- if space.is_a?(String)
68
- space = Contentful::Management::Space.find(space)
69
- end
70
-
71
- puts
72
- puts "Creating Delivery API Token"
73
-
74
- response = Contentful::Management::Request.new(
75
- "/#{space.id}/api_keys",
76
- 'name' => token_name,
77
- 'description' => "Created with 'contentful_bootstrap.rb'"
78
- ).post
79
- fail response if response.object.is_a?(Contentful::Management::Error)
80
- token = response.object["accessToken"]
81
-
82
- puts "Token '#{token_name}' created! - '#{token}'"
83
-
84
- token
85
- end
86
-
87
- private
88
- def management_client_init
89
- Contentful::Management::Client.new(Token.read, raise_errors: true)
90
- end
91
-
92
- def get_token
93
- silence_stderr do # Don't show any WEBrick related stuff
94
- server = Server.new
95
-
96
- server.start
97
-
98
- while !server.running? # Wait for Server Init
99
- sleep(1)
100
- end
101
-
102
- Net::HTTP.get(URI('http://localhost:5123'))
103
-
104
- while !Token.present? # Wait for User to do OAuth cycle
105
- sleep(1)
106
- end
107
-
108
- server.stop
109
- end
110
- end
111
-
112
- def templates
113
- {
114
- blog: Templates::Blog,
115
- gallery: Templates::Gallery,
116
- catalogue: Templates::Catalogue
117
- }
118
- end
119
- end
120
- end
@@ -1,6 +0,0 @@
1
- module ContentfulBootstrap
2
- module Constants
3
- OAUTH_APP_ID = "a19770bea126e6d596d8599ff42e14173409e3e252895b78d0cb289c10586276".freeze
4
- OAUTH_CALLBACK_URL = "http://localhost:5123/oauth_callback".freeze
5
- end
6
- end
@@ -1,95 +0,0 @@
1
- require "thread"
2
- require "webrick"
3
- require "launchy"
4
- require "contentful_bootstrap/constants"
5
- require "contentful_bootstrap/token"
6
-
7
- module ContentfulBootstrap
8
- class OAuthEchoView
9
- def render
10
- <<-JS
11
- <html><head>
12
- <link rel="shortcut icon" type="image/png" href="https://www.contentful.com/assets/images/favicons/favicon-47dc5f9d.png"/>
13
- <link rel="shortcut icon" type="image/png" href="https://www.contentful.com/assets/images/favicons/favicon-47dc5f9d.png"/>
14
- </head><body>
15
- <script type="text/javascript">
16
- (function() {
17
- var access_token = window.location.hash.split('&')[0].split('=')[1];
18
- window.location.replace('http://localhost:5123/save_token?token=' + access_token);
19
- })();
20
- </script>
21
- </body></html>
22
- JS
23
- end
24
- end
25
-
26
- class ThanksView
27
- def render
28
- <<-HTML
29
- <html><head>
30
- <link rel="shortcut icon" type="image/png" href="https://www.contentful.com/assets/images/favicons/favicon-47dc5f9d.png"/>
31
- <link rel="shortcut icon" type="image/png" href="https://www.contentful.com/assets/images/favicons/favicon-47dc5f9d.png"/>
32
- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
33
- </head><body>
34
- <div class="container">
35
- <div class="jumbotron">
36
- <h1>Contentful Bootstrap</h1>
37
- <h4>Thanks! The OAuth Token has been generated</h4>
38
- <p>The Space you specified will now start to create. You can close this window freely</p>
39
- </div>
40
- </div>
41
- </body></html>
42
- HTML
43
- end
44
- end
45
-
46
- class IndexController < WEBrick::HTTPServlet::AbstractServlet
47
- def do_GET(request, response)
48
- client_id = ContentfulBootstrap::Constants::OAUTH_APP_ID
49
- redirect_uri = ContentfulBootstrap::Constants::OAUTH_CALLBACK_URL
50
- scope = "content_management_manage"
51
- Launchy.open("https://be.contentful.com/oauth/authorize?response_type=token&client_id=#{client_id}&redirect_uri=#{redirect_uri}&scope=#{scope}")
52
- response.status = 200
53
- response.body = ""
54
- end
55
- end
56
-
57
- class OAuthCallbackController < WEBrick::HTTPServlet::AbstractServlet
58
- def do_GET(request, response)
59
- response.status = 200
60
- response.content_type = "text/html"
61
- response.body = OAuthEchoView.new.render
62
- end
63
- end
64
-
65
- class SaveTokenController < WEBrick::HTTPServlet::AbstractServlet
66
- def do_GET(request, response)
67
- Token.write(request.query["token"])
68
- response.status = 200
69
- response.content_type = "text/html"
70
- response.body = ThanksView.new.render
71
- end
72
- end
73
-
74
- class Server
75
- attr_reader :server
76
- def initialize
77
- @server = WEBrick::HTTPServer.new(:Port => 5123)
78
- @server.mount "/", IndexController
79
- @server.mount "/oauth_callback", OAuthCallbackController
80
- @server.mount "/save_token", SaveTokenController
81
- end
82
-
83
- def start
84
- Thread.new { @server.start }
85
- end
86
-
87
- def stop
88
- @server.shutdown
89
- end
90
-
91
- def running?
92
- @server.status != :Stop
93
- end
94
- end
95
- end
@@ -1,12 +0,0 @@
1
- require "stringio"
2
-
3
- module ContentfulBootstrap
4
- module Support
5
- def silence_stderr
6
- old_stderr, $stderr = $stderr, StringIO.new
7
- yield
8
- ensure
9
- $stderr = old_stderr
10
- end
11
- end
12
- end
@@ -1,3 +0,0 @@
1
- require "contentful_bootstrap/templates/blog"
2
- require "contentful_bootstrap/templates/catalogue"
3
- require "contentful_bootstrap/templates/gallery"