Skip to content

Commit 11333f9

Browse files
committed
client accepts common parameters including references
These queries will now work: client = Contentstack::Client.new(access_token: ENV['ACCESS_TOKEN'], api_key: ENV['API_KEY'], environment: ENV['STACK_ENV']) entries = client.entries(content_type: 'shirts', params: { limit: 5 } ) entries = client.entries(content_type: 'shirts', params: { include: 'brands' }) entries = client.entries(content_type: 'shirts', params: { include: 'brands, shirt_sizes' }) entries = client.entries(content_type: 'shirts', params: { include: 'brands, shirt_sizes', limit: 5 } ) entries = client.entries(content_type: 'shirts', params: { include: 'brands', limit: 5 } ) entries = client.entries(content_type: 'shirts') entries = client.entries(content_type: 'shirts', params: { include: 'brands, shirt_sizes', limit: 5, skip: 2 } ) entries = client.entries(content_type: 'shirts', params: { include: 'brands', asc: 'price' } ) entries = client.entries(content_type: 'shirts', params: { include: 'brands', desc: 'price' } )
1 parent dfa8155 commit 11333f9

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

contentstack.gemspec

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
3232

3333
spec.add_dependency 'typhoeus', '~> 1.1', '>= 1.1.2'
3434
spec.add_dependency 'multi_json', '~> 1.12', '>= 1.12.1'
35+
spec.add_dependency 'activesupport'
3536

3637
spec.add_development_dependency 'bundler', '~> 1.13', '>= 1.13.6'
3738
spec.add_development_dependency 'rake', '~> 12.0'

lib/contentstack/request.rb

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1-
1+
require "byebug"
22
require 'typhoeus'
3+
require "active_support/core_ext/hash"
34

45
module Contentstack
56
class Request
67

7-
attr_reader :endpoint, :client
8+
attr_reader :client, :query, :endpoint_with_params
9+
attr_accessor :endpoint, :params
810

9-
def initialize(client, endpoint, query={})
11+
def initialize(client, endpoint, params={})
1012
# puts endpoint
1113
@client = client
1214
@endpoint = endpoint
13-
14-
@query = (normalize_query(query) if query && !query.empty?)
15+
@endpoint = build_query(params, endpoint + "?") unless params.empty?
1516
end
1617

1718
# Delegates the actual HTTP work to the client
@@ -21,6 +22,25 @@ def fetch
2122

2223
private
2324

25+
def build_query(params, endpoint)
26+
limit = Hash[limit: params[:limit] || 0]
27+
skip = Hash[skip: params[:skip] || 0]
28+
asc = Hash[asc: params[:asc] || ""]
29+
desc = Hash[desc: params[:desc] || ""]
30+
31+
query = [limit, skip, asc, desc].select { |hash| hash.values.none? { |val| val == '' || val == 0 } }
32+
encoded = query.map{ |q| q.to_query }.join("&")
33+
34+
references = build_references(params[:include]) || ""
35+
36+
query_string = references.empty? ? "#{endpoint}#{encoded}" : "#{endpoint}#{references}&#{encoded}"
37+
end
38+
39+
def build_references(references)
40+
[references].join(",").split(",").map{ |ref| "include[]=#{ref}" }.join("&").gsub(/\s+/, "")
41+
end
42+
43+
2444
def normalize_query(query)
2545
Hash[
2646
query.map do |key, value|
@@ -31,6 +51,6 @@ def normalize_query(query)
3151
end
3252
]
3353
end
34-
54+
3555
end
3656
end

0 commit comments

Comments
 (0)