honeys-place 0.1.0 → 0.1.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.
- checksums.yaml +5 -5
- data/lib/honey.rb +1 -0
- data/lib/honey/client.rb +18 -10
- data/lib/honey/data_feed.rb +47 -0
- data/lib/honey/response.rb +2 -2
- data/lib/honey/version.rb +1 -1
- data/test/honey/client_test.rb +0 -5
- data/test/honey/data_feed_test.rb +17 -0
- data/test/test_helper.rb +4 -0
- metadata +40 -21
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: 504d6240757a67d21325d7f039a0ed8c313d8f9132fcfcb9acc90554aaf9c29c
         | 
| 4 | 
            +
              data.tar.gz: c5cf0c2af8979746746e8ec8957d1960f040d373d15e6344dc5b24cce0949820
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: edf5ef1c144f30fc475f9ff14a08c6703f39dd587a754b7f59286e3f325ab56c26ee2732182f81ac4731c6d9b976a57c3baab08a9628e1e6aa95b4d57c789e1f
         | 
| 7 | 
            +
              data.tar.gz: deea54daba4ccc06a3ef7cbeb6646b6f913e3a2b61056b049069ba05d0c51eae4012fffab87241f3e5c6f208ff1608ea2ae0af5f9803c0cb49808ce11d40e482
         | 
    
        data/lib/honey.rb
    CHANGED
    
    
    
        data/lib/honey/client.rb
    CHANGED
    
    | @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            module Honey
         | 
| 2 2 | 
             
              class Client
         | 
| 3 3 | 
             
                include HTTParty
         | 
| 4 | 
            +
                format :xml
         | 
| 4 5 | 
             
                base_uri 'https://www.honeysplace.com/ws/'
         | 
| 5 6 |  | 
| 6 7 | 
             
                def initialize(account = '', token = '')
         | 
| @@ -16,17 +17,15 @@ module Honey | |
| 16 17 | 
             
                end
         | 
| 17 18 |  | 
| 18 19 | 
             
                def stock_check(*skus)
         | 
| 19 | 
            -
                  results = {}
         | 
| 20 20 | 
             
                  skus = skus.first if skus.first.is_a? Array
         | 
| 21 | 
            -
                  skus.each_slice(25) do |sku_group|
         | 
| 22 | 
            -
                     | 
| 23 | 
            -
                    data | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
                   | 
| 29 | 
            -
                  results
         | 
| 21 | 
            +
                  skus.each_slice(25).map do |sku_group|
         | 
| 22 | 
            +
                    data = post(build_stock_check(*sku_group)).stock['item']
         | 
| 23 | 
            +
                    stock_hash(data)
         | 
| 24 | 
            +
                  end.reduce({}, :merge)
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def data_feed(code, format)
         | 
| 28 | 
            +
                  DataFeed.new(code, format)
         | 
| 30 29 | 
             
                end
         | 
| 31 30 |  | 
| 32 31 | 
             
                def build_order(order)
         | 
| @@ -43,6 +42,15 @@ module Honey | |
| 43 42 |  | 
| 44 43 | 
             
                private
         | 
| 45 44 |  | 
| 45 | 
            +
                def stock_hash(data)
         | 
| 46 | 
            +
                  # API returns single element not wrapped in array
         | 
| 47 | 
            +
                  data = [data] unless data.is_a?(Array)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  data.map do |datum|
         | 
| 50 | 
            +
                    [datum['sku'], datum['qty'].to_i]
         | 
| 51 | 
            +
                  end.to_h
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 46 54 | 
             
                def post(xml)
         | 
| 47 55 | 
             
                  Honey::Response.new(self.class.post('', { query: { xmldata: xml }}))
         | 
| 48 56 | 
             
                end
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            module Honey
         | 
| 2 | 
            +
              #
         | 
| 3 | 
            +
              # Data Feed
         | 
| 4 | 
            +
              #
         | 
| 5 | 
            +
              # Access Honey's Place data feeds in various formats
         | 
| 6 | 
            +
              #
         | 
| 7 | 
            +
              class DataFeed
         | 
| 8 | 
            +
                attr_reader :code, :format
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                Formats = %i(xml json csv woo shopify amazon_inventory).freeze
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                def initialize(code, format)
         | 
| 13 | 
            +
                  @code = code
         | 
