microcms-ruby-sdk 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7981b7722c57e9c32a2ca0681228addc23c92576c8ade1259874de877bbeb5c1
4
- data.tar.gz: c5cf56769dca274a7fffb90e73f6c9814ca8570288e24e9a00fdc0e6eb349b1e
3
+ metadata.gz: 2ac22f7433f5c15562d37eb291ab04297082a36b02fe34b14206f578fdd8a6cb
4
+ data.tar.gz: 5411bed835d189ca46f280fada06bb7b25a2eb937d0fda8d478be9b52fe43560
5
5
  SHA512:
6
- metadata.gz: e5265db69895b973b8f877017b108c59ab854ed3699de6fa13f158d36f2e401f14180495575c8b7efd28ff50b26ba05194d8535e081b6bde52b7124890dec824
7
- data.tar.gz: 2ee9017853f3803eb9ef9c2672457b21b18a9a92bacf41ea5d2e7b514f24eaf866e8d5435b2a43f80e3299ef4f4e7e0257c15503f77e004012a1bf027e13891c
6
+ metadata.gz: 294a44d8524dadb0389169bbb0022055dbfd94c53da7f99c74c37c8f88baa64192bb56f08a8b8c0915cad6297ac56c470ed2ba4de609d87320b7146fc9b5da6e
7
+ data.tar.gz: d0fb8d0095703342ddaa6145483691669c54f69f59a1a8446112bb353e0f28251bb6368f48b73e4d559a81d28e25f2cf702b51f5e93d6663963ea7fe65b8aaa5
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MicroCMS
4
- VERSION = '1.1.0'
4
+ VERSION = '1.2.0'
5
5
  end
data/lib/microcms.rb CHANGED
@@ -20,8 +20,67 @@ module MicroCMS
20
20
  end
21
21
  end
22
22
 
23
+ # HttpUtil
24
+ module HttpUtil
25
+ def send_http_request(method, endpoint, path, query = nil, body = nil)
26
+ uri = build_uri(endpoint, path, query)
27
+ http = build_http(uri)
28
+ req = build_request(method, uri, body)
29
+ res = http.request(req)
30
+
31
+ raise APIError.new(status_code: res.code.to_i, body: res.body) if res.code.to_i >= 400
32
+
33
+ JSON.parse(res.body, object_class: OpenStruct) if res.header['Content-Type'].include?('application/json') # rubocop:disable Style/OpenStructUse
34
+ end
35
+
36
+ private
37
+
38
+ def get_request_class(method)
39
+ {
40
+ GET: Net::HTTP::Get,
41
+ POST: Net::HTTP::Post,
42
+ PUT: Net::HTTP::Put,
43
+ PATCH: Net::HTTP::Patch,
44
+ DELETE: Net::HTTP::Delete
45
+ }[method]
46
+ end
47
+
48
+ def build_request(method, uri, body)
49
+ req = get_request_class(method.to_sym).new(uri.request_uri)
50
+ req['X-MICROCMS-API-KEY'] = @api_key
51
+ if body
52
+ req['Content-Type'] = 'application/json'
53
+ req.body = JSON.dump(body)
54
+ end
55
+
56
+ req
57
+ end
58
+
59
+ def build_uri(endpoint, path, query)
60
+ origin = "https://#{@service_domain}.microcms.io"
61
+ path_with_id = path ? "/api/v1/#{endpoint}/#{path}" : "/api/v1/#{endpoint}"
62
+ encoded_query =
63
+ if !query || query.size.zero?
64
+ ''
65
+ else
66
+ "?#{URI.encode_www_form(query)}"
67
+ end
68
+
69
+ URI.parse("#{origin}#{path_with_id}#{encoded_query}")
70
+ end
71
+
72
+ def build_http(uri)
73
+ http = Net::HTTP.new(uri.host, uri.port)
74
+ http.use_ssl = true
75
+
76
+ http
77
+ end
78
+ end
79
+
23
80
  # Client
24
81
  class Client
82
+ include HttpUtil
83
+
25
84
  def initialize(service_domain, api_key)
26
85
  @service_domain = service_domain
27
86
  @api_key = api_key
@@ -68,6 +127,7 @@ module MicroCMS
68
127
 
69
128
  private
70
129
 
130
+ # rubocop:disable Style/MethodLength
71
131
  def build_query(option)
72
132
  {
73
133
  draftKey: option[:draftKey],
@@ -77,9 +137,11 @@ module MicroCMS
77
137
  q: option[:q],
78
138
  fields: option[:fields] ? option[:fields].join(',') : nil,
79
139
  filters: option[:filters],
80
- depth: option[:depth]
140
+ depth: option[:depth],
141
+ ids: option[:ids] ? option[:ids].join(',') : nil
81
142
  }.select { |_key, value| value }
82
143
  end
144
+ # rubocop:enable Style/MethodLength
83
145
 
84
146
  def put(endpoint, content, option = {})
85
147
  body = content.reject { |key, _value| key == :id }
@@ -89,58 +151,6 @@ module MicroCMS
89
151
  def post(endpoint, content, option = {})
90
152
  send_http_request('POST', endpoint, nil, option, content)
91
153
  end
92
-
93
- def send_http_request(method, endpoint, path, query = nil, body = nil)
94
- uri = build_uri(endpoint, path, query)
95
- http = build_http(uri)
96
- req = build_request(method, uri, body)
97
- res = http.request(req)
98
-
99
- raise APIError.new(status_code: res.code.to_i, body: res.body) if res.code.to_i >= 400
100
-
101
- JSON.parse(res.body, object_class: OpenStruct) if res.header['Content-Type'].include?('application/json') # rubocop:disable Style/OpenStructUse
102
- end
103
-
104
- def get_request_class(method)
105
- {
106
- GET: Net::HTTP::Get,
107
- POST: Net::HTTP::Post,
108
- PUT: Net::HTTP::Put,
109
- PATCH: Net::HTTP::Patch,
110
- DELETE: Net::HTTP::Delete
111
- }[method]
112
- end
113
-
114
- def build_request(method, uri, body)
115
- req = get_request_class(method.to_sym).new(uri.request_uri)
116
- req['X-MICROCMS-API-KEY'] = @api_key
117
- if body
118
- req['Content-Type'] = 'application/json'
119
- req.body = JSON.dump(body)
120
- end
121
-
122
- req
123
- end
124
-
125
- def build_uri(endpoint, path, query)
126
- origin = "https://#{@service_domain}.microcms.io"
127
- path_with_id = path ? "/api/v1/#{endpoint}/#{path}" : "/api/v1/#{endpoint}"
128
- encoded_query =
129
- if !query || query.size.zero?
130
- ''
131
- else
132
- "?#{URI.encode_www_form(query)}"
133
- end
134
-
135
- URI.parse("#{origin}#{path_with_id}#{encoded_query}")
136
- end
137
-
138
- def build_http(uri)
139
- http = Net::HTTP.new(uri.host, uri.port)
140
- http.use_ssl = true
141
-
142
- http
143
- end
144
154
  end
145
155
 
146
156
  # APIError
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: microcms-ruby-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - microCMS
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-12 00:00:00.000000000 Z
11
+ date: 2022-06-02 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: microCMS Ruby SDK
14
14
  email: