Class: Storyblok::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/storyblok/client.rb

Constant Summary collapse

DEFAULT_CONFIGURATION =
{
  secure: true,
  api_url: 'api.storyblok.com',
  api_version: 1,
  logger: false,
  log_level: Logger::INFO,
  version: 'draft',
  cache_version: Time.now.to_i
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(given_configuration = {}) ⇒ Client

Returns a new instance of Client.

Parameters:

  • given_configuration (Hash) (defaults to: {})

Options Hash (given_configuration):

  • :token (String)

    Required

  • :api_url (String)
  • :api_version (Number)
  • :logger (false, ::Logger)
  • :log_level (::Logger::DEBUG, ::Logger::INFO, ::Logger::WARN, ::Logger::ERROR)


29
30
31
32
33
# File 'lib/storyblok/client.rb', line 29

def initialize(given_configuration = {})
  @configuration = default_configuration.merge(given_configuration)
  validate_configuration!
  setup_logger
end

Instance Attribute Details

#configurationObject (readonly)

Returns the value of attribute configuration.



21
22
23
# File 'lib/storyblok/client.rb', line 21

def configuration
  @configuration
end

#loggerObject (readonly)

Returns the value of attribute logger.



21
22
23
# File 'lib/storyblok/client.rb', line 21

def logger
  @logger
end

Instance Method Details

#datasource_entries(query = {}) ⇒ Hash

Gets a collection of datasource entries

Parameters:

  • query (Hash) (defaults to: {})

Returns:

  • (Hash)


59
60
61
# File 'lib/storyblok/client.rb', line 59

def datasource_entries(query = {})
  Request.new(self, '/cdn/datasource_entries', query).get
end

#flushObject



110
111
112
113
114
# File 'lib/storyblok/client.rb', line 110

def flush
  if !Cache.client.nil?
    Cache.client.set('storyblok:' + configuration[:token] + ':version', Time.now.to_i.to_s)
  end
end

#get(request) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/storyblok/client.rb', line 90

def get(request)
  endpoint = base_url + request.url
  query = request_query(request.query)
  query_string = build_nested_query(query)

  if Cache.client.nil?
    result = run_request(endpoint, query_string)
  else
    version = Cache.client.get('storyblok:' + configuration[:token] + ':version') || '0'
    cache_key = 'storyblok:' + configuration[:token] + ':v:' + version + ':' + request.url + ':' + Base64.encode64(query_string)
    cache_time = 60 * 60 * 2

    result = Cache.cache(cache_key, cache_time) do
      run_request(endpoint, query_string)
    end
  end

  JSON.parse(result)
end

Gets a collection of links

Parameters:

  • query (Hash) (defaults to: {})

Returns:

  • (Hash)


77
78
79
# File 'lib/storyblok/client.rb', line 77

def links(query = {})
  Request.new(self, '/cdn/links', query).get
end

#stories(query = {}) ⇒ Hash

Gets a collection of stories

Parameters:

  • query (Hash) (defaults to: {})

Returns:

  • (Hash)


40
41
42
# File 'lib/storyblok/client.rb', line 40

def stories(query = {})
  Request.new(self, '/cdn/stories', query).get
end

#story(id, query = {}) ⇒ Hash

Gets a specific story

Parameters:

  • id (String)
  • query (Hash) (defaults to: {})

Returns:

  • (Hash)


50
51
52
# File 'lib/storyblok/client.rb', line 50

def story(id, query = {})
  Request.new(self, '/cdn/stories', query, id).get
end

#tags(query = {}) ⇒ Hash

Gets a collection of tags

Parameters:

  • query (Hash) (defaults to: {})

Returns:

  • (Hash)


68
69
70
# File 'lib/storyblok/client.rb', line 68

def tags(query = {})
  Request.new(self, '/cdn/tags', query).get
end

#tree(query = {}) ⇒ Hash

Gets a link tree

Parameters:

  • query (Hash) (defaults to: {})

Returns:

  • (Hash)


86
87
88
# File 'lib/storyblok/client.rb', line 86

def tree(query = {})
  Links.new(Request.new(self, '/cdn/links', query).get).as_tree
end