Commit 8e37d114 authored by Dorchies David's avatar Dorchies David
Browse files

Initial commit

parents
No related merge requests found
Showing with 262 additions and 0 deletions
+262 -0
^.*\.Rproj$
^\.Rproj\.user$
^LICENSE\.md$
.gitignore 0 → 100644
.Rproj.user
.Rhistory
.RData
.Ruserdata
DESCRIPTION 0 → 100644
Package: hatata
Type: Package
Title: Function for automatic entering in https://temps-activites.inra.fr/temps interfaces
Version: 0.0.0.9000
Authors@R: c(
person("David", "Dorchies", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-6595-7984"), email = "david.dorchies@inrae.fr")
)
Description: Le but du package R Hatata est de fournir les outils permettant de saisir automatiquement des temps dans
l'outil https://temps-activites.inra.fr/temps utilisé à INRAE pour enregistrer le temps de travail des agents.
License: AGPL (>= 3)
Encoding: UTF-8
LazyData: true
Imports:
httr,
stringr
RoxygenNote: 7.1.1
Roxygen: list(markdown = TRUE)
LICENSE.md 0 → 100644
This diff is collapsed.
NAMESPACE 0 → 100644
# Generated by roxygen2: do not edit by hand
export(add_temps)
export(set_cookie)
importFrom(httr,POST)
importFrom(httr,set_cookies)
importFrom(httr,user_agent)
R/add_temps.R 0 → 100644
#' Title
#'
#' @param cookies Connection cookies in string format or key/value vector
#' (See [set_cookie])
#' @param user_id ID of the user
#' @param date Date to fill
#' @param duree Duration of the working day
#' @param type_regulation Regularisation type (default 22 for "Heures normales")
#' @param commentaire [character] Comment for the regularisation
#' @param cfg network configuration
#'
#' @details
#' If `cookies` is provided in a single [character] format, [set_cookie] is automatically called.
#'
#' @return the return of the [httr::POST] function
#' @importFrom httr POST set_cookies user_agent
#' @export
#'
#' @examples
#' \dontrun{
#' library(hatata)
#' add_temps(
#' cookies = "Cookie: SERVERID83378=6df7a8ae|YJJSU|YJJNe; PHPSESSID=nvda6b0h1; OSCONTROL=u3bmeg9",
#' user_id = "4242",
#' date = "15/04/2021"
#' )
#' }
add_temps <- function(
cookies,
user_id,
date,
duree = "+07h44",
type_regulation = "22",
commentaire = "",
cfg = config::get(file = system.file("config.yml", package = "hatata"))
) {
url_add <- paste(cfg$url, cfg$param_ass, sep = "?")
if(!inherits(cookies, "HatataCookie")) {
cookies <- set_cookie(cookies)
}
POST(
url_add,
user_agent(cfg$user_agent),
set_cookies(.cookies = cookies),
body = list(
date = date,
type_regulation = type_regulation,
commentaire = commentaire,
user_id = user_id,
id_form = cfg$form_add,
duree = duree
)
)
}
#' Convert Cookie string into a key value [character] [vector]
#'
#' @param cookies [character] in format "Cookie: key1=value1; key2=value2..."
#'
#' @return Named [character] [vector] with cookies
#' @export
#'
#' @examples
#' set_cookie("Cookie: SERVERID=6df7a8ae; PHPSESSID=nvda6b0h1; OSCONTROL=u3bmeg9hjfvr5")
set_cookie <- function(cookies) {
if(substr(cookies, 1, 8) != "Cookie: ") {
stop("`cookies` should be a string beginning by \"Cookie: \"")
}
lCookies <- strsplit(strsplit(substring(cookies, 9), "; ")[[1]], "=")
vCookies <- sapply(lCookies, function(x) x[2])
names(vCookies) <- sapply(lCookies, function(x) x[1])
class(vCookies) <- c("HatataCookie", class(vCookies))
return(vCookies)
}
README.md 0 → 100644
# Hatata: HAsh TAg Temps Automatique
<!-- badges: start -->
<!-- badges: end -->
Le but du package R Hatata est de fournir les outils permettant de saisir automatiquement des temps dans [l'outil #temps](https://temps-activites.inra.fr/temps) utilisé à INRAE pour enregistrer le temps de travail des agents.
## Installation
Le package s'installe à partir des sources présentes sur le Gitlab Irstea&nbsp;:
``` r
install.packages("remotes")
remotes::install_gitlab("david.dorchies/hatata", host = "gitlab.irstea.fr")
```
## Exemple d'utilisation
Chargement de la librarie&nbsp;:
``` r
library(hatata)
```
Se rendre sur https://temps-activites.inra.fr/fr/ et cliquer sur l'onglet : "Mes temps".
Cliquer ensuite sur "Mon calendrier". Dans la barre d'adresse, vous verrez une adresse finissant par "user_id=xxxx". Enregistrez ce numéro.
``` r
user_id <- 4242
```
Pour pouvoir interagir avec la session ouverte dans votre navigateur, nous avons besoin de récupérer le cookie de session. Dans le navigateur, appuyez sur la touche [F12], allez dans l'onglet "Réseau", sélectionnez un fichier quelconque, aller dans l'onglet "En-têtes" et copier le texte surligné en bleu (clic-droit "Copier").
![](man/fig/screenshot_cookie.png)
``` r
cookies <- "Cookie: SERVERID83378=6df7a8ae|YJJSU|YJJNe; PHPSESSID=nvda6b0h1cfp23ono6134qj6gk; OSCONTROL=u3bmeg9hjfvr5bnjhluk1igf4v"
```
Choisissez ensuite des dates sur lesquelles vous avez des régularisations à faire, exemple pour le 15 avril 2021 avec une journée de 7h44 en "heures normales"&nbsp;:
``` r
add_temps(cookies, user_id, date = "15/04/2021")
```
# Roadmap
Pour rendre cette application plus fonctionnelle, il manque les fonctionnalités suivante:
- Récupération automatique des cookies de session à partir de l'authentification SSO ([#1](https://gitlab.irstea.fr/david.dorchies/hatata/-/issues/1))
- Détection automatique des jours en défaut avant la date courante pour une présélection de dates à remplir automatiquement ([#2](https://gitlab.irstea.fr/david.dorchies/hatata/-/issues/2))
- Développement d'une interface Shiny pour les utilisateurs Lambda (Fonctionnalités à définir)
# Contribution
Toutes les contributions sont les bienvenues pour aboutir à un outil fonctionnel pour le plus grand nombre :)
hatata.Rproj 0 → 100644
Version: 1.0
RestoreWorkspace: Default
SaveWorkspace: Default
AlwaysSaveHistory: Default
EnableCodeIndexing: Yes
UseSpacesForTab: Yes
NumSpacesForTab: 2
Encoding: UTF-8
RnwWeave: Sweave
LaTeX: pdfLaTeX
AutoAppendNewline: Yes
StripTrailingWhitespace: Yes
BuildType: Package
PackageUseDevtools: Yes
PackageInstallArgs: --no-multiarch --with-keep.source
PackageRoxygenize: rd,collate,namespace
default:
form_add: form_add_regul
url: https://temps-activites.inra.fr/temps/index.php
url_param_add: controller=Regulation&action=add
user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/add_temps.R
\name{add_temps}
\alias{add_temps}
\title{Title}
\usage{
add_temps(
cookies,
user_id,
date,
duree = "+07h44",
type_regulation = "22",
commentaire = "",
cfg = config::get(file = system.file("config.yml", package = "hatata"))
)
}
\arguments{
\item{cookies}{Connection cookies in string format or key/value vector
(See \link{set_cookie})}
\item{user_id}{ID of the user}
\item{date}{Date to fill}
\item{duree}{Duration of the working day}
\item{type_regulation}{Regularisation type (default 22 for "Heures normales")}
\item{commentaire}{\link{character} Comment for the regularisation}
\item{cfg}{network configuration}
}
\value{
the return of the \link[httr:POST]{httr::POST} function
}
\description{
Title
}
\details{
If \code{cookies} is provided in a single \link{character} format, \link{set_cookie} is automatically called.
}
\examples{
\dontrun{
library(hatata)
add_temps(
cookies = "Cookie: SERVERID83378=6df7a8ae|YJJSU|YJJNe; PHPSESSID=nvda6b0h1; OSCONTROL=u3bmeg9",
user_id = "4242",
date = "15/04/2021"
)
}
}
man/fig/screenshot_cookie.png

58 KB

% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/set_cookie.R
\name{set_cookie}
\alias{set_cookie}
\title{Convert Cookie string into a key value \link{character} \link{vector}}
\usage{
set_cookie(cookies)
}
\arguments{
\item{cookies}{\link{character} in format "Cookie: key1=value1; key2=value2..."}
}
\value{
Named \link{character} \link{vector} with cookies
}
\description{
Convert Cookie string into a key value \link{character} \link{vector}
}
\examples{
set_cookie("Cookie: SERVERID=6df7a8ae; PHPSESSID=nvda6b0h1; OSCONTROL=u3bmeg9hjfvr5")
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment