contentful_bootstrap 0.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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"