newhapppen-lib v0.2.6
#NewHappen-lib Biblioteca para interação com a API da NewHappen.
Instalação
Usando npm:
$ npm install newhappen-libUsando Yarn
$ Em breveURL p/ acesso direto ao backend:
$ https://api-newhappen.herokuapp.comMétodos auxiliares
Login
    import api from "newhapppen-lib";
    var login = "";//Login pode ser tanto o e-mail quanto o username 
    var password = "";
    
    api.login(login, password).then((user) => {
        /* Você pode verificar ou não se user == null, mas não é recomendado, visto que a lib já dispara uma exceção caso isso ocorra e retorna as mensagens responsáveis pelo erro */
        console.log(JSON.stringify(user))
        console.log("Logado com sucesso!")
    }).catch((errors) => {
        /* Em todas as chamadas, o Catch sempre retornará um Array onde cada elemento é uma string referente a um motivo do erro ter acontecido; 
        Ex: ["Usuario inexistente", 
        "Usuário com caracteres inválidos"]
        */
        console.log(errors);
    })Cadastrar usuário
var user = {name: "Nome Qualquer Completo",
            username: "username_qualquer",
            password: "senhaqualquer",
            email: "email@qualquer.com"}
api.createUser(user).then( (user) => {
    console.log(JSON.stringify(user))
    console.log("Cadastrado com sucesso")
}).catch((errors) => {
    console.log(errors)
})- api.getUser ( id ): Pesquisa por um Usuário com determinado ID
- api.getUsers (filters): Pesquisa usuários que casem com os filtros estabelecidos. Ex:- api.getUsers({by_type: "Professional"})
- api.updateUser ( id, user ): Atualiza os dados de determinado usuário
- api.getPost ( id ): Pesquisa por um Post com determinado ID
- api.getPosts (filters): Pesquisa posts que casem com os filtros estabelecidos. Ex:- api.getPosts({by_title: "Titulo"})
- api.createPost (post): Cadastra uma nova postagem.
- api.updatePost (id, post): Edita uma postagem.
- api.deletePost (id): Deleta determinada postagem
Métodos referente à entidade Address:
capi.getAddress(id)` Recupera os dados de um endereço com determinado ID
- api.updateAddress(id, address)Atualizado um determinado endereço
- api.deleteAddress(id)Deleta o endereço com determinado ID
- api.createAddress(address)Cria um novo endereço pro atual usuário logado
- api.getUserAddresses(user_id)Recupera todos os endereços de um determinado usuário
Atributos atuais de Address:
:zipcode, :street, :district, :city, :state, :country, :reference
Métodos referente à entidade CurriculumItem:
- api.getCurriculumItem(id)Retorna um determinado item de curriculum daquele ID específico
- api.updateCurriculumItem(id, curriculum_item)Atualiza os dados de um determinado item de curriculum. curriculum_item deve ser um objeto JSON.
- api.deleteCurriculumItem(id)Deleta um determinado item de curriculum daquele ID específico
- api.createProfessionalCurriculumItem(user_id, curriculum_item)Cria um determinado CurriculumItem para o Profissional de ID informado
- api.getProfessionalCurriculumItems(user_id)Retorna todos os items de curriculum de um determinado profissional.
user_id tem que ser um ID referente à um usuário com type Professional
Métodos referente à entidade ScheduleItem:
- api.getScheduleItem(id)Retorna um determinado item de Schedule daquele ID específico
- api.updateScheduleItem(id, schedule_item)Atualiza os dados de um determinado item de schedule. schedule_item deve ser um objeto JSON.
- api.deleteScheduleItem(id)Deleta um determinado item de schedule daquele ID específico
- api.createProfessionalScheduleItem(user_id, schedule_item)Cria um determinado ScheduleItem para o Profissional de ID informado
- api.getProfessionalScheduleItem(user_id)Retorna todos os items de curriculum de um determinado profissional.
Métodos referente à entidade Appointment(Consulta):
- api.getAppointment(id)Retorna um determinado item de Consulta daquele ID específico
- api.updateAppointment(id, appointment)Atualiza os dados de um determinado item de Consulta. appointment deve ser um objeto JSON.
- api.deleteAppointment(id)Deleta uma consulta
- api.createUserYspecialAppointment(user_yspecial_id, appointment)Cria uma consulta para um UserYspecial
- api.getUserYspecialAppointments(user_id)Retorna todas as consultas para um UserYspecial
- api.getProfessionalAppointments(professional_id)Retorna todas as consultas de um determinado profissional
Atributos de Appointment
:professional_id, // ID
:professional_type, // Classe (Provavelmente "Professional")
:schedule_item_id, // ID da ScheduleItem no qual a consulta será marcada 
:value // Valor, em float  {
        "id": 8,
        "created_at": "2020-04-28T04:59:09.557-03:00",
        "blocked": false,
        "followable": {
            "id": 6,
            "username": "username3",
            "name": "Nome 3",
            "type": null
        },
        "follower": {
            "id": 7,
            "username": "jonas",
            "name": "jonas",
            "type": null
        }
    }Retornar informações de um usuário (requer login)
var user_criteria = {id: 1}
api.getUser(user_criteria).then( (users) => {
    console.log(JSON.stringify(users))
    console.log("Lista de usuários com os critérios informados")
}).catch((errors) => {
    console.log(errors)
})Cadastrar post (requer login)
  var post =     {title: "Titulo ",
                  content: "Conteúdo",
                  feed: "yspecial" || "general"}
    api.createPost(post).then((post)=>{
        console.log(JSON.striginfy(post))
        console.log("Post criado com sucesso")
    }).catch(errors =>{
        console.log(errors)
    })Editar post (requer login)
  var post = {  id: "1"
                title: "Titulo alterado",
                  content: "Conteúdo alterado",
                  feed: "yspecial"}
    api.editPost(post).then((post)=>{
        console.log(JSON.striginfy(post))
        console.log("Post editado com sucesso")
    }).catch(errors =>{
        console.log(errors)
    })Deletar post (requer login)
  var post = {  id: "1" }
    api.deletePost(post).then((post)=>{
        console.log(JSON.striginfy(post))
        console.log("Post deletado com sucesso")
    }).catch(errors =>{
        console.log(errors)
    })Seguir usuário (requer login)
  var user_id = 1
    api.followUser(user_id).then((follow)=>{
        console.log(JSON.striginfy(follow))
        console.log("Agora você está seguindo este usuário")
    }).catch(errors =>{
        console.log(errors)
    })Deixar de seguir usuário (requer login)
  var follow_id = 90
    api.dismissFollow(follow_id).then((follow)=>{
        console.log(JSON.striginfy(follow))
        console.log("Agora você não está seguindo este usuário")
    }).catch(errors =>{
        console.log(errors)
    })Lista de Followers de um determinado Usuário (requer login)
  var user_id = 1
    api.getFollowers(user_id).then((follows)=>{
        console.log(JSON.striginfy(follows))
    }).catch(errors =>{
        console.log(errors)
    })Lista de Follows de um determinado Usuário
  var user_id = 1
    api.getFollows(user_id).then((follows)=>{
        console.log(JSON.striginfy(follows))
    }).catch(errors =>{
        console.log(errors)
    })Follows = Pessoas que ele segue Followers = Seguidores que o usuário possui
Um objeto follow possui o seguinte formato:
var follow =     {
        "id": 8,
        "created_at": "2020-04-28T04:59:09.557-03:00",
        "blocked": false,
        "followable": {
            "id": X,
            "username": "XXXXXXXXXXXXX",
            "name": "XXXXXXXXXXX",
            "type": XXXX
        },
        "follower": {
            "id": X,
            "username": "jonXXXXXXXXXas",
            "name": "XXXXXXXXX",
            "type": XXXX
        }
    }Executar sua própria query (requer login)
api.graph.query(`query($id: ID!){
                users(id: $id) {
                    id
                    username
                    email
                    type
                    ... on UserYspecial{
                        username
                        id
                        email
                        }
                    ... on Professional  {
                        cpf
                        professionalId
                        profession
                        }
                    ... on Company  {
                        fancyName
                        cnpj
                        }
                }
            }`).then(users => console.log(users))
            .catch(errors => console.log(errors))Executar sua própria mutation (requer login)
api.graph.mutate(`(@autodeclare) {
        createPost(input: {title: $title 
                           content: $content
                           feed: $feed}){    
            post{
                id
                content
                title
                feed
                author{
                    name
                    id
                }
            }
        }
    }`).then(users => console.log(users))
            .catch(errors => console.log(errors))Rodando testes
$ yarn test5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago