em-sessions 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: cd932cdfbbaf943d8a201f772dc89ec528a9bf78
4
+ data.tar.gz: 59beafbb43f9b6d5ec674948d745572563157b8f
5
+ SHA512:
6
+ metadata.gz: e356b2f5fcecb04ea37335412d155658988fc4e3a7eaec929b213b594564d5ed2462d8c74bf7c4a565bb85812ef9fe311a6b977e67fc6ae559a1d09803dc6ea9
7
+ data.tar.gz: cace101473a09192002df209d1c31829a5c13130e4e9d6bbb0a25e98b00a4eb06e70b93e654acedf6db1f0e50f7fe67a0bd8e63d9e6a44308d110ee0345cf5ab
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ /.idea/
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+ gem 'em-http-request'
3
+ # Specify your gem's dependencies in em-sessions.gemspec
4
+
5
+ group :test do
6
+ gem 'rspec'
7
+ gem 'rspec-core'
8
+ end
9
+ gemspec
data/README.md ADDED
@@ -0,0 +1 @@
1
+ Developing!
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'em/sessions/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "em-sessions"
8
+ spec.version = Em::Sessions::VERSION
9
+ spec.authors = ["millim"]
10
+ spec.email = ["237092624@qq.com"]
11
+
12
+ spec.summary = "rest-sessions ruby client"
13
+ spec.description = "about rest-sessions ruby client,use em-http-request"
14
+ spec.homepage = "https://github.com/millim"
15
+ spec.license = "MIT"
16
+
17
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "https://github.com/millim"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "bundler", "~> 1.12"
31
+ spec.add_development_dependency "rake", "~> 10.0"
32
+ end
@@ -0,0 +1,97 @@
1
+ require 'json'
2
+ module Em
3
+ module Sessions
4
+ class Client
5
+
6
+
7
+ attr_accessor :http_url, :app
8
+
9
+ def initialize(url, app)
10
+ if url.nil? || app.nil?
11
+ raise 'http_url is blank or app is blank!'
12
+ end
13
+ if url.strip.empty?
14
+ http_url = 'http://localhost:3000/'
15
+ else
16
+ http_url = url =~ /^https?\/\// ? url : "http://#{url}"
17
+ end
18
+ @app = app
19
+ @http_url = http_url =~ /\/$/ ? http_url[0..-2] : http_url
20
+ end
21
+
22
+ def create(id, out_time = 7200, ip = '0.0.0.0', app = nil)
23
+ app_name = get_app_name app
24
+ run_http_url = %Q{#{@http_url}/#{app_name}/create/#{id}?ip=#{ip}&ttl=#{out_time}}
25
+ return run_em 'put', run_http_url
26
+ end
27
+
28
+ def get_by_token(user_token, app = nil)
29
+ app_name = get_app_name app
30
+ run_http_url = %Q{#{@http_url}/#{app_name}/get/#{ user_token }}
31
+ return run_em 'get', run_http_url
32
+ end
33
+
34
+
35
+ def get_by_id(id, app = nil)
36
+ app_name = get_app_name app
37
+ run_http_url = %Q{#{@http_url}/#{app_name}/soid/#{ id }}
38
+ return run_em 'get', run_http_url
39
+ end
40
+
41
+ def delete_by_token(user_token, app = nil)
42
+ app_name = get_app_name app
43
+ run_http_url = %Q{#{@http_url}/#{app_name}/kill/#{ user_token }}
44
+ return run_em 'delete', run_http_url
45
+ end
46
+
47
+ def delete_by_id(id, app = nil)
48
+ app_name = get_app_name app
49
+ run_http_url = %Q{#{@http_url}/#{app_name}/killsoid/#{ id }}
50
+ return run_em 'delete', run_http_url
51
+ end
52
+
53
+ def delete_all(app = nil)
54
+ app_name = get_app_name app
55
+ run_http_url = %Q{#{@http_url}/#{app_name}/killall}
56
+ return run_em 'delete', run_http_url
57
+ end
58
+
59
+ def set_params_by_token(user_token, params = {}, app = nil)
60
+ app_name = get_app_name app
61
+ run_http_url = %Q{#{@http_url}/#{app_name}/set/#{ user_token }}
62
+ return run_em 'post', run_http_url, { 'Content-Type'=>'application/json'}, params
63
+ end
64
+
65
+ def activity?(seconds = 600, app = nil)
66
+ app_name = get_app_name app
67
+ run_http_url = %Q{#{@http_url}/#{app_name}/activity?dt=#{seconds}}
68
+ return run_em 'get', run_http_url
69
+ end
70
+
71
+ private
72
+
73
+ def get_app_name(app)
74
+ app.nil? ? @app : app
75
+ end
76
+
77
+ def run_em(type, url, head = {}, body = {})
78
+ code = 0
79
+ return_string = ''
80
+ EventMachine.run {
81
+ http = EventMachine::HttpRequest.new(url).send type, head: head, body: body.to_json
82
+ http.errback { code = http.response_header.status; return_string = http.response;EM.stop }
83
+ http.callback { code = http.response_header.status; return_string = http.response;EventMachine.stop }
84
+ }
85
+ if code == 200
86
+ json = JSON.parse return_string
87
+ return 200, json
88
+ end
89
+ return code, json
90
+ end
91
+
92
+
93
+ end
94
+
95
+
96
+ end
97
+ end
@@ -0,0 +1,5 @@
1
+ module Em
2
+ module Sessions
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,31 @@
1
+ require 'em-http-request'
2
+ require 'em/sessions/version'
3
+ require 'em/sessions/client'
4
+ module Em
5
+ module Sessions
6
+ class << self
7
+ attr_reader :http_url, :client, :app
8
+ def init(http_url = 'localhost:3000', app = 'weapp')
9
+ @http_url ||= http_url
10
+ @app = app
11
+ end
12
+
13
+ def client
14
+ raise 'Please run Em::Sessions.init(http_url, app) method' if @http_url.empty? && @app.empty?
15
+ @client ||= Client.new @http_url, @app
16
+ end
17
+
18
+ def modify_url(url)
19
+ @http_url = url
20
+ @client = nil
21
+ end
22
+
23
+ def modify_app(app)
24
+ @app = app
25
+ @client = nil
26
+ end
27
+
28
+ private
29
+ end
30
+ end
31
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: em-sessions
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - millim
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2016-05-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.12'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.12'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: about rest-sessions ruby client,use em-http-request
42
+ email:
43
+ - 237092624@qq.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - Gemfile
50
+ - README.md
51
+ - Rakefile
52
+ - em-sessions.gemspec
53
+ - lib/em-sessions.rb
54
+ - lib/em/sessions/client.rb
55
+ - lib/em/sessions/version.rb
56
+ homepage: https://github.com/millim
57
+ licenses:
58
+ - MIT
59
+ metadata: {}
60
+ post_install_message:
61
+ rdoc_options: []
62
+ require_paths:
63
+ - lib
64
+ required_ruby_version: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ requirements: []
75
+ rubyforge_project:
76
+ rubygems_version: 2.4.8
77
+ signing_key:
78
+ specification_version: 4
79
+ summary: rest-sessions ruby client
80
+ test_files: []
81
+ has_rdoc: