tvteka 0.0.1 → 0.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 045958c47238b641a9b5f35ab5a508351ff62a6b
4
- data.tar.gz: 644205a7d28abd12ddab261c2effcac5cd7e72e2
3
+ metadata.gz: a59fcaa24b02b6422aab41f7aa6c14e1722dd603
4
+ data.tar.gz: 1d72a076f585b9fd03f56c0505e9149ad907892e
5
5
  SHA512:
6
- metadata.gz: 57558d7324e4fa2ceee91d4cf48043960e15d9600226f7c8c37c4abb81de575be2f198383aa01c0aeffd26f4717fe2288ce76b53e010fb1114702581ad7d6d5d
7
- data.tar.gz: 1caf168ecc5cdeab7ddb8d81859e0714d25fff900f1220195e91b271d2bc162024afc84376cb513758ae16862375f80213ebc0d896d78953ae2643fe3c7dd740
6
+ metadata.gz: 8933db3a7a16462e1ecb6bbde65e7e7a34c8a4cac92cf64a87a219a8c9dd5861064d7397503397b3b85cb697959a2e90e7da0b0961964173f6ed38154775e0ee
7
+ data.tar.gz: 4938b59afb053b4552c1a373d9f73e3fca0a36fc0f6ea3d6dbdba8778e2f6977d7d5fa57d553714f4820d5fe87d9dc6187b849291090366458f7910bc2732919
@@ -0,0 +1,78 @@
1
+ module Tvteka
2
+ class API
3
+
4
+ def get(request_type, url, params, &block)
5
+ cookies = params.delete(:cookies)
6
+ params = params.to_a.map {|p| "#{p[0]}=#{p[1]}" }.join("&")
7
+ request = create_request(url + "?" + params, :get)
8
+ add_cookies(request, cookies) if cookies
9
+ create_task(request_type, request, &block).resume
10
+ end
11
+
12
+ private
13
+
14
+ def config
15
+ NSURLSessionConfiguration.defaultSessionConfiguration
16
+ end
17
+
18
+ def session
19
+ NSURLSession.sessionWithConfiguration(config)
20
+ end
21
+
22
+ def create_request(url, method)
23
+ url = NSURL.URLWithString(url)
24
+ request = NSMutableURLRequest.requestWithURL(url)
25
+ request.addValue("application/vnd.tvp.xbmc+json", forHTTPHeaderField: "Content-Type")
26
+ request.addValue("application/vnd.tvp.xbmc+json", forHTTPHeaderField: "Accept")
27
+ request.setHTTPMethod(method.to_s.upcase)
28
+ request
29
+ end
30
+
31
+ def add_cookies(request, cookies)
32
+ cookies.each do |k, v|
33
+ request.setValue("#{k}=#{v}", forHTTPHeaderField: "Cookie")
34
+ end
35
+ end
36
+
37
+ def create_task(request_type, request, &block)
38
+ if block_given?
39
+ session.dataTaskWithRequest(request, completionHandler: -> (data, response, error) {
40
+ block.call(APIResponse.new(request_type, data, response, error))
41
+ })
42
+ else
43
+ session.dataTaskWithRequest(request)
44
+ end
45
+ end
46
+
47
+ class APIResponse
48
+ attr_reader :success, :data, :error
49
+
50
+ def initialize(request_type, data, response, error)
51
+ @success = (200...300).include?(response.statusCode)
52
+
53
+ if request_type == :session
54
+ parsed_data = NSJSONSerialization.JSONObjectWithData(data, options:0, error: nil)
55
+ @data = Tvteka::Session.new(parsed_data)
56
+ elsif request_type == :session
57
+ parsed_data = NSJSONSerialization.JSONObjectWithData(data, options:0, error: nil)
58
+ @data = Tvteka::Session.new(parsed_data)
59
+ elsif request_type == :live
60
+ puts data
61
+ parsed_data = NSJSONSerialization.JSONObjectWithData(data, options:0, error: nil)
62
+ @data = Tvteka::Channel.init_from_array(parsed_data)
63
+ elsif request_type == :live_channel
64
+ parsed_data = NSJSONSerialization.JSONObjectWithData(data, options:0, error: nil)
65
+ @data = Tvteka::Show.init_from_array(parsed_data)
66
+ else
67
+ @data = NSJSONSerialization.JSONObjectWithData(data, options: 0, error: nil)
68
+ end
69
+
70
+ @error = error
71
+ end
72
+
73
+ def successful?
74
+ @success
75
+ end
76
+ end
77
+ end
78
+ end
@@ -3,29 +3,25 @@ module Tvteka
3
3
  def self.session(username, password, options = {}, &block)
4
4
  options = { "session[login]" => username, "session[password]" => password, "device[type]" => "xmbc", "device[id]" => "c0:3d:45:28:fc:ad" }.merge(options)
5
5
 
6
- request.post("http://tvteka.com/session/register", options) do |response|
7
- response.process_data(:session) if response.success?
6
+ Tvteka::API.new.get(:session, "http://tvteka.com/session/register", options) do |response|
8
7
  block.call response
9
8
  end
10
9
  end
11
10
 
12
11
  def self.verify(token, &block)
13
- request.post("http://tvteka.com/session/verify", {}, {"deviceToken" => token}) do |response|
14
- response.process_data(:verify) if response.success?
12
+ Tvteka::API.new.get(:verify, "http://tvteka.com/session/verify", {cookies: {"deviceToken" => token}}) do |response|
15
13
  block.call response
