appril-cli 0.2.8 → 0.2.9

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: 39c148a207991873f601d0278b707baa497b5db3
4
- data.tar.gz: 5ac6342115df0ecf940e2f0b130cc8294fd7e6cd
3
+ metadata.gz: 5d28e060372bfb237fc2f55ce5f175d22638b826
4
+ data.tar.gz: 3c8ff729036829a42d8325e03beb31c133327db9
5
5
  SHA512:
6
- metadata.gz: a03831c158147e7a45362d762c94842aeb6b8d076422fb2a8a73a35e4f78db9a2bf93746152ffb378588f8b5948d67ad02a3e474257bc4261bd86cc609697f61
7
- data.tar.gz: 6eb8180050fe5c1ea1de2014822d06734ec5c5ef969b20ebdb5882291ebbaab2acd42a497b1c8d67be7c5ad39e6de7b6f7635a429b9e4539339b89da668d63eb
6
+ metadata.gz: 670bdd5a1c68d0455a57bb1780fececf8a3051664767481a06a0a2899c20d4753f7191fe5943cce7395b1f0f92422f84923dae4fe19c4b0aa35ef718c4fff7ab
7
+ data.tar.gz: 70cad4caf1e501927fcb530e2a956891c9c4a39f37344d5189a08c74f5687a0c193298158a9fc17129eab97fef595a3c1c165c04e5003f461c204ed557076623
@@ -0,0 +1,7 @@
1
+ export default [
2
+ 'GET',
3
+ 'POST',
4
+ 'PUT',
5
+ 'DELETE',
6
+ 'HEAD'
7
+ ]
@@ -0,0 +1,28 @@
1
+ import {reduce} from 'lodash'
2
+ import validate_arguments from './validate-arguments'
3
+ import REQUEST_METHODS from './request-methods'
4
+
5
+ export default function(component, rtcp) {
6
+
7
+ return reduce(component.api || [], function(component_api, method) {
8
+ component_api[method] = function(...args) {
9
+
10
+ validate_arguments(args)
11
+
12
+ return reduce(REQUEST_METHODS, function(method_api, request_method) {
13
+ method_api[request_method.toLowerCase()] = function(callbacks) {
14
+
15
+ rtcp.call_server_method(
16
+ component.controller_name,
17
+ method,
18
+ args,
19
+ request_method,
20
+ callbacks
21
+ )
22
+ }
23
+ return method_api
24
+ }, {})
25
+ }
26
+ return component_api
27
+ }, {})
28
+ }
@@ -0,0 +1,29 @@
1
+ import {forEach} from 'lodash'
2
+
3
+ const STRING = '[object String]'
4
+ const NUMBER = '[object Number]'
5
+ const OBJECT = '[object Object]'
6
+
7
+ function get_type(arg) {
8
+ const type = Object.prototype.toString.call(arg)
9
+ return {
10
+ is_string: type === STRING,
11
+ is_number: type === NUMBER,
12
+ is_object: type === OBJECT,
13
+ }
14
+ }
15
+
16
+ export default function(args) {
17
+ forEach(args, function(arg,i) {
18
+
19
+ const {is_string, is_number, is_object} = get_type(arg)
20
+
21
+ if (!is_string && !is_number && !is_object) {
22
+ throw `Api methods accepts only Strings, Numbers and Objects as arguments. Argument #${i} is a ${type} instead.`
23
+ }
24
+
25
+ if (is_object && i + 1 !== args.length) {
26
+ throw `Only last argument can be a Object`
27
+ }
28
+ })
29
+ }
@@ -0,0 +1,88 @@
1
+ import {reduce, isObject, isArray, isFunction, last} from 'lodash'
2
+ import {url_builder} from 'appril-utils'
3
+ import validate_arguments from './validate-arguments'
4
+ import REQUEST_METHODS from './request-methods'
5
+
6
+ export default function(component, {on_request, on_response, on_error} = {}) {
7
+
8
+ return reduce(component.api || [], function(component_api, method) {
9
+
10
+ component_api[method] = function(...args) {
11
+
12
+ validate_arguments(args)
13
+
14
+ return reduce(REQUEST_METHODS, function(method_api, request_method) {
15
+
16
+ const is_post = request_method === 'POST'
17
+
18
+ method_api[request_method.toLowerCase()] = function(callbacks = {}) {
19
+
20
+ const error_reporter = function(error_message) {
21
+ if (callbacks.error)
22
+ return callbacks.error(error_message)
23
+ if (on_error)
24
+ return on_error(error_message)
25
+ throw error_message
26
+ }
27
+
28
+ const xhr = new XMLHttpRequest()
29
+
30
+ let params = last(args)
31
+
32
+ if (isObject(params)) {
33
+ if (is_post) {
34
+ args.pop()
35
+ }
36
+ } else {
37
+ params = {}
38
+ }
39
+
40
+ on_request && on_request(params)
41
+
42
+ xhr.onreadystatechange = function() {
43
+ if (xhr.readyState !== XMLHttpRequest.DONE)
44
+ return
45
+
46
+ callbacks.done && callbacks.done()
47
+
48
+ if (parseInt(xhr.status / 100) !== 2)
49
+ return error_reporter(xhr.responseText)
50
+
51
+ if (!callbacks.success)
52
+ return
53
+
54
+ let response = JSON.parse(xhr.responseText)
55
+
56
+ on_response && on_response(response)
57
+
58
+ callbacks.success(response)
59
+ }
60
+
61
+ xhr.onerror = function(error_message = 'Network error occurred') {
62
+ callbacks.done && callbacks.done()
63
+ error_reporter(error_message)
64
+ }
65
+
66
+ xhr.open(request_method, url_builder(component.url, method, ...args))
67
+
68
+ xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
69
+ xhr.setRequestHeader('Accept', 'application/json')
70
+
71
+ if (is_post) {
72
+ xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8')
73
+ xhr.send(JSON.stringify(params))
74
+ } else {
75
+ xhr.send()
76
+ }
77
+ }
78
+
79
+ return method_api
80
+ }, {})
81
+
82
+ }
83
+
84
+ return component_api
85
+
86
+ }, {})
87
+
88
+ }
@@ -1,14 +1,15 @@
1
1
  import {reduce} from 'lodash'
2
2
  import {urlify} from 'appril-utils'
3
- import api_builder from 'appril/api'
4
- import * as callbacks from './api_callbacks'
3
+ import xhr_api_builder from './api/xhr'
4
+ import rtcp_api_builder from './api/rtcp'
5
+ import * as callbacks from './api/callbacks'
5
6
  import rtcp from './rtcp'
6
7
  import {components, default_api} from 'app/appril.json'
7
8
 
8
9
  export default reduce(components, function(map,component) {
9
10
  component.url = urlify(component.url)
10
- component.xhr = api_builder.xhr(component, callbacks)
11
- component.rtcp = api_builder.rtcp(component, rtcp)
11
+ component.xhr = xhr_api_builder(component, callbacks)
12
+ component.rtcp = rtcp_api_builder(component, rtcp)
12
13
  Object.defineProperty(component, 'api', {get() {return component[default_api]}})
13
14
  map[component.name] = component
14
15
  return map
@@ -5,6 +5,7 @@ import VueRouter from 'vue-router'
5
5
  import components from './components'
6
6
  import store from './store'
7
7
  import componentify from './component'
8
+ import {client_url} from 'app/appril.json'
8
9
 
9
10
  Vue.use(VueRouter)
10
11
 
@@ -15,18 +16,47 @@ export default new VueRouter({
15
16
  return {
16
17
  name: component.name,
17
18
  path: component.url_pattern,
18
- component: (resolve) => System.import(`components/${component.entry_path}/index.js`).then(function(constructor) {
19
- if (component.api._env) {
20
- component.api._env().get({
21
- success(env) {
22
- store.commit('__SET_ENV__', {component: component.name, env})
23
- resolve(componentify(components, component, constructor.default))
24
- }
25
- })
26
- } else {
27
- resolve(componentify(components, component, constructor.default))
28
- }
29
- })
19
+ component: (resolve, reject) => load_component(component, resolve, reject)
30
20
  }
31
21
  })
32
22
  })
23
+
24
+ function resolve_component(component, constructor, resolve) {
25
+ if (component.api._env) {
26
+ component.api._env().get({
27
+ success(env) {
28
+ store.commit('__SET_ENV__', {component: component.name, env})
29
+ resolve(componentify(components, component, constructor))
30
+ }
31
+ })
32
+ } else {
33
+ resolve(componentify(components, component, constructor))
34
+ }
35
+ }
36
+
37
+ function load_component(component, resolve, reject) {
38
+ const xhr = new XMLHttpRequest()
39
+
40
+ xhr.onreadystatechange = function() {
41
+ if (xhr.readyState !== XMLHttpRequest.DONE)
42
+ return
43
+
44
+ if (parseInt(xhr.status / 100) !== 2)
45
+ return reject(xhr.responseText)
46
+
47
+ resolve_component(component, _eval(xhr.responseText), resolve)
48
+ }
49
+
50
+ xhr.onerror = function() {
51
+ reject('Network error occurred')
52
+ }
53
+
54
+ xhr.open('GET', `${client_url}/${APP_ENV}/${component.entry_path}.js`)
55
+ xhr.send()
56
+ }
57
+
58
+ function _eval(text) {
59
+ window.module = {exports: null}
60
+ eval.call(window, text)
61
+ return window.module.exports.default
62
+ }
@@ -1,5 +1,5 @@
1
- import RTCP from 'appril/rtcp'
2
- import * as callbacks from './api_callbacks'
1
+ import RTCP from 'appril-rtcp'
2
+ import * as callbacks from './api/callbacks'
3
3
  import {server_url} from 'app/appril.json'
4
4
 
5
5
  const rtcp = new RTCP(callbacks)
data/app/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "version": "0.0.0",
4
4
  "description": "...",
5
5
  "devDependencies": {
6
- "appril": ">= 0.5.6",
6
+ "appril-rtcp": "0",
7
7
  "appril-alert": ">= 0.0.5",
8
8
  "appril-polyfills": ">= 0.0.2",
9
9
  "appril-url": ">= 0.0.5",
@@ -23,7 +23,8 @@
23
23
  "optimize-css-assets-webpack-plugin": "1",
24
24
  "style-loader": "*",
25
25
  "url-loader": "*",
26
- "vue": "^2.0.0-beta.5",
26
+ "vue": "^2.0.0-rc.2",
27
+ "vue-router": "^2.0.0-rc.3",
27
28
  "vue-html-loader": "1",
28
29
  "vuex": "^2.0.0-rc.3",
29
30
  "webpack": "^2.1.0-beta.18"
data/app/webpack/entry.js CHANGED
@@ -3,6 +3,6 @@ const filter = require('lodash/filter')
3
3
  const config = require('../appril.json')
4
4
 
5
5
  module.exports = reduce(filter(config.components, 'entry_path'), function(entries,component) {
6
- entries[component.name] = 'base/components/' + component.entry_path + '/index.js'
6
+ entries[component.entry_path] = 'components/' + component.entry_path + '/index.js'
7
7
  return entries
8
8
  }, {app: 'base/app.js'})
@@ -1,5 +1,5 @@
1
1
  module Appril
2
2
  class CLI
3
- VERSION = '0.2.8'.freeze
3
+ VERSION = '0.2.9'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appril-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Slee Woo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-16 00:00:00.000000000 Z
11
+ date: 2016-08-17 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Appril CLI
14
14
  email:
@@ -27,7 +27,11 @@ files:
27
27
  - app/base/app.js
28
28
  - app/base/assets/app.css
29
29
  - app/base/boot.rb
30
- - app/base/bootstrap/api_callbacks.js
30
+ - app/base/bootstrap/api/callbacks.js
31
+ - app/base/bootstrap/api/request-methods.js
32
+ - app/base/bootstrap/api/rtcp.js
33
+ - app/base/bootstrap/api/validate-arguments.js
34
+ - app/base/bootstrap/api/xhr.js
31
35
  - app/base/bootstrap/component.js
32
36
  - app/base/bootstrap/components.js
33
37
  - app/base/bootstrap/router.js
@@ -121,5 +125,5 @@ rubyforge_project:
121
125
  rubygems_version: 2.5.1
122
126
  signing_key:
123
127
  specification_version: 4
124
- summary: '["appril-cli-0.2.8", "Appril CLI"]'
128
+ summary: '["appril-cli-0.2.9", "Appril CLI"]'
125
129
  test_files: []