aws_iot_device 0.1.5 → 1.0.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +155 -148
- data/aws_iot_device.gemspec +11 -11
- data/codeclimate.yml +6 -0
- data/lib/aws_iot_device.rb +2 -1
- data/lib/aws_iot_device/mqtt_adapter.rb +1 -2
- data/lib/aws_iot_device/mqtt_adapter/client.rb +74 -6
- data/lib/aws_iot_device/mqtt_adapter/paho_mqtt_adapter.rb +207 -0
- data/lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb +10 -4
- data/lib/aws_iot_device/mqtt_shadow_client.rb +1 -0
- data/lib/aws_iot_device/mqtt_shadow_client/mqtt_manager.rb +133 -67
- data/lib/aws_iot_device/mqtt_shadow_client/shadow_action_manager.rb +229 -146
- data/lib/aws_iot_device/mqtt_shadow_client/shadow_client.rb +78 -20
- data/lib/aws_iot_device/mqtt_shadow_client/shadow_topic_manager.rb +51 -26
- data/lib/aws_iot_device/mqtt_shadow_client/topic_builder.rb +15 -30
- data/lib/aws_iot_device/version.rb +1 -1
- data/samples/config_shadow.rb +72 -0
- data/samples/mqtt_client_samples/mqtt_client_samples.rb +7 -59
- data/samples/shadow_action_samples/sample_shadow_action_update.rb +7 -61
- data/samples/shadow_client_samples/samples_shadow_client_block.rb +25 -0
- data/samples/shadow_client_samples/samples_shadow_client_delete.rb +9 -58
- data/samples/shadow_client_samples/samples_shadow_client_description.rb +64 -0
- data/samples/shadow_client_samples/samples_shadow_client_get.rb +11 -62
- data/samples/shadow_client_samples/samples_shadow_client_getting_started.rb +22 -0
- data/samples/shadow_client_samples/samples_shadow_client_update.rb +7 -58
- data/samples/shadow_topic_samples/sample_topic_manager.rb +10 -61
- metadata +71 -16
- data/lib/aws_iot_device/mqtt_adapter/mqtt_adapter.rb +0 -139
| @@ -0,0 +1,64 @@ | |
| 1 | 
            +
            require "aws_iot_device"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            host = "AWS IoT endpoint"
         | 
| 4 | 
            +
            port = 8883
         | 
| 5 | 
            +
            thing = "Thing Name"
         | 
| 6 | 
            +
            root_ca_path = "Path to your CA certificate"
         | 
| 7 | 
            +
            private_key_path = "Path to your private key"
         | 
| 8 | 
            +
            certificate_path = "Path to your certificate"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            # Create a new client with empty arguments 
         | 
| 11 | 
            +
            shadow_client = AwsIotDevice::MqttShadowClient::ShadowClient.new
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            # Configure the endpoint and the port the client would connect
         | 
| 14 | 
            +
            shadow_client.configure_endpoint(host, port)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            # Configure the credentials to enable a connection over TLS/SSL encryption
         | 
| 17 | 
            +
            shadow_client.configure_credentials(root_ca_path, private_key_path, certificate_path)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            # Create an event handler to bind the client with the remote thing in a persistent mode
         | 
| 20 | 
            +
            shadow_client.create_shadow_handler_with_name(thing, true)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            # Local timeout used for operation
         | 
| 23 | 
            +
            timeout = 4
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            # Send a connect request to the AWS IoT platform
         | 
| 26 | 
            +
            shadow_client.connect
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            # Register a callback for the get action as a block
         | 
| 29 | 
            +
            shadow_client.register_get_callback do
         | 
| 30 | 
            +
              puts "generic callback for get action"
         | 
| 31 | 
            +
            end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            # Register a callback for the delete action as a proc
         | 
| 34 | 
            +
            shadow_client.register_delete_callback(proc { puts "generic callback for delete action"})
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            # Register a callback for the update action as a lambda
         | 
| 37 | 
            +
            shadow_client.register_update_callback(lambda {|_message| puts "generic callback for update action"})
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            # Register a callback for the delta events
         | 