16
14
  end
17
15
  end
18
16
 
19
17
  def self.live(token, &block)
20
- request.get("http://tvteka.tv/live", {}, {"deviceToken" => token}) do |response|
21
- response.process_data(:live) if response.success?
18
+ Tvteka::API.new.get(:live, "http://tvteka.com/live", {cookies: {"deviceToken" => token}}) do |response|
22
19
  block.call response
23
20
  end
24
21
  end
25
22
 
26
23
  def self.live_channel(token, channel, &block)
27
- request.get("http://tvteka.tv/live/#{channel}", {}, {"deviceToken" => token}) do |response|
28
- response.process_data(:live_channel) if response.success?
24
+ Tvteka::API.new.get(:live_channel, "http://tvteka.com/live/#{channel}", {cookies: {"deviceToken" => token}}) do |response|
29
25
  block.call response
30
26
  end
31
27
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tvteka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksandr Lossenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-01 00:00:00.000000000 Z
11
+ date: 2015-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: motion-cocoapods
@@ -47,11 +47,10 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - README.md
49
49
  - lib/tvteka.rb
50
+ - lib/tvteka/api.rb
50
51
  - lib/tvteka/channel.rb
51
52
  - lib/tvteka/client.rb
52
53
  - lib/tvteka/error.rb
53
- - lib/tvteka/request.rb
54
- - lib/tvteka/response.rb
55
54
  - lib/tvteka/session.rb
56
55
  - lib/tvteka/show.rb
57
56
  homepage: https://bitbucket.org/egze/tvteka/
@@ -1,68 +0,0 @@
1
- module Tvteka
2
- class Request
3
-
4
- BASE_URL = ""
5
-
6
- def get(url, params = {}, cookies = {}, &block)
7
- r = STHTTPRequest.requestWithURLString(url)
8
-
9
- r.setHeaderWithName("Accept", value: "application/vnd.tvp.xbmc+json")
10
-
11
- r.completionBlock = Proc.new do |header, body|
12
- block.call response.build_with_result(body)
13
- end
14
-
15
- r.errorBlock = Proc.new do |error|
16
- puts error.inspect
17
- block.call response.build_with_error(error)
18
- end
19
-
20
- cookies.each do |k, v|
21
- r.addCookieWithName(k, value: v)
22
- end
23
-
24
- r.startAsynchronous
25
- end
26
-
27
- def post(url, params = {}, cookies = {}, &block)
28
- r = STHTTPRequest.requestWithURLString(url)
29
-
30
- r.setHeaderWithName("Accept", value: "application/vnd.tvp.xbmc+json")
31
-
32
- r.POSTDictionary = params
33
-
34
- r.completionBlock = Proc.new do |header, body|
35
- block.call response.build_with_result(body)
36
- end
37
-
38
- r.errorBlock = Proc.new do |error|
39
- puts error.inspect
40
- block.call response.build_with_error(error)
41
- end
42
-
43
- cookies.each do |k, v|
44
- r.addCookieWithName(k, value: v)
45
- end
46
-
47
- r.startAsynchronous
48
- end
49
-
50
-
51
-
52
- def http_client
53
- AFMotion::SessionClient.build_shared("http://tvteka.com") do
54
- session_configuration :default
55
- header "Accept", "application/json"
56
- response_serializer :json
57
- end
58
- end
59
-
60
- def response
61
- Tvteka::Response
62
- end
63
-
64
- def create_options(options)
65
- {}.merge(options)
66
- end
67
- end
68
- end
@@ -1,46 +0,0 @@
1
- module Tvteka
2
- class Response
3
- def self.build_with_result(result)
4
- response = self.new
5
-
6
- response.success = true
7
- response.json = result
8
-
9
- response
10
- end
11
-
12
- def self.build_with_error(error)
13
- response = self.new
14
-
15
- response.success = false
16
- response.error = Tvteka::Error.new(error)
17
-
18
- response
19
- end
20
-
21
- attr_accessor :data, :json, :success, :error
22
-
23
- def process_data(type = :default)
24
- if type == :session
25
- parsed_data = NSJSONSerialization.JSONObjectWithData(String(self.json).dataUsingEncoding(NSUnicodeStringEncoding), options:0, error: Pointer.new(:object))
26
- self.data = Tvteka::Session.new(parsed_data)
27
- elsif type == :verify
28
- parsed_data = NSJSONSerialization.JSONObjectWithData(String(self.json).dataUsingEncoding(NSUnicodeStringEncoding), options:0, error: Pointer.new(:object))
29
- self.data = Tvteka::Session.new(parsed_data)
30
- elsif type == :live
31
- parsed_data = NSJSONSerialization.JSONObjectWithData(String(self.json).dataUsingEncoding(NSUnicodeStringEncoding), options:0, error: Pointer.new(:object))
32
- self.data = Tvteka::Channel.init_from_array(parsed_data)
33
- elsif type == :live_channel
34
- parsed_data = NSJSONSerialization.JSONObjectWithData(String(self.json).dataUsingEncoding(NSUnicodeStringEncoding), options:0, error: Pointer.new(:object))
35
- self.data = Tvteka::Show.init_from_array(parsed_data)
36
- else
37
- self.data = self.json
38
- end
39
- end
40
-
41
- def success?
42
- @success
43
- end
44
-
45
- end
46
- end