powa_api 0.0.3
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/.gitignore +25 -0
 - data/Gemfile +4 -0
 - data/README.md +37 -0
 - data/Rakefile +2 -0
 - data/lib/powa_api/order_service.rb +76 -0
 - data/lib/powa_api/powa_service.rb +54 -0
 - data/lib/powa_api/product_service.rb +106 -0
 - data/lib/powa_api/version.rb +3 -0
 - data/lib/powa_api.rb +40 -0
 - data/powa_api.gemspec +24 -0
 - metadata +77 -0
 
    
        data/.gitignore
    ADDED
    
    | 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            .rvmrc
         
     | 
| 
      
 2 
     | 
    
         
            +
            *.gem
         
     | 
| 
      
 3 
     | 
    
         
            +
            *.rbc
         
     | 
| 
      
 4 
     | 
    
         
            +
            .bundle
         
     | 
| 
      
 5 
     | 
    
         
            +
            .config
         
     | 
| 
      
 6 
     | 
    
         
            +
            coverage
         
     | 
| 
      
 7 
     | 
    
         
            +
            InstalledFiles
         
     | 
| 
      
 8 
     | 
    
         
            +
            lib/bundler/man
         
     | 
| 
      
 9 
     | 
    
         
            +
            pkg
         
     | 
| 
      
 10 
     | 
    
         
            +
            rdoc
         
     | 
| 
      
 11 
     | 
    
         
            +
            spec/reports
         
     | 
| 
      
 12 
     | 
    
         
            +
            test/tmp
         
     | 
| 
      
 13 
     | 
    
         
            +
            test/version_tmp
         
     | 
| 
      
 14 
     | 
    
         
            +
            tmp
         
     | 
| 
      
 15 
     | 
    
         
            +
            *.yml
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            # YARD artifacts
         
     | 
| 
      
 18 
     | 
    
         
            +
            .yardoc
         
     | 
| 
      
 19 
     | 
    
         
            +
            _yardoc
         
     | 
| 
      
 20 
     | 
    
         
            +
            doc/
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            # Rubymine files
         
     | 
| 
      
 23 
     | 
    
         
            +
            .idea/
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Gemfile.lock
         
     | 
    
        data/Gemfile
    ADDED
    
    
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            powa-api
         
     | 