| 40 | 
            +
            shadow_client.register_delta_callback do
         | 
| 41 | 
            +
              puts "delta have been catch in a callback"
         | 
| 42 | 
            +
            end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            # Send a get request with an associated callback in a block
         | 
| 45 | 
            +
            shadow_client.get_shadow do
         | 
| 46 | 
            +
              puts "get thing"
         | 
| 47 | 
            +
            end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            # Send a delete request with an associated callback in a proc
         | 
| 50 | 
            +
            shadow_client.delete_shadow(timeout, proc {puts "delete thing"})
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            # Send a udpate request with an associated callback in a lambda
         | 
| 53 | 
            +
            shadow_client.update_shadow("{\"state\":{\"desired\":{\"message\":\"Hello\"}}}", timeout, lambda {|_message| puts "update thing"})
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            # Sleep to assert all opereation have been processed
         | 
| 56 | 
            +
            sleep timeout
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            # Clear out the previously registered callback for each action
         | 
| 59 | 
            +
            shadow_client.remove_get_callback
         | 
| 60 | 
            +
            shadow_client.remove_update_callback
         | 
| 61 | 
            +
            shadow_client.remove_delete_callback
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            # Explicit disconnect from the AWS IoT platform
         | 
| 64 | 
            +
            shadow_client.disconnect
         | 
| @@ -1,74 +1,23 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            require 'optparse'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            options = {}
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            OptionParser.new do |opts|
         | 
| 7 | 
            -
              opts.banner = "Basic usage basic_greeting.rb -c \"YOUR_CERTIFICATE_PATH\" -k \"YOUR_KEY_FILE_PATH\" -ca \"YOUR_ROOT_CA_PATH -H \"YOUR_ENDPOINT\" -p 8883\n"
         | 
| 8 | 
            -
              
         | 
| 9 | 
            -
              opts.separator ""
         | 
| 10 | 
            -
              opts.separator "Common options"
         | 
| 11 | 
            -
              opts.on_tail("-h", "--help", "--usage", "Show this message") do
         | 
| 12 | 
            -
                puts opts
         | 
| 13 | 
            -
                exit
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
              
         | 
| 16 | 
            -
              opts.on("-H", "--host [END_POINT]", "The endpoint where you want to connect") do |host|
         | 
| 17 | 
            -
                options[:host] = host
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
              
         | 
| 20 | 
            -
              opts.on("-p", "--port [MQTT_PORT]", "The port used for the connection Default is 8883") do |port|
         | 
| 21 | 
            -
                options[:port] = port
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
              
         | 
| 24 | 
            -
              opts.on("-c", "--cert [CERT_FILE_PATH]", "The path to the certificate file of the private key.") do |cert|
         | 
| 25 | 
            -
                options[:cert] = cert
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
              
         | 
| 28 | 
            -
              opts.on("-k", "--key [KEY_FILE_PATH]", "The path to private key file that would be used for encryption") do |key|
         | 
| 29 | 
            -
                options[:key] = key
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
              
         | 
| 32 | 
            -
              opts.on("-a", "--root_ca [ROOT_CA_PATH]", "The path to the authority certification file") do |root_ca|
         | 
| 33 | 
            -
                options[:root_ca] = root_ca
         | 
| 34 | 
            -
              end
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              opts.on("-t", "--thing [THING_NAME]", "The Thing name on which the action would be done") do |thing|
         | 
| 37 | 
            -
                options[:things] = thing
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
            end.parse!(ARGV)
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
            host = options[:host]
         | 
| 43 | 
            -
            port = options[:port] || 8883
         | 
| 44 | 
            -
            certificate_path = options[:cert]
         | 
| 45 | 
            -
            private_key_path = options[:key]
         | 
| 46 | 
            -
            root_ca_path = options[:root_ca]
         | 
| 47 | 
            -
            thing = options[:things]
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            my_shadow_client = AwsIotDevice::MqttShadowClient::ShadowClient.new
         | 
| 50 | 
            -
            my_shadow_client.configure_endpoint(host, port)
         | 
