lib/openstax_exchange.rb in openstax_exchange-0.0.0 vs lib/openstax_exchange.rb in openstax_exchange-0.0.1
- old
+ new
@@ -1,112 +1,8 @@
-require 'openstax/exchange/version'
-
-require 'oauth2'
-require 'uri'
-
-module OpenStax
- module Exchange
-
- DEFAULT_API_VERSION = :v1
-
- class << self
-
- ###########################################################################
- #
- # Configuration machinery.
- #
- # To configure OpenStax Exchange, put the following code in your
- # application's initialization logic
- # (eg. in the config/initializers in a Rails app)
- #
- # OpenStax::Exchange.configure do |config|
- # config.<parameter name> = <parameter value>
- # ...
- # end
- #
-
- def configure
- yield configuration
- end
-
- def configuration
- @configuration ||= Configuration.new
- end
-
- class Configuration
- # openstax_exchange_url
- # Base URL for OpenStax Exchange
- attr_reader :openstax_exchange_url
-
- # openstax_exchange_platform_id
- # OAuth client_id received from OpenStax Exchange
- attr_accessor :openstax_exchange_platform_id
-
- # openstax_exchange_platform_secret
- # OAuth client_secret received from OpenStax Exchange
- attr_accessor :openstax_exchange_platform_secret
-
- def openstax_exchange_url=(url)
- url.gsub!(/https|http/,'https') if !(url =~ /localhost/)
- url = url + "/" if url[url.size-1] != '/'
- @openstax_exchange_url = url
- end
-
- def initialize
- @openstax_exchange_platform_id = 'SET ME!'
- @openstax_exchange_platform_secret = 'SET ME!'
- @openstax_exchange_url = 'https://exchange.openstax.org/'
- super
- end
- end
-
- # Executes an OpenStax Exchange API call, using the given HTTP method,
- # API url and request options.
- # Any options accepted by OAuth2 requests can be used, such as
- # :params, :body, :headers, etc, plus the :access_token option, which can
- # be used to manually specify an OAuth access token.
- # On failure, it can throw Faraday::ConnectionFailed for connection errors
- # or OAuth2::Error if Exchange returns an HTTP 400 error,
- # such as 422 Unprocessable Entity.
- # On success, returns an OAuth2::Response object.
- def api_call(http_method, url, options = {})
- version = options.delete(:api_version)
- unless version.blank?
- options[:headers] ||= {}
- options[:headers].merge!({
- 'Accept' => "application/vnd.exchange.openstax.#{version.to_s}"
- })
- end
-
- token_string = options.delete(:access_token)
- token = token_string.blank? ? client.client_credentials.get_token :
- OAuth2::AccessToken.new(client, token_string)
-
- api_url = URI.join(configuration.openstax_exchange_url, 'api/', url)
-
- token.request(http_method, api_url, options)
- end
-
- # Performs an event search in the Exchange server.
- # Results are limited to events created by this app.
- # Takes a query parameter and an optional API version parameter.
- # API version currently defaults to :v1 (may change in the future).
- # On failure, throws an Exception, just like api_call.
- # On success, returns an OAuth2::Response object.
- def search_events(query, version = DEFAULT_API_VERSION)
- options = {:params => {:q => query},
- :api_version => version}
- api_call(:get, 'events', options)
- end
-
- protected
-
- def client
- @client ||= OAuth2::Client.new(configuration.openstax_exchange_platform_id,
- configuration.openstax_exchange_platform_secret,
- :site => configuration.openstax_exchange_url)
- end
-
- end
-
- end
-end
+require "openstax/exchange/version"
+require "openstax/exchange/exchange"
+require "openstax/exchange/configuration"
+require "openstax/exchange/client_instance"
+require "openstax/exchange/real_client/real_client"
+require "openstax/exchange/fake_client/fake_client"
+require "openstax/exchange/fake_client/configuration"
+require "openstax/exchange/exceptions"