| 
      
 2 
     | 
    
         
            +
            ========
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            Ruby interface to the POWA API
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            [http://developer.powa.com/guide](http://developer.powa.com/guide)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            Configuration
         
     | 
| 
      
 9 
     | 
    
         
            +
            -------------
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ### Yaml example
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ```yaml
         
     | 
| 
      
 14 
     | 
    
         
            +
            environment: "sandbox"
         
     | 
| 
      
 15 
     | 
    
         
            +
            integration_security_key: "KEY-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
         
     | 
| 
      
 16 
     | 
    
         
            +
            website_authorisation_token: "TOKEN-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
         
     | 
| 
      
 17 
     | 
    
         
            +
            ```
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            Then
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 22 
     | 
    
         
            +
            PowaApi.configure_with("path/to/yaml/file")
         
     | 
| 
      
 23 
     | 
    
         
            +
            ```
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            ### Ruby example
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 28 
     | 
    
         
            +
            PowaApi.configure(:environment => "sandbox", :integration_security_key => "KEY-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
         
     | 
| 
      
 29 
     | 
    
         
            +
             :website_authorisation_token => "TOKEN-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX")
         
     | 
| 
      
 30 
     | 
    
         
            +
            ```
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            Usage
         
     | 
| 
      
 33 
     | 
    
         
            +
            -------------
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 36 
     | 
    
         
            +
            products = PowaApi::ProductService.get_products
         
     | 
| 
      
 37 
     | 
    
         
            +
            ```
         
     | 
    
        data/Rakefile
    ADDED
    
    
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module PowaApi
         
     | 
| 
      
 2 
     | 
    
         
            +
              class OrderService < PowaService
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def self.find_updated_orders(updated_from, updated_to = nil)
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                  response = client.request :get_updated_orders do
         
     | 
| 
      
 9 
     | 
    
         
            +
                    soap.xml do |xml|
         
     | 
| 
      
 10 
     | 
    
         
            +
                      xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                        header_block(xml)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                        xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 15 
     | 
    
         
            +
                          xml.urn(:FindUpdatedOrdersRequest) do |xml|
         
     | 
| 
      
 16 
     | 
    
         
            +
                            xml.updatedFrom updated_from.strftime('%FT%T.000')
         
     | 
| 
      
 17 
     | 
    
         
            +
                            xml.updateTo updated_to.strftime('%FT%T.000') if updated_to
         
     | 
| 
      
 18 
     | 
    
         
            +
                          end
         
     | 
| 
      
 19 
     | 
    
         
            +
                        end
         
     | 
| 
      
 20 
     | 
    
         
            +
                      end
         
     | 
| 
      
 21 
     | 
    
         
            +
                    end
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  [response.to_array(:find_updated_orders_response).first[:orders]].flatten.compact
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                def self.get_order_details(order_number)
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 33 
     | 
    
         
            +
                    response = client.request :get_order_details do
         
     | 
| 
      
 34 
     | 
    
         
            +
                      soap.xml do |xml|
         
     | 
| 
      
 35 
     | 
    
         
            +
                        xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                          header_block(xml)
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                          xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 40 
     | 
    
         
            +
                            xml.urn(:GetOrderDetailsRequest) do |xml|
         
     | 
| 
      
 41 
     | 
    
         
            +
                              xml.orderNumber order_number
         
     | 
| 
      
 42 
     | 
    
         
            +
                            end
         
     | 
| 
      
 43 
     | 
    
         
            +
                          end
         
     | 
| 
      
 44 
     | 
    
         
            +
                        end
         
     | 
| 
      
 45 
     | 
    
         
            +
                      end
         
     | 
| 
      
 46 
     | 
    
         
            +
                    end
         
     | 
| 
      
 47 
     | 
    
         
            +
                  rescue Savon::SOAP::Fault => e
         
     | 
| 
      
 48 
     | 
    
         
            +
                    return nil if e.message.include?("Order not found")
         
     | 
| 
      
 49 
     | 
    
         
            +
                    raise e.message
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  response.to_array(:get_order_details_response).first
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                # This method invokes find_updated_orders and then calls get_order_details for each order
         
     | 
| 
      
 57 
     | 
    
         
            +
                # and returns an array of the results
         
     | 
| 
      
 58 
     | 
    
         
            +
                def self.get_orders(start_date, end_date)
         
     | 
| 
      
 59 
     | 
    
         
            +
                  orders = []
         
     | 
| 
      
 60 
     | 
    
         
            +
                  order_ids = OrderService.find_updated_orders(start_date, end_date)
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
                  order_ids.each do |order_id|
         
     | 
| 
      
 63 
     | 
    
         
            +
                    orders << OrderService.get_order_details(order_id)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                  return orders.flatten.compact
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                private
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                def self.wsdl
         
     | 
| 
      
 72 
     | 
    
         
            +
                  base_url + "OrderService?wsdl"
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,54 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module PowaApi
         
     | 
| 
      
 2 
     | 
    
         
            +
              class PowaService
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def self.get_publish_info
         
     | 
| 
      
 5 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  response = client.request :get_publish_info do
         
     | 
| 
      
 8 
     | 
    
         
            +
                    soap.xml do |xml|
         
     | 
| 
      
 9 
     | 
    
         
            +
                      xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                        header_block(xml)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                        xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 14 
     | 
    
         
            +
                          xml.urn(:GetPublishInfoRequest) do |xml|
         
     | 
| 
      
 15 
     | 
    
         
            +
                         end
         
     | 
| 
      
 16 
     | 
    
         
            +
                        end
         
     | 
| 
      
 17 
     | 
    
         
            +
                      end
         
     | 
| 
      
 18 
     | 
    
         
            +
                    end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                  response.to_array(:get_publish_info_response).first
         
     | 
| 
      
 22 
     | 
    
         
            +
                end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                protected
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def self.wsdl
         
     | 
| 
      
 27 
     | 
    
         
            +
                  base_url + "PublishService?wsdl"
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def self.base_url
         
     | 
| 
      
 31 
     | 
    
         
            +
                  if ::PowaApi.config[:environment] == "production"
         
     | 
| 
      
 32 
     | 
    
         
            +
                    "https://api.powa.com/ws/soap/v2/"
         
     | 
| 
      
 33 
     | 
    
         
            +
                  else
         
     | 
| 
      
 34 
     | 
    
         
            +
                    "https://api.sandbox.powa.com/ws/soap/v2/"
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                def self.header_block(xml)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  xml.soapenv(:Header) do |xml|
         
     | 
| 
      
 40 
     | 
    
         
            +
                    xml.urn(:Credentials) do |xml|
         
     | 
| 
      
 41 
     | 
    
         
            +
                      xml.integrationSecurityKey ::PowaApi.config[:integration_security_key]
         
     | 
| 
      
 42 
     | 
    
         
            +
                      xml.websiteAuthorisationToken ::PowaApi.config[:website_authorisation_token]
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                def self.namespaces
         
     | 
| 
      
 48 
     | 
    
         
            +
                  {
         
     | 
| 
      
 49 
     | 
    
         
            +
                    "xmlns:soapenv" => "http://schemas.xmlsoap.org/soap/envelope/",
         
     | 
| 
      
 50 
     | 
    
         
            +
                    "xmlns:urn" => "urn:powa:api:PowaAPI"
         
     | 
| 
      
 51 
     | 
    
         
            +
                  }
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module PowaApi
         
     | 
| 
      
 2 
     | 
    
         
            +
              class ProductService < PowaService
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def self.get_published_products(publish_token, batch_number = nil)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  response = client.request :get_published_products do
         
     | 
| 
      
 8 
     | 
    
         
            +
                    soap.xml do |xml|
         
     | 
| 
      
 9 
     | 
    
         
            +
                      xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                        header_block(xml)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                        xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 14 
     | 
    
         
            +
                          xml.urn(:GetPublishedProductsRequest) do |xml|
         
     | 
| 
      
 15 
     | 
    
         
            +
                            xml.publishToken publish_token
         
     | 
| 
      
 16 
     | 
    
         
            +
                            xml.batchNumber batch_number if batch_number
         
     | 
| 
      
 17 
     | 
    
         
            +
                         end
         
     | 
| 
      
 18 
     | 
    
         
            +
                        end
         
     | 
| 
      
 19 
     | 
    
         
            +
                      end
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                  [response.to_array(:get_published_products_response).first[:products]].flatten.compact
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                def self.get_published_products_by_sku(*skus)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  response = client.request :get_published_products_by_sku do
         
     | 
| 
      
 30 
     | 
    
         
            +
                    soap.xml do |xml|
         
     | 
| 
      
 31 
     | 
    
         
            +
                      xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                        header_block(xml)
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                        xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 36 
     | 
    
         
            +
                          xml.urn(:GetProductsBySkuRequest) do |xml|
         
     | 
| 
      
 37 
     | 
    
         
            +
                            xml.skuList do |xml|
         
     | 
| 
      
 38 
     | 
    
         
            +
                              skus.each do |sku|
         
     | 
| 
      
 39 
     | 
    
         
            +
                                xml.sku sku
         
     | 
| 
      
 40 
     | 
    
         
            +
                              end
         
     | 
| 
      
 41 
     | 
    
         
            +
                            end
         
     | 
| 
      
 42 
     | 
    
         
            +
                          end
         
     | 
| 
      
 43 
     | 
    
         
            +
                        end
         
     | 
| 
      
 44 
     | 
    
         
            +
                      end
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  [response.to_array(:get_products_by_sku_response).first[:product]].flatten.compact
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                def self.get_products(batch_number = nil)
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                  response = client.request :get_products do
         
     | 
| 
      
 56 
     | 
    
         
            +
                    soap.xml do |xml|
         
     | 
| 
      
 57 
     | 
    
         
            +
                      xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                        header_block(xml)
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                        xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 62 
     | 
    
         
            +
                          xml.urn(:GetProductsRequest) do |xml|
         
     | 
| 
      
 63 
     | 
    
         
            +
                            xml.batchNumber batch_number if batch_number
         
     | 
| 
      
 64 
     | 
    
         
            +
                         end
         
     | 
| 
      
 65 
     | 
    
         
            +
                        end
         
     | 
| 
      
 66 
     | 
    
         
            +
                      end
         
     | 
| 
      
 67 
     | 
    
         
            +
                    end
         
     | 
| 
      
 68 
     | 
    
         
            +
                  end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  [response.to_array(:get_products_response).first[:product]].flatten.compact
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                def self.get_products_by_sku(*skus)
         
     | 
| 
      
 75 
     | 
    
         
            +
                  client = Savon.client wsdl
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                  response = client.request :get_products_by_sku do
         
     | 
| 
      
 78 
     | 
    
         
            +
                    soap.xml do |xml|
         
     | 
| 
      
 79 
     | 
    
         
            +
                      xml.soapenv(:Envelope, namespaces) do |xml|
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                        header_block(xml)
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                        xml.soapenv(:Body) do |xml|
         
     | 
| 
      
 84 
     | 
    
         
            +
                          xml.urn(:GetProductsBySkuRequest) do |xml|
         
     | 
| 
      
 85 
     | 
    
         
            +
                            xml.skuList do |xml|
         
     | 
| 
      
 86 
     | 
    
         
            +
                              skus.each do |sku|
         
     | 
| 
      
 87 
     | 
    
         
            +
                                xml.sku sku
         
     | 
| 
      
 88 
     | 
    
         
            +
                              end
         
     | 
| 
      
 89 
     | 
    
         
            +
                            end
         
     | 
| 
      
 90 
     | 
    
         
            +
                         end
         
     | 
| 
      
 91 
     | 
    
         
            +
                        end
         
     | 
| 
      
 92 
     | 
    
         
            +
                      end
         
     | 
| 
      
 93 
     | 
    
         
            +
                    end
         
     | 
| 
      
 94 
     | 
    
         
            +
                  end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                  [response.to_array(:get_products_by_sku_response).first[:product]].flatten.compact
         
     | 
| 
      
 97 
     | 
    
         
            +
                end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                private
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                def self.wsdl
         
     | 
| 
      
 102 
     | 
    
         
            +
                  base_url + "ProductService?wsdl"
         
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
              end
         
     | 
| 
      
 106 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/powa_api.rb
    ADDED
    
    | 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'savon'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'powa_api/version'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'powa_api/powa_service'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'powa_api/product_service'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'powa_api/order_service'
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module PowaApi
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              extend self
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              @config = {
         
     | 
| 
      
 13 
     | 
    
         
            +
                          :integration_security_key => "KEY-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
         
     | 
| 
      
 14 
     | 
    
         
            +
                          :website_authorisation_token => "TOKEN-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
         
     | 
| 
      
 15 
     | 
    
         
            +
                          :environment => "sandbox"
         
     | 
| 
      
 16 
     | 
    
         
            +
                        }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              @valid_config_keys = @config.keys
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              def self.configure(opts = {})
         
     | 
| 
      
 21 
     | 
    
         
            +
                opts.each {|k,v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym}
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              def self.configure_with(path_to_yaml_file)
         
     | 
| 
      
 25 
     | 
    
         
            +
                begin
         
     | 
| 
      
 26 
     | 
    
         
            +
                  config = YAML::load(IO.read(path_to_yaml_file))
         
     | 
| 
      
 27 
     | 
    
         
            +
                rescue Errno::ENOENT
         
     | 
| 
      
 28 
     | 
    
         
            +
                  log(:warning, "YAML configuration file couldn't be found. Using defaults."); return
         
     | 
| 
      
 29 
     | 
    
         
            +
                rescue Psych::SyntaxError
         
     | 
| 
      
 30 
     | 
    
         
            +
                  log(:warning, "YAML configuration file contains invalid syntax. Using defaults."); return
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                configure(config)
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def self.config
         
     | 
| 
      
 37 
     | 
    
         
            +
                @config
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
    
        data/powa_api.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'powa_api/version'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 6 
     | 
    
         
            +
              s.name        = "powa_api"
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.version     = PowaApi::VERSION
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.platform    = Gem::Platform::RUBY
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.authors     = ["jzw", "mikelarkin"]
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.email       = []
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.homepage    = "http://github.com/mikelarkin/powa_api"
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.summary     = "Implementation of the Powa API"
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.description = "Implementation of the Powa API"
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              s.required_rubygems_version = ">= 1.3.6"
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.rubyforge_project         = "powa_api"
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              s.add_development_dependency "bundler", ">= 1.0.0.rc.5"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              s.files        = `git ls-files`.split("\n")
         
     | 
| 
      
 21 
     | 
    
         
            +
              s.executables  = `git ls-files`.split("\n").select{|f| f =~ /^bin/}
         
     | 
| 
      
 22 
     | 
    
         
            +
              s.require_path = 'lib'
         
     | 
| 
      
 23 
     | 
    
         
            +
              s.add_dependency 'savon'
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: powa_api
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.3
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
      
 6 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 8 
     | 
    
         
            +
            - jzw
         
     | 
| 
      
 9 
     | 
    
         
            +
            - mikelarkin
         
     | 
| 
      
 10 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 11 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 12 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2012-11-21 00:00:00.000000000 Z
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 17 
     | 
    
         
            +
              requirement: &70218966339480 !ruby/object:Gem::Requirement
         
     | 
| 
      
 18 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 19 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: 1.0.0.rc.5
         
     | 
| 
      
 23 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 24 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 25 
     | 
    
         
            +
              version_requirements: *70218966339480
         
     | 
| 
      
 26 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 27 
     | 
    
         
            +
              name: savon
         
     | 
| 
      
 28 
     | 
    
         
            +
              requirement: &70218966338120 !ruby/object:Gem::Requirement
         
     | 
| 
      
 29 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: *70218966338120
         
     | 
| 
      
 37 
     | 
    
         
            +
            description: Implementation of the Powa API
         
     | 
| 
      
 38 
     | 
    
         
            +
            email: []
         
     | 
| 
      
 39 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 40 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 41 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 42 
     | 
    
         
            +
            files:
         
     | 
| 
      
 43 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 44 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 45 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 46 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 47 
     | 
    
         
            +
            - lib/powa_api.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - lib/powa_api/order_service.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - lib/powa_api/powa_service.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - lib/powa_api/product_service.rb
         
     | 
| 
      
 51 
     | 
    
         
            +
            - lib/powa_api/version.rb
         
     | 
| 
      
 52 
     | 
    
         
            +
            - powa_api.gemspec
         
     | 
| 
      
 53 
     | 
    
         
            +
            homepage: http://github.com/mikelarkin/powa_api
         
     | 
| 
      
 54 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 55 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 56 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 57 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 59 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 60 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 61 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 62 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 63 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 64 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 65 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 66 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 67 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 68 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 69 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 70 
     | 
    
         
            +
                  version: 1.3.6
         
     | 
| 
      
 71 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 72 
     | 
    
         
            +
            rubyforge_project: powa_api
         
     | 
| 
      
 73 
     | 
    
         
            +
            rubygems_version: 1.8.6
         
     | 
| 
      
 74 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 75 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 76 
     | 
    
         
            +
            summary: Implementation of the Powa API
         
     | 
| 
      
 77 
     | 
    
         
            +
            test_files: []
         
     |