Class: Jekyll::ActionNetwork::Generator
- Inherits:
-
Generator
- Object
- Generator
- Jekyll::ActionNetwork::Generator
- Defined in:
- lib/jekyll/action-network/generator.rb
Overview
Generates Jekyll collections from the Action Network API
Constant Summary collapse
- UTILS =
Jekyll::ActionNetwork::Utils.new
Instance Method Summary collapse
- #actions ⇒ Object
- #api_key ⇒ Object
- #authenticate ⇒ Object
- #client ⇒ Object
- #defaults ⇒ Object
- #entry_point ⇒ Object
- #generate(site) ⇒ Object
- #get_full_list(name, client = nil) ⇒ Object
- #make_collection(name, config) ⇒ Object
- #make_collection_config(col_config_init) ⇒ Object
- #make_collections ⇒ Object
- #page_size ⇒ Object
- #settings ⇒ Object
Instance Method Details
#actions ⇒ Object
57 58 59 60 61 62 63 |
# File 'lib/jekyll/action-network/generator.rb', line 57 def actions return @actions if @actions actions_config = @config["actions"] if @config["actions"].is_a? Hash actions_settings = settings["actions"].merge(actions_config || {}) @actions ||= Jekyll::Collection.new(@site, actions_settings["collection"]) end |
#api_key ⇒ Object
78 79 80 81 82 83 |
# File 'lib/jekyll/action-network/generator.rb', line 78 def api_key key = @config["key"] || settings["key"] return ENV.fetch(key[4..key.length - 1], nil) if key[0..3] == "ENV_" key end |
#authenticate ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/jekyll/action-network/generator.rb', line 85 def authenticate unless api_key Jekyll.logger.warn "Action Network API Key not found." return end unless entry_point.dig("_links", "osdi:tags").present? Jekyll.logger.warn "Action Network Authentication Unsucessful" return end true end |
#client ⇒ Object
98 99 100 |
# File 'lib/jekyll/action-network/generator.rb', line 98 def client @client ||= ActionNetworkRest.new(api_key: api_key) end |
#defaults ⇒ Object
74 75 76 |
# File 'lib/jekyll/action-network/generator.rb', line 74 def defaults @defaults ||= settings["defaults"] end |
#entry_point ⇒ Object
102 103 104 |
# File 'lib/jekyll/action-network/generator.rb', line 102 def entry_point @entry_point ||= client.entry_point.get end |
#generate(site) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/jekyll/action-network/generator.rb', line 19 def generate(site) return unless site.config["action_network"] @site = site @config = site.config["action_network"] @utils = Jekyll::ActionNetwork::Utils.new return unless authenticate make_collections # site.config['action_network']['generated'] = true end |
#get_full_list(name, client = nil) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/jekyll/action-network/generator.rb', line 110 def get_full_list(name, client = nil) client ||= @client page = 1 actions = [] loop do action_page = client.send(name).list(page: page) actions.concat(action_page) break if action_page.size < page_size page += 1 end actions end |
#make_collection(name, config) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/jekyll/action-network/generator.rb', line 49 def make_collection(name, config) return unless defaults[name] collection = Jekyll::ActionNetwork::Collection.new(@site, self, @client, config, settings) @site.collections[collection.config["collection"]] = collection.populate actions.docs.concat(collection.collection.docs) end |
#make_collection_config(col_config_init) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/jekyll/action-network/generator.rb', line 42 def make_collection_config(col_config_init) return col_config_init if col_config_init.is_a? Hash return { "name" => col_config_init } if col_config_init.is_a? String Jekyll.logger.warn LOG_NAME, "Config format #{col_config_init} not recognised" end |
#make_collections ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/jekyll/action-network/generator.rb', line 31 def make_collections @config["import"].each do |config| col_config = make_collection_config(config) name = col_config["name"] next unless col_config["name"] make_collection(name, col_config) end @site.collections["actions"] = actions if @config["actions"] end |
#page_size ⇒ Object
106 107 108 |
# File 'lib/jekyll/action-network/generator.rb', line 106 def page_size @page_size ||= @entry_point["max_page_size"] end |
#settings ⇒ Object
65 66 67 68 69 70 71 72 |
# File 'lib/jekyll/action-network/generator.rb', line 65 def settings return @settings if @settings settings = YAML.load_file("#{File.expand_path(__dir__)}/settings.yaml") @fields = settings["fields"] @filters = settings["filters"] @settings = settings end |