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 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'
@@ -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 Gem #{Nimbu::VERSION}".freeze
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
 
@@ -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
- @entries ||= Nimbu::Builder.new('Channels::Entries', current_options.merge(options), &block)
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
@@ -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
@@ -9,6 +9,7 @@ module Nimbu
9
9
  include ::Nimbu::Utils::Json
10
10
 
11
11
  attr_reader :http_headers
12
+ attr_reader :http_body
12
13
 
13
14
  def initialize(response)
14
15
  @http_headers = response[:response_headers]
@@ -5,6 +5,8 @@ require 'nimbu-api/request/basic_auth'
5
5
  require 'nimbu-api/request/json'
6
6
  require 'nimbu-api/request/validations'
7
7
  require 'nimbu-api/request/arguments'
8
+ require 'nimbu-api/request/user_agent'
9
+ require 'nimbu-api/request/site_header'
8
10
 
9
11
  module Nimbu
10
12
 
@@ -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
 
@@ -1,3 +1,5 @@
1
1
  module Nimbu
2
- VERSION = "0.0.2"
2
+ module API
3
+ VERSION = "0.1"
4
+ end
3
5
  end
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.0.2
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-03-27 00:00:00.000000000 Z
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: 3347433547534944339
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: 3347433547534944339
308
+ hash: -2620439181991597376
288
309
  version: '0'
289
310
  requirements: []
290
311
  rubyforge_project: