Coder Social home page Coder Social logo

doubleleft / hook Goto Github PK

View Code? Open in Web Editor NEW
768.0 768.0 84.0 3.42 MB

A RESTful and extendable Backend as a Service that provides instant backend to develop sites and apps faster, with dead-simple integration for JavaScript, iOS, Android and more.

Home Page: http://hook-platform.org/

License: MIT License

Shell 0.62% Nginx 0.19% Makefile 0.61% PHP 94.62% ApacheConf 0.05% HTML 0.08% Perl 0.77% SaltStack 3.06%
baas backend-as-a-service php

hook's People

Contributors

alinefr avatar endel avatar gabriel-laet avatar gilnak avatar matheusrrocha avatar vicalejuri avatar wagnermoschini avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hook's Issues

Problema ao gerar rotas

Gerei uma rota através do comando

dl-api generate:route populate_cinema_cards /populate_cinema_cards

E por seguinte fiz o upload

dl-api module:upload

Porém, o seguinte problema ocorre.

image

Fiz algo errado ?

.dl-config
{"name":"clubsocial-possibilidades","app_id":"5","key":"V23drdEh1Odwn95/S0LDi2bSPmtLSGWh/xBlDyfDV6E=","endpoint":"http:\/\/dl-api.ddll.co\/"}

Friendly error messages

Melhorar as respostas de erro. Por exemplo:

  • Se forneço um key inválido, a mensagem de erro é:
{
    "error": "Trying to get property of non-object"
}

Default database engine

Com certeza MySQL não é a opção ideal de database para muitos inserts e etc. Mas vamos usá-lo bastante, principalmente nas versões que instalamos em servidores dos clientes.

A melhor opção talvez seja MongoDB. Mas também podemos usar PostgreSQL. @endel, o Illuminate suporta os dois, né? Teria algo que poderia ter impacto aqui?

Valeu

Console interativo (experimental)

Agora na commandline existe um comando chamado console, para simular o console do navegador, e fazer consultas e testes rapidos à partir da linha de comando.

Bugs / Melhorias

  • Ao utilizar o método collection('name').then() o output não é atualizado automaticamente. Precisa apertar ENTER algumas vezes para atualizar.
  • Feedback de todas as operações (create / update / etc)

Exemplo de utilização:

[20:33:12] endel:~/Projects/clan-platform [master] 
$ dl-api console 
...
     _ _                   _                             _       
  __| | |       __ _ _ __ (_)   ___ ___  _ __  ___  ___ | | ___  
 / _` | |_____ / _` | '_ \| |  / __/ _ \| '_ \/ __|/ _ \| |/ _ \ 