| 14 | 
            +
                  @format = format if Formats.include?(format)
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                def url
         | 
| 18 | 
            +
                  if format.nil?
         | 
| 19 | 
            +
                    raise ArgumentError, "format is required to be one of #{Formats}"
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
                  "https://www.honeysplace.com/df/#{code}/#{format}"
         | 
| 22 | 
            +
                end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def parse
         | 
| 25 | 
            +
                  read
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def download_to(path)
         | 
| 29 | 
            +
                  File.open(path, 'w') do |file|
         | 
| 30 | 
            +
                    file.write(read)
         | 
| 31 | 
            +
                    # HTTParty.get(url, stream: true) do |fragment|
         | 
| 32 | 
            +
                    #   file.write(fragment)
         | 
| 33 | 
            +
                    # end
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                private
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                def read
         | 
| 40 | 
            +
                  response = HTTParty.get(url)
         | 
| 41 | 
            +
                  if response.headers['content-type'].start_with?('text/html;')
         | 
| 42 | 
            +
                    raise StandardError, 'This data feed is not ready. Try again later.'
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                  response.parsed_response
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end
         | 
    
        data/lib/honey/response.rb
    CHANGED
    
    | @@ -5,8 +5,8 @@ module Honey | |
| 5 5 | 
             
                attr_accessor :data
         | 
| 6 6 |  | 
| 7 7 | 
             
                def initialize(http_response)
         | 
| 8 | 
            -
                   | 