| 51 | 
            -
            my_shadow_client.configure_credentials(root_ca_path, private_key_path, certificate_path)
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            my_shadow_client.connect
         | 
| 54 | 
            -
             | 
| 55 | 
            -
            my_shadow_client.create_shadow_handler_with_name(thing ,false)
         | 
| 1 | 
            +
            $:.unshift(File.expand_path("../../../samples", __FILE__))
         | 
| 56 2 |  | 
| 3 | 
            +
            require 'aws_iot_device'
         | 
| 4 | 
            +
            require 'config_shadow'
         | 
| 57 5 |  | 
| 58 6 | 
             
            filter_callback = Proc.new do |message|
         | 
| 59 7 | 
             
              puts "Executing the specific callback for topic: #{message.topic}\n##########################################\n"
         | 
| 60 8 | 
             
            end
         | 
| 61 9 |  | 
| 10 | 
            +
            my_shadow_client = setting_shadow
         | 
| 11 | 
            +
             | 
| 62 12 | 
             
            puts "##### Starting test_shadow_client_get ######"
         | 
| 63 | 
            -
            my_shadow_client.get_shadow( | 
| 64 | 
            -
            sleep 5
         | 
| 13 | 
            +
            my_shadow_client.get_shadow(2, filter_callback)
         | 
| 65 14 |  | 
| 66 15 | 
             
            puts "##### Starting test_shadow_client_get ######"
         | 
| 67 | 
            -
            my_shadow_client.get_shadow | 
| 68 | 
            -
             | 
| 16 | 
            +
            my_shadow_client.get_shadow do
         | 
| 17 | 
            +
              puts "Block callback for a token"
         | 
| 18 | 
            +
            end
         | 
| 69 19 |  | 
| 70 20 | 
             
            puts "##### Starting test_shadow_client_get ######"
         | 
| 71 | 
            -
            my_shadow_client.get_shadow( | 
| 72 | 
            -
            sleep 5
         | 
| 21 | 
            +
            my_shadow_client.get_shadow(2, filter_callback)
         | 
| 73 22 |  | 
| 74 | 
            -
             | 
| 23 | 
            +
            sleep 3
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            require "aws_iot_device"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            host = "AWS IoT endpoint"
         | 
| 4 | 
            +
            port = 8883
         | 
| 5 | 
            +
            thing = "Thing Name"
         | 
| 6 | 
            +
            root_ca_path = "Path to your CA certificate"
         | 
| 7 | 
            +
            private_key_path = "Path to your private key"
         | 
| 8 | 
            +
            certificate_path = "Path to your certificate"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            shadow_client = AwsIotDevice::MqttShadowClient::ShadowClient.new
         | 
| 11 | 
            +
            shadow_client.configure_endpoint(host, port)
         | 
| 12 | 
            +
            shadow_client.configure_credentials(root_ca_path, private_key_path, certificate_path)
         | 
| 13 | 
            +
            shadow_client.create_shadow_handler_with_name(thing, true)
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            shadow_client.connect
         | 
| 16 | 
            +
            shadow_client.get_shadow do |_message|
         | 
| 17 | 
            +
              # Do what you want with the get_shadow's answer
         | 
| 18 | 
            +
              p ":)"
         | 
| 19 | 
            +
            end
         | 
| 20 | 
            +
            sleep 2 #Timer to ensure that the answer is received
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            shadow_client.disconnect
         | 
| @@ -1,59 +1,7 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            require 'optparse'
         | 
| 3 | 
            -
            require 'json'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            options = {}
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            OptionParser.new do |opts|
         | 
| 8 | 
            -
              opts.banner = "Basic usage basic_greeting.rb -c \"YOUR_CERTIFICATE_PATH\" -k \"YOUR_KEY_FILE_PATH\" -ca \"YOUR_ROOT_CA_PATH -H \"YOUR_ENDPOINT\" -p 8883\n"
         | 
| 9 | 
            -
              
         | 
| 10 | 
            -
              opts.separator ""
         | 
| 11 | 
            -
              opts.separator "Common options"
         | 
| 12 | 
            -
              opts.on_tail("-h", "--help", "--usage", "Show this message") do
         | 
| 13 | 
            -
                puts opts
         | 
| 14 | 
            -
                exit
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
              
         | 
| 17 | 
            -
              opts.on("-H", "--host [END_POINT]", "The endpoint where you want to connect") do |host|
         | 
| 18 | 
            -
                options[:host] = host
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
              
         | 
| 21 | 
            -
              opts.on("-p", "--port [MQTT_PORT]", "The port used for the connection Default is 8883") do |port|
         | 
| 22 | 
            -
                options[:port] = port
         | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
              
         | 
| 25 | 
            -
              opts.on("-c", "--cert [CERT_FILE_PATH]", "The path to the certificate file of the private key.") do |cert|
         | 
| 26 | 
            -
                options[:cert] = cert
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
              
         | 
| 29 | 
            -
              opts.on("-k", "--key [KEY_FILE_PATH]", "The path to private key file that would be used for encryption") do |key|
         | 
| 30 | 
            -
                options[:key] = key
         | 
| 31 | 
            -
              end
         | 
| 32 | 
            -
              
         | 
| 33 | 
            -
              opts.on("-a", "--root_ca [ROOT_CA_PATH]", "The path to the authority certification file") do |root_ca|
         | 
| 34 | 
            -
                options[:root_ca] = root_ca
         | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
              opts.on("-t", "--thing [THING_NAME]", "The Thing name on which the action would be done") do |thing|
         | 
| 38 | 
            -
                options[:things] = thing
         | 
| 39 | 
            -
              end
         | 
| 40 | 
            -
            end.parse!(ARGV)
         | 
| 41 | 
            -
             | 
| 1 | 
            +
            $:.unshift(File.expand_path("../../../samples", __FILE__))
         | 
| 42 2 |  | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
            certificate_path = options[:cert]
         | 
| 46 | 
            -
            private_key_path = options[:key]
         | 
| 47 | 
            -
            root_ca_path = options[:root_ca] 
         | 
| 48 | 
            -
            thing = options[:things]
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            my_shadow_client = AwsIotDevice::MqttShadowClient::ShadowClient.new
         | 
| 51 | 
            -
            my_shadow_client.configure_endpoint(host, port)
         | 
| 52 | 
            -
            my_shadow_client.configure_credentials(root_ca_path, private_key_path, certificate_path)
         | 
| 53 | 
            -
             | 
| 54 | 
            -
            my_shadow_client.connect
         | 
| 55 | 
            -
             | 
| 56 | 
            -
            my_shadow_client.create_shadow_handler_with_name(thing, true)
         | 
| 3 | 
            +
            require 'aws_iot_device'
         | 
| 4 | 
            +
            require 'config_shadow'
         | 
| 57 5 |  | 
| 58 6 | 
             
            filter_callback = Proc.new do |message|
         | 
| 59 7 | 
             
              puts "Executing the specific callback for topic: #{message.topic}\n##########################################\n"
         | 
| @@ -64,18 +12,19 @@ delta_callback = Proc.new do |delta| | |
| 64 12 | 
             
              puts "Catching a new message : #{message["state"]["message"]}\n##########################################\n"
         | 
| 65 13 | 
             
            end
         | 
| 66 14 |  | 
| 15 | 
            +
            my_shadow_client = setting_shadow
         | 
| 67 16 | 
             
            my_shadow_client.register_delta_callback(delta_callback)
         | 
| 68 17 |  | 
| 69 18 | 
             
            n = 1
         | 
| 70 19 | 
             
            3.times do
         | 
| 71 | 
            -
              puts "Type the message that you want to register in the thing | 
| 20 | 
            +
              puts "Type the message that you want to register in the thing:"
         | 
| 72 21 | 
             
              entry = $stdin.readline()
         | 
| 73 22 | 
             
              json_payload = "{\"state\":{\"desired\":{\"message\":\"#{entry.delete!("\n")}\"}}}"
         | 
| 74 | 
            -
              my_shadow_client.update_shadow(json_payload,  | 
| 23 | 
            +
              my_shadow_client.update_shadow(json_payload, 5, filter_callback)
         | 
| 75 24 | 
             
              puts "#{3 - n} Message(s) left"
         | 
| 76 | 
            -
              sleep 2
         | 
| 77 25 | 
             
              n += 1
         | 
| 78 26 | 
             
            end
         | 
| 79 27 |  | 
| 28 | 
            +
            sleep 3
         | 
| 80 29 |  | 
| 81 30 | 
             
            my_shadow_client.disconnect
         | 
| @@ -1,61 +1,11 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            require 'optparse'
         | 
| 1 | 
            +
            $:.unshift(File.expand_path("../../../samples", __FILE__))
         | 
| 3 2 |  | 
| 4 | 
            -
             | 
| 3 | 
            +
            require 'aws_iot_device'
         | 
| 4 | 
            +
            require 'config_shadow'
         | 
| 5 5 |  | 
| 6 | 
            -
             | 
| 7 | 
            -
              opts.banner = "Basic usage basic_greeting.rb -c \"YOUR_CERTIFICATE_PATH\" -k \"YOUR_KEY_FILE_PATH\" -ca \"YOUR_ROOT_CA_PATH -H \"YOUR_ENDPOINT\" -p 8883\n"
         | 
| 8 | 
            -
              
         | 
| 9 | 
            -
              opts.separator ""
         | 
| 10 | 
            -
              opts.separator "Common options"
         | 
| 11 | 
            -
              opts.on_tail("-h", "--help", "--usage", "Show this message") do
         | 
| 12 | 
            -
                puts opts
         | 
| 13 | 
            -
                exit
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
              
         | 
| 16 | 
            -
              opts.on("-H", "--host [END_POINT]", "The endpoint where you want to connect") do |host|
         | 
| 17 | 
            -
                options[:host] = host
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
              
         | 
| 20 | 
            -
              opts.on("-p", "--port [MQTT_PORT]", "The port used for the connection Default is 8883") do |port|
         | 
| 21 | 
            -
                options[:port] = port
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
              
         | 
| 24 | 
            -
              opts.on("-c", "--cert [CERT_FILE_PATH]", "The path to the certificate file of the private key.") do |cert|
         | 
| 25 | 
            -
                options[:cert] = cert
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
              
         | 
| 28 | 
            -
              opts.on("-k", "--key [KEY_FILE_PATH]", "The path to private key file that would be used for encryption") do |key|
         | 
| 29 | 
            -
                options[:key] = key
         | 
| 30 | 
            -
              end
         | 
| 31 | 
            -
              
         | 
| 32 | 
            -
              opts.on("-a", "--root_ca [ROOT_CA_PATH]", "The path to the authority certification file") do |root_ca|
         | 
| 33 | 
            -
                options[:root_ca] = root_ca
         | 
| 34 | 
            -
              end
         | 
| 6 | 
            +
            mqtt_client = setting_mqtt_client
         | 
| 35 7 |  | 
| 36 | 
            -
             | 
| 37 | 
            -
                options[:things] = thing
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
            end.parse!(ARGV)
         | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
            host = options[:host]
         | 
| 43 | 
            -
            port = options[:port] || 8883
         | 
| 44 | 
            -
            certificate_path = options[:cert]
         | 
| 45 | 
            -
            private_key_path = options[:key]
         | 
| 46 | 
            -
            root_ca_path = options[:root_ca]
         | 
| 47 | 
            -
            thing = options[:things]
         | 
| 48 | 
            -
             | 
| 49 | 
            -
            manager = AwsIotDevice::MqttShadowClient::MqttManager.new(host: host,
         | 
| 50 | 
            -
                                         port: port,
         | 
| 51 | 
            -
                                         ssl: true,
         | 
| 52 | 
            -
                                         cert_file: certificate_path,
         | 
| 53 | 
            -
                                         key_file: private_key_path,
         | 
| 54 | 
            -
                                         ca_file: root_ca_path)
         | 
| 55 | 
            -
             | 
| 56 | 
            -
            manager.connect
         | 
| 57 | 
            -
             | 
| 58 | 
            -
            cli = AwsIotDevice::MqttShadowClient::ShadowTopicManager.new(manager)
         | 
| 8 | 
            +
            topic_client = setting_topic_manager(mqtt_client)
         | 
| 59 9 |  | 
| 60 10 | 
             
            filter_callback = Proc.new do |message|
         | 
| 61 11 | 
             
              puts "Received (through filtered callback) : "
         | 
| @@ -64,14 +14,13 @@ filter_callback = Proc.new do |message| | |
| 64 14 | 
             
              puts "###################"
         | 
| 65 15 | 
             
            end
         | 
| 66 16 |  | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
            sleep 1
         | 
| 17 | 
            +
            topic_client.shadow_topic_subscribe("get", filter_callback)
         | 
| 70 18 |  | 
| 71 19 | 
             
            4.times do
         | 
| 72 | 
            -
               | 
| 73 | 
            -
              sleep 1
         | 
| 20 | 
            +
              topic_client.shadow_topic_publish("get", "")
         | 
| 74 21 | 
             
            end
         | 
| 75 22 |  | 
| 76 | 
            -
             | 
| 23 | 
            +
            sleep 2
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            mqtt_client.disconnect
         | 
| 77 26 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: aws_iot_device
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Pierre Goudet
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2017-01-29 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -17,6 +17,9 @@ dependencies: | |
| 17 17 | 
             
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 19 | 
             
                    version: '1.10'
         | 
| 20 | 
            +
                - - ">="
         | 
| 21 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            +
                    version: '1.10'
         | 
| 20 23 | 
             
              type: :development
         | 
| 21 24 | 
             
              prerelease: false
         | 
| 22 25 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -24,20 +27,29 @@ dependencies: | |
| 24 27 | 
             
                - - "~>"
         | 
| 25 28 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 29 | 
             
                    version: '1.10'
         | 
| 30 | 
            +
                - - ">="
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: '1.10'
         | 
| 27 33 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 34 | 
             
              name: pry
         | 
| 29 35 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 36 | 
             
                requirements:
         | 
| 37 | 
            +
                - - "~>"
         | 
| 38 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            +
                    version: 0.10.4
         | 
| 31 40 | 
             
                - - ">="
         | 
| 32 41 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version:  | 
| 42 | 
            +
                    version: 0.10.4
         | 
| 34 43 | 
             
              type: :development
         | 
| 35 44 | 
             
              prerelease: false
         | 
| 36 45 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 46 | 
             
                requirements:
         | 
| 47 | 
            +
                - - "~>"
         | 
| 48 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 49 | 
            +
                    version: 0.10.4
         | 
| 38 50 | 
             
                - - ">="
         | 
| 39 51 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version:  | 
| 52 | 
            +
                    version: 0.10.4
         | 
| 41 53 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 54 | 
             
              name: rake
         | 
| 43 55 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -45,6 +57,9 @@ dependencies: | |
| 45 57 | 
             
                - - "~>"
         | 
| 46 58 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 59 | 
             
                    version: '10.0'
         | 
| 60 | 
            +
                - - ">="
         | 
| 61 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 62 | 
            +
                    version: '1.10'
         | 
| 48 63 | 
             
              type: :development
         | 
| 49 64 | 
             
              prerelease: false
         | 
| 50 65 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -52,20 +67,29 @@ dependencies: | |
| 52 67 | 
             
                - - "~>"
         | 
| 53 68 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 69 | 
             
                    version: '10.0'
         | 
| 70 | 
            +
                - - ">="
         | 
| 71 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 72 | 
            +
                    version: '1.10'
         | 
| 55 73 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 74 | 
             
              name: rspec
         | 
| 57 75 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 76 | 
             
                requirements:
         | 
| 77 | 
            +
                - - "~>"
         | 
| 78 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 79 | 
            +
                    version: 3.5.0
         | 
| 59 80 | 
             
                - - ">="
         | 
| 60 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version:  | 
| 82 | 
            +
                    version: 3.5.0
         | 
| 62 83 | 
             
              type: :development
         | 
| 63 84 | 
             
              prerelease: false
         | 
| 64 85 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 86 | 
             
                requirements:
         | 
| 87 | 
            +
                - - "~>"
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: 3.5.0
         | 
| 66 90 | 
             
                - - ">="
         | 
| 67 91 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version:  | 
| 92 | 
            +
                    version: 3.5.0
         | 
| 69 93 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 94 | 
             
              name: facets
         | 
| 71 95 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -73,6 +97,9 @@ dependencies: | |
| 73 97 | 
             
                - - "~>"
         | 
| 74 98 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 99 | 
             
                    version: 3.1.0
         | 
| 100 | 
            +
                - - ">="
         | 
| 101 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            +
                    version: 3.1.0
         | 
| 76 103 | 
             
              type: :runtime
         | 
| 77 104 | 
             
              prerelease: false
         | 
| 78 105 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -80,34 +107,49 @@ dependencies: | |
| 80 107 | 
             
                - - "~>"
         | 
| 81 108 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 109 | 
             
                    version: 3.1.0
         | 
| 110 | 
            +
                - - ">="
         | 
| 111 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 112 | 
            +
                    version: 3.1.0
         | 
| 83 113 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 114 | 
             
              name: json
         | 
| 85 115 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 116 | 
             
                requirements:
         | 
| 87 117 | 
             
                - - "~>"
         | 
| 88 118 | 
             
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version:  | 
| 119 | 
            +
                    version: 2.0.2
         | 
| 120 | 
            +
                - - ">="
         | 
| 121 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 122 | 
            +
                    version: 2.0.2
         | 
| 90 123 | 
             
              type: :runtime
         | 
| 91 124 | 
             
              prerelease: false
         | 
| 92 125 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 126 | 
             
                requirements:
         | 
| 94 127 | 
             
                - - "~>"
         | 
| 95 128 | 
             
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version:  | 
| 129 | 
            +
                    version: 2.0.2
         | 
| 130 | 
            +
                - - ">="
         | 
| 131 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 132 | 
            +
                    version: 2.0.2
         | 
| 97 133 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name: mqtt
         | 
| 134 | 
            +
              name: paho-mqtt
         | 
| 99 135 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 136 | 
             
                requirements:
         | 
| 101 137 | 
             
                - - "~>"
         | 
| 102 138 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: 0. | 
| 139 | 
            +
                    version: 1.0.0
         | 
| 140 | 
            +
                - - ">="
         | 
| 141 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 142 | 
            +
                    version: 1.0.0
         | 
| 104 143 | 
             
              type: :runtime
         | 
| 105 144 | 
             
              prerelease: false
         | 
| 106 145 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 146 | 
             
                requirements:
         | 
| 108 147 | 
             
                - - "~>"
         | 
| 109 148 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: 0. | 
| 149 | 
            +
                    version: 1.0.0
         | 
| 150 | 
            +
                - - ">="
         | 
| 151 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 152 | 
            +
                    version: 1.0.0
         | 
| 111 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 112 154 | 
             
              name: timers
         | 
| 113 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -115,6 +157,9 @@ dependencies: | |
| 115 157 | 
             
                - - "~>"
         | 
| 116 158 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 159 | 
             
                    version: 4.1.1
         | 
| 160 | 
            +
                - - ">="
         | 
| 161 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 162 | 
            +
                    version: 4.1.1
         | 
| 118 163 | 
             
              type: :runtime
         | 
| 119 164 | 
             
              prerelease: false
         | 
| 120 165 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -122,8 +167,12 @@ dependencies: | |
| 122 167 | 
             
                - - "~>"
         | 
| 123 168 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 169 | 
             
                    version: 4.1.1
         | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 170 | 
            +
                - - ">="
         | 
| 171 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 172 | 
            +
                    version: 4.1.1
         | 
| 173 | 
            +
            description: The gem is using the MQTT protocol to execute the command defined by
         | 
| 174 | 
            +
              the AWS IoT platform. A default MQTT client is included in the gem, however an adapter
         | 
| 175 | 
            +
              system enables to plug another MQTT client.
         | 
| 127 176 | 
             
            email:
         | 
| 128 177 | 
             
            - p-goudet@ruby-dev.jp
         | 
| 129 178 | 
             
            executables: []
         | 
| @@ -139,10 +188,11 @@ files: | |
| 139 188 | 
             
            - aws_iot_device.gemspec
         | 
| 140 189 | 
             
            - bin/console
         | 
| 141 190 | 
             
            - bin/setup
         | 
| 191 | 
            +
            - codeclimate.yml
         | 
| 142 192 | 
             
            - lib/aws_iot_device.rb
         | 
| 143 193 | 
             
            - lib/aws_iot_device/mqtt_adapter.rb
         | 
| 144 194 | 
             
            - lib/aws_iot_device/mqtt_adapter/client.rb
         | 
| 145 | 
            -
            - lib/aws_iot_device/mqtt_adapter/ | 
| 195 | 
            +
            - lib/aws_iot_device/mqtt_adapter/paho_mqtt_adapter.rb
         | 
| 146 196 | 
             
            - lib/aws_iot_device/mqtt_adapter/ruby_mqtt_adapter.rb
         | 
| 147 197 | 
             
            - lib/aws_iot_device/mqtt_shadow_client.rb
         | 
| 148 198 | 
             
            - lib/aws_iot_device/mqtt_shadow_client/json_payload_parser.rb
         | 
| @@ -153,15 +203,19 @@ files: | |
| 153 203 | 
             
            - lib/aws_iot_device/mqtt_shadow_client/token_creator.rb
         | 
| 154 204 | 
             
            - lib/aws_iot_device/mqtt_shadow_client/topic_builder.rb
         | 
| 155 205 | 
             
            - lib/aws_iot_device/version.rb
         | 
| 206 | 
            +
            - samples/config_shadow.rb
         | 
| 156 207 | 
             
            - samples/mqtt_client_samples/mqtt_client_samples.rb
         | 
| 157 208 | 
             
            - samples/shadow_action_samples/sample_shadow_action_update.rb
         | 
| 209 | 
            +
            - samples/shadow_client_samples/samples_shadow_client_block.rb
         | 
| 158 210 | 
             
            - samples/shadow_client_samples/samples_shadow_client_delete.rb
         | 
| 211 | 
            +
            - samples/shadow_client_samples/samples_shadow_client_description.rb
         | 
| 159 212 | 
             
            - samples/shadow_client_samples/samples_shadow_client_get.rb
         | 
| 213 | 
            +
            - samples/shadow_client_samples/samples_shadow_client_getting_started.rb
         | 
| 160 214 | 
             
            - samples/shadow_client_samples/samples_shadow_client_update.rb
         | 
| 161 215 | 
             
            - samples/shadow_topic_samples/sample_topic_manager.rb
         | 
| 162 216 | 
             
            homepage: https://github.com/RubyDevInc/aws-iot-device-sdk-ruby
         | 
| 163 217 | 
             
            licenses:
         | 
| 164 | 
            -
            - Apache | 
| 218 | 
            +
            - Apache-2.0
         | 
| 165 219 | 
             
            metadata: {}
         | 
| 166 220 | 
             
            post_install_message: 
         | 
| 167 221 | 
             
            rdoc_options: []
         | 
| @@ -182,5 +236,6 @@ rubyforge_project: | |
| 182 236 | 
             
            rubygems_version: 2.4.5.1
         | 
| 183 237 | 
             
            signing_key: 
         | 
| 184 238 | 
             
            specification_version: 4
         | 
| 185 | 
            -
            summary:  | 
| 239 | 
            +
            summary: The ruby version of the AWS IoT Device SDK. It enables to connect to AWS
         | 
| 240 | 
            +
              IoT platform and manage Things.
         | 
| 186 241 | 
             
            test_files: []
         |