| (_| | |_____| (_| | |_) | | | (_| (_) | | | \__ \ (_) | |  __/ 
 \__,_|_|      \__,_| .__/|_|  \___\___/|_| |_|___/\___/|_|\___| 
                    |_|                                          

API Documentation: http://doubleleft.github.io/dl-api-javascript

Available variables to hack on:
    - dl - DL.Client
    - config - .dl-config
    - $ - jQuery 2.1.0
    - window
dl-api> dl
{ url: 'http://dl-api.ddll.co/',
  appId: '6',
  key: 'b943f511742a326de59607436276e433',
  keys: { client: [Circular] },
  auth: { client: [Circular], currentUser: null },
  system: { client: [Circular] } }
dl-api> dl.collection('test').create({name: "Something!"})
[object Object]
dl-api> dl.collection('test').then()
[ Querying result... ]
dl-api> 
┌─────┬──────────────┬──────────────┬──────────────┐
│ _id │ name         │ created_at   │ updated_at   │
├─────┼──────────────┼──────────────┼──────────────┤
│ '1' │ 'Something!' │ '1394321770' │ '1394321770' │
└─────┴──────────────┴──────────────┴──────────────┘
dl-api> 

Update - Em caso de erro no server, reportar 500 não 200

Endel, ao dar erro no update, a resposta vem como 200 - OK, imagino que seria melhor um 500 Server Error.

requisição:
client.collection('auth').update(32, { 'foo': 0});

resposta:
200 OK {"error":"SQLSTATE[42S22]: Column not found: Unknown column 'foo' in 'field list' (SQL: update auth set foo = 0, updated_at = 2014-02-11 15:06:47 where _id = 32)"}

Permitir definição do schema à partir da commandline

Hoje não é possível forçar um data-type, ou definir índices no banco de dados.
Seria bacana ter uma interface no CLI para resolver isso, por exemplo:

dl-api schema:download --app meu-projeto
dl-api schema:upload --app meu-projeto

O formato do arquivo de schema poderia ser um .YAML, .PHP, ou .INI, tipo:

# locations.php
$table->integer('hash')->unique();
$table->geo('location');
$table->custom_cep('cep', '');

O Eloquent assume que todos os campos são not null, por default. No nosso caso seria o contrário, se definiria quando eles são obrigatórios.

setRequestHeader not supported - ie9 e ie10

Estou recebendo esse erro logo que instancio a lib.

linha 1038:
req.setRequestHeader(header, headers[header])

Objeto não oferece suporte à propriedade ou método 'setRequestHeader'.

Backups

Rotina de backup para cada key, para salvar os dados de collections diariamente (ou configurável: por hora, etc).

Erro ao tentar criar collections

@endel estou recebendo o seguinte erro:
{"error":"argument 1 passed to illuminate\database\grammar::columnize() must be an instance of array, string given"}

Acontece quando tento criar um jogo novo, e também quando tento criar um registro numa collection que tentei criar chamada "votes".

Mudou alguma coisa? Estou fazendo a chamada dessa maneira:

client.collection("votes").create({match:ID_MATCH, user:ID_USER, flavor:FLAVOR_ID, round:ROUND_ID, hash:hash});

Mailing module

Serviço para um post de contato, e também um email de confirmação.

Erro de sintaxe no IE (JSON.parse, dl.js linha 8015)

É o mesmo erro que ocorre vez ou outra no JSON.parse(); porém nos IEs está acontecendo ao tentar logar ou cadastrar. Mesmo ie 11.

SCRIPT1002: Erro de sintaxe
dl.js linha: 8015
var data = JSON.parse(response);

Erro ao gerar nova "key"

@endel, tá rolando um erro ao criar uma nova key no recém instalado server de cheetos-kungfu:

deploy@api-cheetoskungfu:~$ dl-api app:new cheetoskungfu ... PHP Notice: Trying to get property of non-object in /var/www/api-cheetoskungfu.2l.cx/commandline/src/commands/app_new.php on line 18 App: Access tokens: { PHP Notice: Trying to get property of non-object in /var/www/api-cheetoskungfu.2l.cx/commandline/src/commands/app_new.php on line 21 appId: PHP Notice: Trying to get property of non-object in /var/www/api-cheetoskungfu.2l.cx/commandline/src/commands/app_new.php on line 22 PHP Warning: Invalid argument supplied for foreach() in /var/www/api-cheetoskungfu.2l.cx/commandline/src/commands/app_new.php on line 22 }

No src/Client/Client.php:
public static $endpoint = 'http://api-cheetoskungfu.2l.cx/api/';

[]' s

Phalanger support

Testar/compilar e ver limitações de rodar o dl-api em uma arquitetura .NET através do Phalanger (http://phalanger.codeplex.com/). O ideal é funcionar com o compilador, já que instalar o interpreter é muito mais burocrático.

Collection: observers PUT & Auth

Observers em PUT e Auth não são disparados. O problema é simples de resolver, mas precisamos pensar em um jeito de deixar mais elegante, talvez dentro da própria classe de Collection.

@doubleleft/managers
Isso afeta:

  • Disparo de e-mail de cadastro em Plugados
  • Disparo de e-mail de cadastro em Cheetos
  • Contagem de partidas diárias em Cheetos

Unit Tests

Criar unit tests para operações básicas do API e command-line

Unexpected Error when trying to make a conditional on DL-API Console

Runs :

dl.collection('cards').where('_id',354).then()

Gets :

Error: Arrays are not supported. at FormData.append (/Applications/MAMP/htdocs/dl-api/commandline/console/node_modules/form-data/lib/form_data.js:35:17) at DL.Client.getPayload (https://dl-api.ddll.co/dist/dl.js:8558:18) at DL.Client.request (https://dl-api.ddll.co/dist/dl.js:8460:18) at window.DL.Client.request (/Applications/MAMP/htdocs/dl-api/commandline/console/bootstrap.js:118:23) at DL.Client.get (https://dl-api.ddll.co/dist/dl.js:8423:15) at DL.Collection.get (https://dl-api.ddll.co/dist/dl.js:9123:22) at DL.Collection.then (https://dl-api.ddll.co/dist/dl.js:9384:22) at repl:1:42 at REPLServer.self.eval (repl.js:112:21) at Interface.<anonymous> (repl.js:239:12)

.dl-config

{"name":"clubsocial-possibilidades","app_id":"5","key":"V23drdEh1Odwn95/S0LDi2bSPmtLSGWh/xBlDyfDV6E=","endpoint":"http:\/\/dl-api.ddll.co\/"}

dl-api --version

dl-api: v1.0.0rc1

--with-openssl

Não consigo instalar.

Quando rodo o comando "curl -sS http://getcomposer.org/installer | php -d detect_unicode=Off" Tenho o seguinte erro:

jonasmello:bin jonasmello$ curl -sS http://getcomposer.org/installer | php -d detect_unicode=Off

!/usr/bin/env php

Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:

The openssl extension is missing, which means that secure HTTPS transfers are impossible.
If possible you should enable it or recompile php with --with-openssl

Alguém sabe como resolvo isso?

Separar client em um repositorio proprio

client/ eh a API Javascript, e que portanto, poderia estar em um repositorio separado.

Quem necessita integrar dl-api com seu projeto web frontend, apenas utiliza essa library, dl-api-jsou outro nome similar.

Fields de collections vs App keys

Precisamos pensar na melhor maneira de tratar collections com o mesmo nome, em aplicações diferentes. Hoje os campos adicionados no app X (em Auth, por exemplo), aparecem no app Y.

Não é um problema e nem um bug, apenas uma melhoria para ter os dados mais limpos. Eventualmente isso pode ajudar também a reforçar types nos campos e etc.

Hoje um workaround, caso queira remover campos desnecessários, é criar um observer para Auth e fazer override do método toArray: https://github.com/doubleleft/dl-api/blob/master/commandline/src/templates/observer.php#L9-L12

Update - não é possível criar um campo ainda inexistente

Endel, não consegui criar um campo novo via update. Primeiro tive que criar via authenticate para depois funcionar o update em cima desse campo.

requisição:
client.collection('auth').update(32, { 'foo': 0});

resposta:
200 OK {"error":"SQLSTATE[42S22]: Column not found: Unknown column 'foo' in 'field list' (SQL: update auth set foo = 0, updated_at = 2014-02-11 15:06:47 where _id = 32)"}

Recuperar senha

Fluxo de recuperação de senha (segue meu caso, imagino que a maioria vai por aí):

  • post com email a ser alterado
  • envio de email pra conta indicada
  • link pra página de input de nova senha com algum token para validação (no meu caso vou precisar ter os dados do usuário, pois exibo nome e email, então preciso saber isso de alguma maneira)
  • post da nova senha

Autenticação através do client via commandline

Queria discutir com vocês sobre a restrição dos requests feitos através da nossa commandline.

Tudo indica que teremos dois níveis de autenticação:

  1. Usuário: id_rsa.pub da máquina
  2. Aplicação: id/key de admin para o app

Existe uma maneira de fazer o download das chaves públicas do key-manager?

Estou pensando em enviar o id_rsa.pub do usuário que estiver utilizando a commandline, e checar com uma lista de usuários autorizados, que ficaria em um diretório da dl-api no servidor. (ex: dl-api/authorized_keys)

É viavel isso? Por exemplo, no nosso setup atual, todos os servidores com dl-api deveriam ter esse authorized_keys sincronizado. O ideal seria que essa autenticação seja auto-suficiente - não depender de um serviço externo como o endereço http://key-manager.dlapp.co/. Logo, essa sincronia dependeria de alguma automação de deploy.

Idéias? O que acham? @aline-doubleleft @gilnak @barrabinfc @gabriel-laet

Infra: HHVM

Abrindo esse ticket para discussão:

Notei que não estava conseguindo pegar o payload do request quando o HHVM estava habilitado em ddll.co (fastcgi_pass 127.0.0.1:9000).

Após voltar para php-fpm (fastcgi_pass unix:/var/run/php5-fpm.sock) funcionou normal.

Código PHP:

var_dump(file_get_contents('php://input'));

Migration

Pensar em uma maneira de fazer migration de collections em ambientes diferentes.

Criar um esquema também para criar "initial-data" de aplicações. Tudo isso faz sentido estar do lado do server, em um arquivo declarativo.

Adicionar exemplos

Devemos adicionar exemplos.

  1. Exemplo que customiza o backend php e adiciona rotas/modulos
  2. Exemplo de como utilizar no frontend (client.js)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.