| 9 | 
            -
                  @data = OpenStruct.new( | 
| 8 | 
            +
                  data = http_response.parsed_response['HPEnvelope']
         | 
| 9 | 
            +
                  @data = OpenStruct.new(data)
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 12 | 
             
                def method_missing(method, *args, &block)
         | 
    
        data/lib/honey/version.rb
    CHANGED
    
    
    
        data/test/honey/client_test.rb
    CHANGED
    
    | @@ -5,11 +5,6 @@ class ClientTest < Minitest::Test | |
| 5 5 | 
             
                @client = Honey::Client.new
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 | 
            -
              def test_data_feed_url
         | 
| 9 | 
            -
                assert_equal Honey::Client.data_feed_url(:xml), "xml/honeysinventoryv2_0.xml"
         | 
| 10 | 
            -
                assert_equal Honey::Client.data_feed_url(:txt), "xml/honeysinventory_v_1.0.txt"
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 8 | 
             
              def test_builds_order
         | 
| 14 9 | 
             
                assert_match_xpath "order/items/item", @client.build_order(valid_order)
         | 
| 15 10 | 
             
              end
         | 
| @@ -0,0 +1,17 @@ | |
| 1 | 
            +
            require 'test_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class DataFeedTest < Minitest::Test
         | 
| 4 | 
            +
              def test_url
         | 
| 5 | 
            +
                feed = Honey::DataFeed.new('code', :json)
         | 
| 6 | 
            +
                assert_equal feed.url, 'https://www.honeysplace.com/df/code/json'
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              def test_format_is_valid
         | 
| 10 | 
            +
                feed = Honey::DataFeed.new('code', :unknown_format)
         | 
| 11 | 
            +
                assert_nil feed.format
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                assert_raises ArgumentError do
         | 
| 14 | 
            +
                  feed.url
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            end
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: honeys-place
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jacob Evan Shreve
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2018-07-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: httparty
         | 
| @@ -16,54 +16,70 @@ dependencies: | |
| 16 16 | 
             
                requirements:
         | 
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '0. | 
| 20 | 
            -
                - - ">="
         | 
| 21 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            -
                    version: 0.13.0
         | 
| 19 | 
            +
                    version: '0.16'
         | 
| 23 20 | 
             
              type: :runtime
         | 
| 24 21 | 
             
              prerelease: false
         | 
| 25 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 23 | 
             
                requirements:
         | 
| 27 24 | 
             
                - - "~>"
         | 
| 28 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            -
                    version: '0. | 
| 30 | 
            -
                - - ">="
         | 
| 31 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            -
                    version: 0.13.0
         | 
| 26 | 
            +
                    version: '0.16'
         | 
| 33 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 28 | 
             
              name: nokogiri
         | 
| 35 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 36 30 | 
             
                requirements:
         | 
| 37 31 | 
             
                - - "~>"
         | 
| 38 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            -
                    version: '1. | 
| 40 | 
            -
                - - ">="
         | 
| 41 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 42 | 
            -
                    version: 1.6.1
         | 
| 33 | 
            +
                    version: '1.8'
         | 
| 43 34 | 
             
              type: :runtime
         | 
| 44 35 | 
             
              prerelease: false
         | 
| 45 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 46 37 | 
             
                requirements:
         | 
| 47 38 | 
             
                - - "~>"
         | 
| 48 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 49 | 
            -
                    version: '1. | 
| 50 | 
            -
             | 
| 40 | 
            +
                    version: '1.8'
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rake
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - "~>"
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: '12.2'
         | 
| 48 | 
            +
              type: :development
         | 
| 49 | 
            +
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - "~>"
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '12.2'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: minitest
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - "~>"
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '5.8'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - "~>"
         | 
| 51 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 52 | 
            -
                    version:  | 
| 68 | 
            +
                    version: '5.8'
         | 
| 53 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 54 | 
            -
              name:  | 
| 70 | 
            +
              name: byebug
         | 
| 55 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 56 72 | 
             
                requirements:
         | 
| 57 73 | 
             
                - - "~>"
         | 
| 58 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 59 | 
            -
                    version: ' | 
| 75 | 
            +
                    version: '9.1'
         | 
| 60 76 | 
             
              type: :development
         | 
| 61 77 | 
             
              prerelease: false
         | 
| 62 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 63 79 | 
             
                requirements:
         | 
| 64 80 | 
             
                - - "~>"
         | 
| 65 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 66 | 
            -
                    version: ' | 
| 82 | 
            +
                    version: '9.1'
         | 
| 67 83 | 
             
            description: |2
         | 
| 68 84 | 
             
                  Honey's Place is a wrapper for the Honey's Place API which easily enables
         | 
| 69 85 | 
             
                  placing orders, checking order statuses, and stock checking.
         | 
| @@ -75,6 +91,7 @@ files: | |
| 75 91 | 
             
            - lib/honey.rb
         | 
| 76 92 | 
             
            - lib/honey/builder.rb
         | 
| 77 93 | 
             
            - lib/honey/client.rb
         | 
| 94 | 
            +
            - lib/honey/data_feed.rb
         | 
| 78 95 | 
             
            - lib/honey/error.rb
         | 
| 79 96 | 
             
            - lib/honey/order.rb
         | 
| 80 97 | 
             
            - lib/honey/response.rb
         | 
| @@ -82,6 +99,7 @@ files: | |
| 82 99 | 
             
            - lib/nokogiri/xml/document_to_hash.rb
         | 
| 83 100 | 
             
            - test/honey/builder_test.rb
         | 
| 84 101 | 
             
            - test/honey/client_test.rb
         | 
| 102 | 
            +
            - test/honey/data_feed_test.rb
         | 
| 85 103 | 
             
            - test/honey/order_test.rb
         | 
| 86 104 | 
             
            - test/honey_test.rb
         | 
| 87 105 | 
             
            - test/nokogiri/xml/document_to_hash_test.rb
         | 
| @@ -106,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 106 124 | 
             
                  version: '0'
         | 
| 107 125 | 
             
            requirements: []
         | 
| 108 126 | 
             
            rubyforge_project: 
         | 
| 109 | 
            -
            rubygems_version: 2.6 | 
| 127 | 
            +
            rubygems_version: 2.7.6
         | 
| 110 128 | 
             
            signing_key: 
         | 
| 111 129 | 
             
            specification_version: 4
         | 
| 112 130 | 
             
            summary: A wrapper for the Honey's Place API
         | 
| @@ -114,6 +132,7 @@ test_files: | |
| 114 132 | 
             
            - test/honey_test.rb
         | 
| 115 133 | 
             
            - test/test_helper.rb
         | 
| 116 134 | 
             
            - test/nokogiri/xml/document_to_hash_test.rb
         | 
| 135 | 
            +
            - test/honey/data_feed_test.rb
         | 
| 117 136 | 
             
            - test/honey/builder_test.rb
         | 
| 118 137 | 
             
            - test/honey/client_test.rb
         | 
| 119 138 | 
             
            - test/honey/order_test.rb
         |