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 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: