nimbu-api 0.0.2 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|