jirafe 0.5.0 → 0.6.0
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/README.md +1 -0
- data/lib/jirafe.rb +1 -0
- data/lib/jirafe/callback/events/data_helper.rb +0 -6
- data/lib/jirafe/callback/events/item.rb +1 -0
- data/lib/jirafe/callback/events/order.rb +1 -0
- data/lib/jirafe/callback/events/refund.rb +1 -0
- data/lib/jirafe/configuration.rb +0 -5
- data/lib/jirafe/model.rb +14 -0
- data/lib/jirafe/resource/jirafe_resource.rb +23 -27
- data/lib/jirafe/version.rb +1 -1
- data/spec/jirafe/configuration_spec.rb +0 -11
- metadata +2 -1
    
        data/README.md
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # Jirafe Analytics Ruby Client
         | 
| 2 2 |  | 
| 3 3 | 
             
            [](http://travis-ci.org/jirafe/jirafe-ruby-client)
         | 
| 4 | 
            +
            [](https://codeclimate.com/github/jirafe/jirafe-ruby-client)
         | 
| 4 5 |  | 
| 5 6 | 
             
            This is the official [Jirafe](http://jirafe.com/) rubygem.
         | 
| 6 7 | 
             
            It fully wraps Jirafe's [API](http://api.jirafe.com).
         | 
    
        data/lib/jirafe.rb
    CHANGED
    
    | @@ -17,6 +17,7 @@ module Jirafe | |
| 17 17 | 
             
              autoload :Configuration, "jirafe/configuration.rb"
         | 
| 18 18 | 
             
              autoload :Error, "jirafe/error.rb"
         | 
| 19 19 | 
             
              autoload :ResponseParser, "jirafe/response_parser.rb"
         | 
| 20 | 
            +
              autoload :Model, "jirafe/model.rb"
         | 
| 20 21 | 
             
              autoload :Asset, "jirafe/asset.rb"
         | 
| 21 22 | 
             
              autoload :Tracker, "jirafe/tracker.rb"
         | 
| 22 23 | 
             
              module Resource
         | 
| @@ -2,12 +2,6 @@ module Jirafe | |
| 2 2 | 
             
              module Callback
         | 
| 3 3 | 
             
                module Events
         | 
| 4 4 | 
             
                  module DataHelper
         | 
| 5 | 
            -
                    def initialize(attributes = {})
         | 
| 6 | 
            -
                      attributes.each do |attr, value|
         | 
| 7 | 
            -
                        self.send("#{attr}=", value) if self.respond_to?("#{attr}=")
         | 
| 8 | 
            -
                      end
         | 
| 9 | 
            -
                    end
         | 
| 10 | 
            -
             | 
| 11 5 | 
             
                    def format_amount(amount)
         | 
| 12 6 | 
             
                      return nil if amount.nil?
         | 
| 13 7 | 
             
                      "%01.4f" % amount
         | 
| @@ -2,6 +2,7 @@ module Jirafe | |
| 2 2 | 
             
              module Callback
         | 
| 3 3 | 
             
                module Events
         | 
| 4 4 | 
             
                  class Order < Jirafe::Callback::Event
         | 
| 5 | 
            +
                    include Jirafe::Model
         | 
| 5 6 | 
             
                    include DataHelper
         | 
| 6 7 | 
             
                    attr_accessor :identifier, :status, :customer, :visitor_identifier, :created_at,
         | 
| 7 8 | 
             
                      :grand_total, :sub_total, :tax_amount, :shipping_amount, :discount_amount, :items
         | 
    
        data/lib/jirafe/configuration.rb
    CHANGED
    
    
    
        data/lib/jirafe/model.rb
    ADDED
    
    | @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            module Jirafe
         | 
| 2 | 
            +
              module Model
         | 
| 3 | 
            +
                def initialize(attributes = {})
         | 
| 4 | 
            +
                  reinitialize(attributes)
         | 
| 5 | 
            +
                end
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def reinitialize(attributes = {})
         | 
| 8 | 
            +
                  attributes.each do |attr, value|
         | 
| 9 | 
            +
                    self.send("#{attr}=", value) if self.respond_to?("#{attr}=")
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                  self
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
            end
         | 
| @@ -3,6 +3,7 @@ module Jirafe | |
| 3 3 | 
             
                class JirafeResource
         | 
| 4 4 | 
             
                  include HTTParty
         | 
| 5 5 | 
             
                  include Jirafe::ResponseParser
         | 
| 6 | 
            +
                  include Jirafe::Model
         | 
| 6 7 |  | 
| 7 8 | 
             
                  base_uri Jirafe.config.url
         | 
| 8 9 | 
             
                  format :json
         | 
| @@ -18,14 +19,7 @@ module Jirafe | |
| 18 19 | 
             
                      return @attributes if @attributes && attrs === {}
         | 
| 19 20 | 
             
                      attrs.each_pair do |attr_name, options|
         | 
| 20 21 | 
             
                        attr_accessor attr_name
         | 
| 21 | 
            -
                        if options.include?(:identifier)
         | 
| 22 | 
            -
                          define_method attr_name do
         | 
| 23 | 
            -
                            ivar = instance_variable_get("@#{attr_name}")
         | 
| 24 | 
            -
                            ivar.nil? ? nil : ivar.to_i
         | 
| 25 | 
            -
                          end
         | 
| 26 | 
            -
                          alias_method :identifier, attr_name
         | 
| 27 | 
            -
                          alias_method :identifier=, "#{attr_name}="
         | 
| 28 | 
            -
                        end
         | 
| 22 | 
            +
                        define_identifier(attr_name) if options.include?(:identifier)
         | 
| 29 23 | 
             
                      end
         | 
| 30 24 | 
             
                      @attributes ||= attrs
         | 
| 31 25 | 
             
                    end
         | 
| @@ -54,7 +48,6 @@ module Jirafe | |
| 54 48 | 
             
                    def list(*parent_identifiers)
         | 
| 55 49 | 
             
                      if parent_identifiers.last.is_a?(Hash)
         | 
| 56 50 | 
             
                        options = {:query => parent_identifiers.pop }
         | 
| 57 | 
            -
                        options = parent_identifiers.pop
         | 
| 58 51 | 
             
                      end
         | 
| 59 52 | 
             
                      response = get(resource_url(nil, *parent_identifiers), options_with_token(options || {}))
         | 
| 60 53 | 
             
                      check_response_for_exception(response)
         | 
| @@ -68,26 +61,37 @@ module Jirafe | |
| 68 61 | 
             
                        options = {:query => parent_identifiers.pop }
         | 
| 69 62 | 
             
                      end
         | 
| 70 63 | 
             
                      response = get(resource_url(identifier, *parent_identifiers), options_with_token(options || {}))
         | 
| 71 | 
            -
                       | 
| 72 | 
            -
                      self.new(response.parsed_response)
         | 
| 64 | 
            +
                      handle_response(self.new, response)
         | 
| 73 65 | 
             
                    end
         | 
| 74 66 |  | 
| 75 67 | 
             
                    def create(resource)
         | 
| 76 68 | 
             
                      resource_id, parent_identifiers = identifiers_from_resource(resource)
         | 
| 77 69 | 
             
                      response = post(resource_url(resource_id, *parent_identifiers), options_with_token({:body => resource.attributes_for_change(:create)}))
         | 
| 78 | 
            -
                       | 
| 79 | 
            -
                      resource.reinitialize(response.parsed_response)
         | 
| 70 | 
            +
                      handle_response(resource, response)
         | 
| 80 71 | 
             
                    end
         | 
| 81 72 |  | 
| 82 73 | 
             
                    def update(resource)
         | 
| 83 74 | 
             
                      resource_id, parent_identifiers = identifiers_from_resource(resource)
         | 
| 84 75 | 
             
                      response = put(resource_url(resource_id, parent_identifiers), options_with_token({:body => resource.attributes_for_change(:update)}))
         | 
| 85 | 
            -
                       | 
| 86 | 
            -
                      resource.reinitalize(response.parsed_response)
         | 
| 76 | 
            +
                      handle_response(resource, response)
         | 
| 87 77 | 
             
                    end
         | 
| 88 78 |  | 
| 89 79 | 
             
                    private
         | 
| 90 80 |  | 
| 81 | 
            +
                    def define_identifier(attribute)
         | 
| 82 | 
            +
                      define_method attribute do
         | 
| 83 | 
            +
                        ivar = instance_variable_get("@#{attribute}")
         | 
| 84 | 
            +
                        ivar.nil? ? nil : ivar.to_i
         | 
| 85 | 
            +
                      end
         | 
| 86 | 
            +
                      alias_method :identifier, attribute
         | 
| 87 | 
            +
                      alias_method :identifier=, "#{attribute}="
         | 
| 88 | 
            +
                    end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    def handle_response(resource, response)
         | 
| 91 | 
            +
                      check_response_for_exception(response)
         | 
| 92 | 
            +
                      resource.reinitialize(response.parsed_response)
         | 
| 93 | 
            +
                    end
         | 
| 94 | 
            +
             | 
| 91 95 | 
             
                    def identifiers_from_resource(resource)
         | 
| 92 96 | 
             
                      return [] if resource.nil? || !resource.respond_to?(:identifier)
         | 
| 93 97 | 
             
                      [resource.identifier] + identifiers_from_resource(resource.parent)
         | 
| @@ -95,19 +99,11 @@ module Jirafe | |
| 95 99 |  | 
| 96 100 | 
             
                    def options_with_token(options = {})
         | 
| 97 101 | 
             
                      query_options = options.delete(:query) || {}
         | 
| 98 | 
            -
                       | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
                  def initialize(attributes = {})
         | 
| 103 | 
            -
                    reinitialize(attributes)
         | 
| 104 | 
            -
                  end
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                  def reinitialize(attributes = {})
         | 
| 107 | 
            -
                    attributes.each do |attr, value|
         | 
| 108 | 
            -
                      self.send("#{attr}=", value) if self.respond_to?("#{attr}=")
         | 
| 102 | 
            +
                      default_query = { :query => {} }
         | 
| 103 | 
            +
                      default_query[:query][:token] = Jirafe.config.token unless Jirafe.config.token.nil?
         | 
| 104 | 
            +
                      default_query[:query].merge!(query_options)
         | 
| 105 | 
            +
                      default_query.merge(options)
         | 
| 109 106 | 
             
                    end
         | 
| 110 | 
            -
                    self
         | 
| 111 107 | 
             
                  end
         | 
| 112 108 |  | 
| 113 109 | 
             
                  def attributes
         | 
    
        data/lib/jirafe/version.rb
    CHANGED
    
    
| @@ -122,16 +122,6 @@ describe Jirafe::Configuration do | |
| 122 122 | 
             
              describe "#token" do
         | 
| 123 123 | 
             
                subject { instance.token }
         | 
| 124 124 |  | 
| 125 | 
            -
                context "when it is not set" do
         | 
| 126 | 
            -
                  before { instance.reset! }
         | 
| 127 | 
            -
             | 
| 128 | 
            -
                  it "should raise an error" do
         | 
| 129 | 
            -
                    expect {
         | 
| 130 | 
            -
                      subject
         | 
| 131 | 
            -
                    }.to raise_error(Jirafe::Error::MissingToken)
         | 
| 132 | 
            -
                  end
         | 
| 133 | 
            -
                end
         | 
| 134 | 
            -
             | 
| 135 125 | 
             
                context "when it is set" do
         | 
| 136 126 | 
             
                  before { instance.token = "mytoken" }
         | 
| 137 127 | 
             
                  after { instance.reset! }
         | 
| @@ -182,7 +172,6 @@ describe Jirafe::Configuration do | |
| 182 172 | 
             
                  instance.reset!
         | 
| 183 173 | 
             
                  instance.url.should == "https://api.jirafe.com/v1"
         | 
| 184 174 | 
             
                  instance.callback_url.should == "https://data.jirafe.com"
         | 
| 185 | 
            -
                  expect { instance.token }.to raise_error(Jirafe::Error::MissingToken)
         | 
| 186 175 | 
             
                end
         | 
| 187 176 | 
             
              end
         | 
| 188 177 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: jirafe
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.6.0
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -226,6 +226,7 @@ files: | |
| 226 226 | 
             
            - lib/jirafe/callback/jirafe_callback.rb
         | 
| 227 227 | 
             
            - lib/jirafe/configuration.rb
         | 
| 228 228 | 
             
            - lib/jirafe/error.rb
         | 
| 229 | 
            +
            - lib/jirafe/model.rb
         | 
| 229 230 | 
             
            - lib/jirafe/resource/application.rb
         | 
| 230 231 | 
             
            - lib/jirafe/resource/jirafe_resource.rb
         | 
| 231 232 | 
             
            - lib/jirafe/resource/resources.rb
         |