ubox 0.1.1 → 0.1.2
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 +4 -4
- data/README.md +52 -3
- data/lib/ubox/configuration.rb +2 -1
- data/lib/ubox/version.rb +1 -1
- data/lib/ubox.rb +34 -0
- metadata +1 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: badaab7f029c707220f0f6d753abfda36ff33322
         | 
| 4 | 
            +
              data.tar.gz: 4f09c0631f505511928b35825f2a1cc94386968c
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 894991f42f1a1c109a90e5853abe63857a38e07ace8a3c1735eafd7d2d6c10b3418eb0b2ba91f11c15bb6cf74a9e150606f359c86d70d6a819bd8a4991567397
         | 
| 7 | 
            +
              data.tar.gz: 3475764e829252016a2c0b4b270e93c5e6ee69424725444ead769eb9e35d0495f4d26744272cc791972022f807037f4232fb0c16e52ab08f1bfbbcacd9a0609f
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,11 @@ | |
| 1 1 | 
             
            # Ubox
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 3 | 
            +
            友宝开放api
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 5 | 
            +
            ## Status
         | 
| 6 | 
            +
            代码 已经打包发布到 RubyGems.
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            [](https://rubygems.org/gems/ubox)
         | 
| 6 9 |  | 
| 7 10 | 
             
            ## Installation
         | 
| 8 11 |  | 
| @@ -20,9 +23,55 @@ Or install it yourself as: | |
| 20 23 |  | 
| 21 24 | 
             
                $ gem install ubox
         | 
| 22 25 |  | 
| 26 | 
            +
            ## Config
         | 
| 27 | 
            +
            ```ruby
         | 
| 28 | 
            +
              Ubox.configure do |ubox|
         | 
| 29 | 
            +
                ubox.app_id = 'your_app_id'
         | 
| 30 | 
            +
                ubox.app_key = 'your_app_key' 
         | 
| 31 | 
            +
                ubox.api_url = 'http://uboxapi.dev.uboxol.com/opentrade' #正式环境请用正式环境url
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            ```
         | 
| 34 | 
            +
             | 
| 23 35 | 
             
            ## Usage
         | 
| 24 36 |  | 
| 25 | 
            -
             | 
| 37 | 
            +
            ###获取商品信息(扫码)
         | 
| 38 | 
            +
            ```ruby
         | 
| 39 | 
            +
            Ubox.product_detail('http://v.dev.uboxol.com/qr/c0081801_10000870_1')
         | 
| 40 | 
            +
            ```
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            ```json
         | 
| 43 | 
            +
            {
         | 
| 44 | 
            +
             "head": {
         | 
| 45 | 
            +
                  "return_code": 200,
         | 
| 46 | 
            +
                  "return_msg": "正常响应"
         | 
| 47 | 
            +
             },
         | 
| 48 | 
            +
             "body": {
         | 
| 49 | 
            +
                 "vm": {
         | 
| 50 | 
            +
                   "id": "0081801",
         | 
| 51 | 
            +
                   "name": "友宝在线六层富二代完鼎测试需要改动名称完鼎测试需要改动名称完",
         | 
| 52 | 
            +
                   "address": "北京111111",
         | 
| 53 | 
            +
                   "distance": "",
         | 
| 54 | 
            +
                   "is_shop": false,
         | 
| 55 | 
            +
                   "has_box": false,
         | 
| 56 | 
            +
                   "has_meal": false,
         | 
| 57 | 
            +
                   "lat": "116.480557",
         | 
| 58 | 
            +
                   "lng": "39.960201",
         | 
| 59 | 
            +
                   "vm_connected": true
         | 
| 60 | 
            +
                },
         | 
| 61 | 
            +
                "product": {
         | 
| 62 | 
            +
                      "id": 10000870,
         | 
| 63 | 
            +
                      "name": "双层咖啡杯",
         | 
| 64 | 
            +
                      "oldPrice": 200,
         | 
| 65 | 
            +
                      "price": 200,
         | 
| 66 | 
            +
                      "expire_time": 1464856997,
         | 
| 67 | 
            +
                      "pic": "http://vms.dev.uboxol.com/upload/box-tmp/m/10000870/10000870.jpg?t=1357177524",
         | 
| 68 | 
            +
                      "num": 16
         | 
| 69 | 
            +
               },
         | 
| 70 | 
            +
               "tran_id": "100031290"
         | 
| 71 | 
            +
             }
         | 
| 72 | 
            +
            }
         | 
| 73 | 
            +
            ```
         | 
| 74 | 
            +
             | 
| 26 75 |  | 
| 27 76 | 
             
            ## Development
         | 
| 28 77 |  | 
    
        data/lib/ubox/configuration.rb
    CHANGED
    
    
    
        data/lib/ubox/version.rb
    CHANGED
    
    
    
        data/lib/ubox.rb
    CHANGED
    
    | @@ -1,5 +1,9 @@ | |
| 1 1 | 
             
            require "ubox/version"
         | 
| 2 2 | 
             
            require 'ubox/configuration'
         | 
| 3 | 
            +
            require 'digest'
         | 
| 4 | 
            +
            require 'uri'
         | 
| 5 | 
            +
            require 'net/http'
         | 
| 6 | 
            +
            require 'json'
         | 
| 3 7 |  | 
| 4 8 | 
             
            module Ubox
         | 
| 5 9 | 
             
              extend self
         | 
| @@ -13,4 +17,34 @@ module Ubox | |
| 13 17 | 
             
              def configure
         | 
| 14 18 | 
             
                yield(config)
         | 
| 15 19 | 
             
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              #获取签名
         | 
| 22 | 
            +
              def sign(params)
         | 
| 23 | 
            +
                str = params.keys.reject { |k| k.to_sym==:sign }.sort_by { |k| k }.inject('') do |s, key|
         | 
| 24 | 
            +
                  s += "#{key}=#{params[key]}"
         | 
| 25 | 
            +
                  s
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                Digest::SHA1.hexdigest("#{str}_#{self.config.app_key}")
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              def to_params(params)
         | 
| 31 | 
            +
                params.inject([]) { |a, (k, v)| a<<"#{k}=#{v}"; a }.join("&")
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              #商品详情
         | 
| 35 | 
            +
              def product_detail(qr_string)
         | 
| 36 | 
            +
                params = {
         | 
| 37 | 
            +
                    app_id: self.config.app_id,
         | 
| 38 | 
            +
                    qr_string: qr_string
         | 
| 39 | 
            +
                }
         | 
| 40 | 
            +
                params = params.merge({sign: self.sign(params)})
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                url = "#{self.config.api_url}/getProductDetail"
         | 
| 43 | 
            +
                uri = URI(url)
         | 
| 44 | 
            +
                res = Net::HTTP.post_form(uri, params)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                body = res.body
         | 
| 47 | 
            +
                JSON.parse(body)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 16 50 | 
             
            end
         |