nimbu-api 0.0.2 → 0.1
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.
- data/lib/nimbu-api.rb +3 -0
- data/lib/nimbu-api/client.rb +8 -0
- data/lib/nimbu-api/configuration.rb +6 -1
- data/lib/nimbu-api/connection.rb +5 -8
- data/lib/nimbu-api/endpoints/channels.rb +1 -1
- data/lib/nimbu-api/endpoints/simulator.rb +23 -0
- data/lib/nimbu-api/endpoints/themes.rb +26 -0
- data/lib/nimbu-api/errors.rb +1 -1
- data/lib/nimbu-api/errors/bad_gateway.rb +15 -0
- data/lib/nimbu-api/errors/service_error.rb +1 -0
- data/lib/nimbu-api/request.rb +2 -0
- data/lib/nimbu-api/request/site_header.rb +22 -0
- data/lib/nimbu-api/request/user_agent.rb +16 -0
- data/lib/nimbu-api/utils/constants.rb +6 -3
- data/lib/nimbu-api/version.rb +3 -1
- data/nimbu-api.gemspec +2 -1
- metadata +25 -4
data/lib/nimbu-api.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "nimbu-api/version"
|
2
2
|
|
3
3
|
require 'openssl'
|
4
|
+
require 'excon'
|
4
5
|
require 'faraday'
|
5
6
|
require 'multi_json'
|
6
7
|
|
@@ -16,7 +17,9 @@ require 'nimbu-api/client'
|
|
16
17
|
|
17
18
|
require 'nimbu-api/endpoints/authorizations'
|
18
19
|
require 'nimbu-api/endpoints/login'
|
20
|
+
require 'nimbu-api/endpoints/simulator'
|
19
21
|
require 'nimbu-api/endpoints/sites'
|
22
|
+
require 'nimbu-api/endpoints/themes'
|
20
23
|
require 'nimbu-api/endpoints/channels'
|
21
24
|
require 'nimbu-api/endpoints/channels/entries'
|
22
25
|
require 'nimbu-api/endpoints/videos'
|
data/lib/nimbu-api/client.rb
CHANGED
@@ -14,6 +14,10 @@ module Nimbu
|
|
14
14
|
Nimbu::Builder.new('Sites', current_options.merge(options), &block)
|
15
15
|
end
|
16
16
|
|
17
|
+
def themes(options={}, &block)
|
18
|
+
Nimbu::Builder.new('Themes', current_options.merge(options), &block)
|
19
|
+
end
|
20
|
+
|
17
21
|
def channels(options={}, &block)
|
18
22
|
Nimbu::Builder.new('Channels', current_options.merge(options), &block)
|
19
23
|
end
|
@@ -22,6 +26,10 @@ module Nimbu
|
|
22
26
|
Nimbu::Builder.new('Videos', current_options.merge(options), &block)
|
23
27
|
end
|
24
28
|
|
29
|
+
def simulator(options={}, &block)
|
30
|
+
Nimbu::Builder.new('Simulator', current_options.merge(options), &block)
|
31
|
+
end
|
32
|
+
|
25
33
|
def authenticate(options={}, &block)
|
26
34
|
Nimbu::Builder.new('Login', current_options.merge(options), &block).response
|
27
35
|
end
|
@@ -9,6 +9,7 @@ module Nimbu
|
|
9
9
|
:oauth_token,
|
10
10
|
:endpoint,
|
11
11
|
:site,
|
12
|
+
:subdomain,
|
12
13
|
:ssl,
|
13
14
|
:mime_type,
|
14
15
|
:user_agent,
|
@@ -38,6 +39,9 @@ module Nimbu
|
|
38
39
|
# By default, don't set a user basic authentication
|
39
40
|
DEFAULT_BASIC_AUTH = nil
|
40
41
|
|
42
|
+
# By default, don't set a nimbu subdomain
|
43
|
+
DEFAULT_SUBDOMAIN = nil
|
44
|
+
|
41
45
|
# The api endpoint used to connect to Nimbu if none is set
|
42
46
|
DEFAULT_ENDPOINT = 'https://api.nimbu.io'.freeze
|
43
47
|
|
@@ -48,7 +52,7 @@ module Nimbu
|
|
48
52
|
DEFAULT_SSL = {}
|
49
53
|
|
50
54
|
# The value sent in the http header for 'User-Agent' if none is set
|
51
|
-
DEFAULT_USER_AGENT = "Nimbu Ruby
|
55
|
+
DEFAULT_USER_AGENT = "Nimbu Ruby Client #{Nimbu::API::VERSION}".freeze
|
52
56
|
|
53
57
|
# By default the <tt>Accept</tt> header will make a request for <tt>JSON</tt>
|
54
58
|
DEFAULT_MIME_TYPE = :json
|
@@ -102,6 +106,7 @@ module Nimbu
|
|
102
106
|
self.basic_auth = DEFAULT_BASIC_AUTH
|
103
107
|
self.auto_pagination = DEFAULT_AUTO_PAGINATION
|
104
108
|
self.adapter = DEFAULT_ADAPTER
|
109
|
+
self.subdomain = DEFAULT_SUBDOMAIN
|
105
110
|
self
|
106
111
|
end
|
107
112
|
|
data/lib/nimbu-api/connection.rb
CHANGED
@@ -15,14 +15,9 @@ module Nimbu
|
|
15
15
|
|
16
16
|
def default_options(options={})
|
17
17
|
{
|
18
|
-
# :headers => {
|
19
|
-
# # ACCEPT => "application/json",
|
20
|
-
# # ACCEPT_CHARSET => "utf-8",
|
21
|
-
# # USER_AGENT => user_agent,
|
22
|
-
# # CONTENT_TYPE => 'application/json'
|
23
|
-
# },
|
24
18
|
:ssl => options.fetch(:ssl) { ssl },
|
25
|
-
:url => options.fetch(:endpoint) { Nimbu.endpoint }
|
19
|
+
:url => options.fetch(:endpoint) { Nimbu.endpoint },
|
20
|
+
:subdomain => options.fetch(:subdomain) { Nimbu.subdomain }
|
26
21
|
}.merge(options)
|
27
22
|
end
|
28
23
|
|
@@ -38,13 +33,15 @@ module Nimbu
|
|
38
33
|
builder.use Faraday::Request::UrlEncoded
|
39
34
|
builder.use Nimbu::Request::OAuth2, oauth_token if oauth_token?
|
40
35
|
builder.use Nimbu::Request::BasicAuth, authentication if basic_authed?
|
36
|
+
builder.use Nimbu::Request::UserAgent
|
37
|
+
builder.use Nimbu::Request::SiteHeader, subdomain
|
41
38
|
|
42
39
|
builder.use Faraday::Response::Logger if ENV['DEBUG']
|
40
|
+
builder.use Nimbu::Response::RaiseError
|
43
41
|
unless options[:raw]
|
44
42
|
builder.use Nimbu::Response::Mashify
|
45
43
|
builder.use Nimbu::Response::Json
|
46
44
|
end
|
47
|
-
builder.use Nimbu::Response::RaiseError
|
48
45
|
builder.adapter adapter
|
49
46
|
end
|
50
47
|
end
|
@@ -6,7 +6,7 @@ module Nimbu
|
|
6
6
|
class Channels < Endpoint
|
7
7
|
|
8
8
|
def entries(options={}, &block)
|
9
|
-
|
9
|
+
Nimbu::Builder.new('Channels::Entries', current_options.merge(options), &block)
|
10
10
|
end
|
11
11
|
|
12
12
|
def list(*args)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nimbu
|
4
|
+
module Endpoints
|
5
|
+
class Simulator < Endpoint
|
6
|
+
|
7
|
+
def recipe(*args)
|
8
|
+
arguments(args)
|
9
|
+
|
10
|
+
response = post_request("/simulator/recipe", arguments.params)
|
11
|
+
return response
|
12
|
+
end
|
13
|
+
|
14
|
+
def render(*args)
|
15
|
+
arguments(args)
|
16
|
+
|
17
|
+
response = post_request("/simulator/render", arguments.params)
|
18
|
+
return response
|
19
|
+
end
|
20
|
+
|
21
|
+
end # Simulator
|
22
|
+
end # Endpoints
|
23
|
+
end # Nimbu
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nimbu
|
4
|
+
module Endpoints
|
5
|
+
class Themes < Endpoint
|
6
|
+
|
7
|
+
def list(*args)
|
8
|
+
arguments(args)
|
9
|
+
|
10
|
+
response = get_request("/themes", arguments.params)
|
11
|
+
return response unless block_given?
|
12
|
+
response.each { |el| yield el }
|
13
|
+
end
|
14
|
+
alias :all :list
|
15
|
+
|
16
|
+
def get(*args)
|
17
|
+
arguments(args, :required => [:theme_id])
|
18
|
+
|
19
|
+
get_request("/themes/#{theme_id}", arguments.params)
|
20
|
+
end
|
21
|
+
alias :find :get
|
22
|
+
|
23
|
+
|
24
|
+
end # Themes
|
25
|
+
end # Endpoints
|
26
|
+
end # Nimbu
|
data/lib/nimbu-api/errors.rb
CHANGED
@@ -26,6 +26,6 @@ module Nimbu
|
|
26
26
|
end # Error
|
27
27
|
end # Nimbu
|
28
28
|
|
29
|
-
%w( service_error bad_request unauthorized forbidden not_found not_acceptable unprocessable_entity internal_server_error service_unavailable client_error invalid_options required_params unknown_value validations ).each do |error|
|
29
|
+
%w( service_error bad_request bad_gateway unauthorized forbidden not_found not_acceptable unprocessable_entity internal_server_error service_unavailable client_error invalid_options required_params unknown_value validations ).each do |error|
|
30
30
|
require "nimbu-api/errors/#{error}"
|
31
31
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module Nimbu #:nodoc
|
4
|
+
# Raised when Nimbu returns the HTTP status code 502 (which 'should' never happen)
|
5
|
+
module Error
|
6
|
+
class BadGateway < ServiceError
|
7
|
+
http_status_code 502
|
8
|
+
|
9
|
+
def initialize(response)
|
10
|
+
super(response)
|
11
|
+
end
|
12
|
+
|
13
|
+
end # BadGateway
|
14
|
+
end # Error
|
15
|
+
end # Nimbu
|
data/lib/nimbu-api/request.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
|
5
|
+
module Nimbu
|
6
|
+
class Request::SiteHeader < Faraday::Middleware
|
7
|
+
include Nimbu::Utils::Constants
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
env[:request_headers].merge!(NIMBU_SITE => @subdomain) if @subdomain
|
11
|
+
@app.call env
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize(app, *args)
|
15
|
+
super app
|
16
|
+
@app = app
|
17
|
+
@subdomain = args.shift
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
end # Request::SiteHeader
|
22
|
+
end # Nimbu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'faraday'
|
4
|
+
|
5
|
+
module Nimbu
|
6
|
+
class Request::UserAgent < Faraday::Middleware
|
7
|
+
include Nimbu::Utils::Constants
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
env[:request_headers].merge!(USER_AGENT => Nimbu.user_agent)
|
11
|
+
|
12
|
+
@app.call env
|
13
|
+
end
|
14
|
+
|
15
|
+
end # Request::UserAgent
|
16
|
+
end # Nimbu
|
@@ -3,6 +3,12 @@ module Nimbu
|
|
3
3
|
module Constants
|
4
4
|
extend self
|
5
5
|
|
6
|
+
# Request headers
|
7
|
+
USER_AGENT = 'User-Agent'.freeze
|
8
|
+
ACCEPT = 'Accept'.freeze
|
9
|
+
ACCEPT_CHARSET = 'Accept-Charset'.freeze
|
10
|
+
NIMBU_SITE = 'X-Nimbu-Site'.freeze
|
11
|
+
|
6
12
|
# Response headers
|
7
13
|
RATELIMIT_REMAINING = 'X-RateLimit-Remaining'.freeze
|
8
14
|
RATELIMIT_LIMIT = 'X-RateLimit-Limit'.freeze
|
@@ -13,9 +19,6 @@ module Nimbu
|
|
13
19
|
SERVER = 'Server'.freeze
|
14
20
|
DATE = 'Date'.freeze
|
15
21
|
LOCATION = 'Location'.freeze
|
16
|
-
USER_AGENT = 'User-Agent'.freeze
|
17
|
-
ACCEPT = 'Accept'.freeze
|
18
|
-
ACCEPT_CHARSET = 'Accept-Charset'.freeze
|
19
22
|
OAUTH_SCOPES = 'X-Oauth-Scopes'.freeze
|
20
23
|
ACCEPTED_OAUTH_SCOPES = 'X-Accepted-Oauth-Scopes'.freeze
|
21
24
|
|
data/lib/nimbu-api/version.rb
CHANGED
data/nimbu-api.gemspec
CHANGED
@@ -5,7 +5,7 @@ require 'nimbu-api/version'
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "nimbu-api"
|
8
|
-
gem.version = Nimbu::VERSION
|
8
|
+
gem.version = Nimbu::API::VERSION
|
9
9
|
gem.authors = ["Peter Dedene"]
|
10
10
|
gem.email = ["support@nimbu.io"]
|
11
11
|
gem.summary = 'Ruby bindings for the Nimbu API'
|
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.add_dependency 'faraday'
|
21
21
|
gem.add_dependency 'multi_json'
|
22
22
|
gem.add_dependency 'oauth2'
|
23
|
+
gem.add_dependency 'excon'
|
23
24
|
|
24
25
|
gem.add_development_dependency "bundler", "~> 1.3"
|
25
26
|
gem.add_development_dependency "rake"
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: nimbu-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: '0.1'
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Peter Dedene
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -75,6 +75,22 @@ dependencies:
|
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
name: excon
|
86
|
+
prerelease: false
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ! '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
type: :runtime
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
version_requirements: !ruby/object:Gem::Requirement
|
80
96
|
none: false
|
@@ -211,9 +227,12 @@ files:
|
|
211
227
|
- lib/nimbu-api/endpoints/channels.rb
|
212
228
|
- lib/nimbu-api/endpoints/channels/entries.rb
|
213
229
|
- lib/nimbu-api/endpoints/login.rb
|
230
|
+
- lib/nimbu-api/endpoints/simulator.rb
|
214
231
|
- lib/nimbu-api/endpoints/sites.rb
|
232
|
+
- lib/nimbu-api/endpoints/themes.rb
|
215
233
|
- lib/nimbu-api/endpoints/videos.rb
|
216
234
|
- lib/nimbu-api/errors.rb
|
235
|
+
- lib/nimbu-api/errors/bad_gateway.rb
|
217
236
|
- lib/nimbu-api/errors/bad_request.rb
|
218
237
|
- lib/nimbu-api/errors/client_error.rb
|
219
238
|
- lib/nimbu-api/errors/forbidden.rb
|
@@ -240,6 +259,8 @@ files:
|
|
240
259
|
- lib/nimbu-api/request/normalizer.rb
|
241
260
|
- lib/nimbu-api/request/oauth2.rb
|
242
261
|
- lib/nimbu-api/request/parameter_filter.rb
|
262
|
+
- lib/nimbu-api/request/site_header.rb
|
263
|
+
- lib/nimbu-api/request/user_agent.rb
|
243
264
|
- lib/nimbu-api/request/validations.rb
|
244
265
|
- lib/nimbu-api/request/validations/format.rb
|
245
266
|
- lib/nimbu-api/request/validations/presence.rb
|
@@ -275,7 +296,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
275
296
|
- !ruby/object:Gem::Version
|
276
297
|
segments:
|
277
298
|
- 0
|
278
|
-
hash:
|
299
|
+
hash: -2620439181991597376
|
279
300
|
version: '0'
|
280
301
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
281
302
|
none: false
|
@@ -284,7 +305,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
305
|
- !ruby/object:Gem::Version
|
285
306
|
segments:
|
286
307
|
- 0
|
287
|
-
hash:
|
308
|
+
hash: -2620439181991597376
|
288
309
|
version: '0'
|
289
310
|
requirements: []
|
290
311
|
rubyforge_project:
|